diff --git a/.gitignore b/.gitignore index e43b0f98..8370a5bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ .DS_Store +promos +Source +*.pdn +*.zip +python_output +*.py \ No newline at end of file diff --git a/Bunco.json b/Bunco.json index 255b23a2..4c4532d9 100644 --- a/Bunco.json +++ b/Bunco.json @@ -2,13 +2,17 @@ "id": "Bunco", "name": "Bunco", "display_name": "Bunco", - "author": ["Firch, RENREN, Peas, minichibis, J.D., Guwahavel, Ciirulean, ejwu"], + "author": ["Firch", "RENREN", "Peas", "minichibis", "J.D.", "Guwahavel", "Ciirulean", "ejwu"], "description": "A mod that aims to add more content in a way that'd seamlessly exist within the vanilla Balatro!", "prefix": "bunc", + "priority": -1, "main_file": "Bunco.lua", - "version": "5.1", + "version": "5.4.8b~JumboFork", + "dependencies": [ + "Steamodded (>=1.0.0~BETA-1501a)", + "Lovely (>=0.7.1)" + ], "conflicts": [ - "Lovely (<<0.7.1)", "Talisman (<=2.0.3)" ] } \ No newline at end of file diff --git a/Bunco.lua b/Bunco.lua index 3cae36ac..c7cd4eef 100644 --- a/Bunco.lua +++ b/Bunco.lua @@ -1,5 +1,5 @@ -BUNCOMOD = {vars = {}, funcs = {}, content = SMODS.current_mod} -local filesystem = NFS or love.filesystem +BUNCOMOD = {vars = {}, funcs = {bunc_alias_type = type}, content = SMODS.current_mod} +local filesystem = SMODS.NFS or NFS or love.filesystem local config = BUNCOMOD.content.config @@ -26,7 +26,7 @@ local function get_coordinates(position, width) return {x = (position) % width, y = math.floor((position) / width)} end -local function coordinate(position) +local function coordinate_from_atlas_index(position) return get_coordinates(position - 1) end @@ -74,17 +74,27 @@ end -- Exotic in_pool function BUNCOMOD.funcs.exotic_in_pool = function() - return G.GAME and G.GAME.Exotic + if G.GAME and G.GAME.Exotic then return true end + --In case a Spectrum somehow gets played without enabling exotics, check directly: + local spectrum_played = false + if G and G.GAME and G.GAME.hands then + for k, v in pairs(G.GAME.hands) do + if string.find(k, "Spectrum", nil, true) then + if G.GAME.hands[k].played > 0 then + spectrum_played = true + break + end + end + end + end + + return spectrum_played end -- Dictionary wrapper function BUNCOMOD.content.process_loc_text() G.P_CENTERS['bunc_exotic_cards'] = {key = 'bunc_exotic_cards', set = 'Other'} - G.P_CENTERS['bunc_consumable_edition_foil'] = {key = 'bunc_consumable_edition_foil', set = 'Other'} - G.P_CENTERS['bunc_consumable_edition_holo'] = {key = 'bunc_consumable_edition_holo', set = 'Other'} - G.P_CENTERS['bunc_consumable_edition_polychrome'] = {key = 'bunc_consumable_edition_polychrome', set = 'Other'} - G.P_CENTERS['bunc_consumable_edition_bunc_glitter'] = {key = 'bunc_consumable_edition_bunc_glitter', set = 'Other'} end -- Mod icon @@ -92,8 +102,8 @@ end SMODS.Atlas({ key = 'modicon', path = 'Icon/Icon.png', - px = 34, - py = 34 + px = 32, + py = 32 }) -- Config globals @@ -268,11 +278,32 @@ function BUNCOMOD.content.config_tab() }} end --- Credits tab +-- Audio + Credits tab +G.SETTINGS.SOUND.bunc_trigger_finger_volume = G.SETTINGS.SOUND.bunc_trigger_finger_volume or 100 +G.SETTINGS.SOUND.bunc_mousetrap_volume = G.SETTINGS.SOUND.bunc_mousetrap_volume or 100 +G.SETTINGS.SOUND.bunc_stylophone_volume = G.SETTINGS.SOUND.bunc_stylophone_volume or 100 SMODS.current_mod.extra_tabs = function() local text_scale = 0.6 return { + { + label = localize('b_set_audio'), + tab_definition_function = function() + return {n = G.UIT.ROOT, config = {r = 0.1, minw = 4, align = "tm", padding = 0.2, colour = G.C.BLACK}, nodes = { + {n=G.UIT.R, config={align = "cm", padding = 0.1, outline_colour = G.C.JOKER_GREY, r = 0.1, outline = 1}, nodes={ + {n=G.UIT.R, config={align = "tm", padding = 0}, nodes={ + create_slider({label = G.localization.descriptions.Joker.j_bunc_trigger_finger.name .. " (" .. G.localization.misc.dictionary.bunc_volume .. ")", w = 5, h = 0.4, ref_table = G.SETTINGS.SOUND, ref_value = 'bunc_trigger_finger_volume', min = 0, max = 100}), + }}, + {n=G.UIT.R, config={align = "tm", padding = 0}, nodes={ + create_slider({label = G.localization.descriptions.Joker.j_bunc_mousetrap.name .. " (" .. G.localization.misc.dictionary.bunc_volume .. ")", w = 5, h = 0.4, ref_table = G.SETTINGS.SOUND, ref_value = 'bunc_mousetrap_volume', min = 0, max = 100}), + }}, + {n=G.UIT.R, config={align = "tm", padding = 0}, nodes={ + create_slider({label = G.localization.descriptions.Joker.j_bunc_stylophone.name .. " (" .. G.localization.misc.dictionary.bunc_volume .. ")", w = 5, h = 0.4, ref_table = G.SETTINGS.SOUND, ref_value = 'bunc_stylophone_volume', min = 0, max = 100}), + }}, + }} + }} + end, + }, { label = G.localization.misc.dictionary.b_credits, tab_definition_function = function() @@ -351,15 +382,15 @@ SMODS.current_mod.extra_tabs = function() }}, {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ {n=G.UIT.T, config={text = 'Shinosan', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, - }} - }}, - {n=G.UIT.C, config={align = "tl", padding = 0.05, minw = 2.0}, nodes={ + }}, {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ {n=G.UIT.T, config={text = 'Mikadoe', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, }}, {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ {n=G.UIT.T, config={text = 'Lyman', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, }}, + }}, + {n=G.UIT.C, config={align = "tl", padding = 0.05, minw = 2.0}, nodes={ {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ {n=G.UIT.T, config={text = 'jostro', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, }}, @@ -419,6 +450,24 @@ SMODS.current_mod.extra_tabs = function() }}, {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ {n=G.UIT.T, config={text = 'VisJoker', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, + }}, + {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ + {n=G.UIT.T, config={text = 'LucasBondDavid', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, + }}, + {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ + {n=G.UIT.T, config={text = 'JayJayDee', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, + }}, + {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ + {n=G.UIT.T, config={text = 'Marffe', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, + }}, + {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ + {n=G.UIT.T, config={text = 'Mr. Clover', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, + }}, + {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ + {n=G.UIT.T, config={text = 'english5040', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, + }}, + {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ + {n=G.UIT.T, config={text = 'Cebee', scale = text_scale*0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true}}, }} }}, }}, @@ -431,7 +480,55 @@ end -- Shaders -SMODS.Shader({key = 'pinch', path = 'pinch.fs'}) +for index = 1, 5 do + SMODS.ScreenShader({ + key = 'pinch' .. index, + path = 'pinch.fs', + should_apply = function(self) + if BUNCOMOD.content.config.high_quality_shaders then + return G.FORCEFIELD_CARDS and #G.FORCEFIELD_CARDS > 0 + else + return false + end + end, + send_vars = function(self) + G.FORCEFIELD_CARDS = G.FORCEFIELD_CARDS or {} + + local card = G.FORCEFIELD_CARDS[index] + + if BUNCOMOD.content.config.high_quality_shaders + and card + and not card.removed + and card.states.visible + then + local w, h = love.graphics.getWidth(), love.graphics.getHeight() -- Get the size + + local card_position = { + (card.VT.x + (card.VT.w / 2) + G.ROOM.T.x) * G.TILESCALE * G.TILESIZE * G.CANV_SCALE, + (card.VT.y + (card.VT.h / 2) + G.ROOM.T.y + 0.1) * G.TILESCALE * G.TILESIZE * G.CANV_SCALE} + + local dissolve_mult = 1 - (card.dissolve or 0) + + return { + position = card_position, + screen_size = {w, h}, + radius = (card.config and card.config.forcefield and card.config.forcefield.radius or 160) * (1.2 + math.sin((index * 3.0) + G.TIMERS.REAL / 2.0) / 3.0) * dissolve_mult, + strength = (card.config and card.config.forcefield and card.config.forcefield.strength or -0.5) * (0.8 - math.cos((index * 3.0) + G.TIMERS.REAL / 2.0) / 3.0) * dissolve_mult, + } + + elseif (not card) or (card.removed) then + table.remove(G.FORCEFIELD_CARDS, index) + end + + return { + position = {0, 0}, + screen_size = {1, 1}, + radius = 1, + strength = 0 + } + end, + }) +end if config.high_quality_shaders then local background_shader = NFS.read(BUNCOMOD.content.path..'assets/shaders/background.fs') @@ -448,181 +545,272 @@ SMODS.Consumable:take_ownership('pluto', { set_card_type_badge = function(self, card, badges) badges[1] = create_badge(config.fixed_badges and localize('k_planet') or localize('k_dwarf_planet'), get_type_colour(self or card.config, card), nil, 1.2) end -}) +}, true) SMODS.Consumable:take_ownership('ceres', { set_card_type_badge = function(self, card, badges) badges[1] = create_badge(config.fixed_badges and localize('k_planet_q') or localize('k_dwarf_planet'), get_type_colour(self or card.config, card), nil, 1.2) end -}) +}, true) SMODS.Consumable:take_ownership('eris', { set_card_type_badge = function(self, card, badges) badges[1] = create_badge(config.fixed_badges and localize('k_planet_q') or localize('k_dwarf_planet'), get_type_colour(self or card.config, card), nil, 1.2) end -}) +}, true) -- Fixed sprites SMODS.Atlas({key = 'bunco_resprites_jokers', path = 'Resprites/Jokers.png', px = 71, py = 95}) -SMODS.Atlas({key = 'bunco_resprites_consumables', path = 'Resprites/Consumables.png', px = 71, py = 95}) +SMODS.Atlas({key = 'bunco_resprites_tarots', path = 'Resprites/Tarots.png', px = 71, py = 95}) +SMODS.Atlas({key = 'bunco_resprites_planets', path = 'Resprites/Planets.png', px = 71, py = 95}) +SMODS.Atlas({key = 'bunco_resprites_spectrals', path = 'Resprites/Spectrals.png', px = 71, py = 95}) + +function use_fixed_sprite_atlas() + return config.fixes_sprites and not next(SMODS.find_mod("malverk")) +end if config.fixed_sprites then - -- High contrast + -- -- High contrast G.C['SO_1']['Spades'] = HEX('3c4368') - G.C.SUITS = G.C["SO_" .. (G.SETTINGS.colourblind_option and 2 or 1)] + -- G.C.SUITS = G.C["SO_" .. (G.SETTINGS.colourblind_option and 2 or 1)] - if not (SMODS.Mods["malverk"] or {}).can_load then + if not next(SMODS.find_mod("malverk")) then -- Jokers SMODS.Joker:take_ownership('juggler', { - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('drunkard', { - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('acrobat', { - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('credit_card', { - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('troubadour', { - pos = coordinate(5), + pos = coordinate_from_atlas_index(5), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('even_steven', { - pos = coordinate(6), + pos = coordinate_from_atlas_index(6), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('odd_todd', { - pos = coordinate(7), + pos = coordinate_from_atlas_index(7), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('fibonacci', { - pos = coordinate(8), + pos = coordinate_from_atlas_index(8), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('drivers_license', { - pos = coordinate(9), + pos = coordinate_from_atlas_index(9), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('gift', { - pos = coordinate(10), + pos = coordinate_from_atlas_index(10), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('flash', { - pos = coordinate(11), + pos = coordinate_from_atlas_index(11), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('ramen', { - pos = coordinate(12), + pos = coordinate_from_atlas_index(12), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('selzer', { - pos = coordinate(13), + pos = coordinate_from_atlas_index(13), atlas = 'bunco_resprites_jokers' - }) + }, true) SMODS.Joker:take_ownership('scholar', { - pos = coordinate(14), + pos = coordinate_from_atlas_index(14), atlas = 'bunco_resprites_jokers' - }) + }, true) -- Consumables SMODS.Consumable:take_ownership('fool', { - pos = coordinate(1), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(1), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('lovers', { - pos = coordinate(2), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(2), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('chariot', { - pos = coordinate(3), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(3), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('wheel_of_fortune', { - pos = coordinate(4), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(4), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('tower', { - pos = coordinate(5), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(5), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('moon', { - pos = coordinate(6), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(6), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('world', { - pos = coordinate(7), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(7), + atlas = 'bunco_resprites_tarots' + }, true) SMODS.Consumable:take_ownership('soul', { - pos = coordinate(8), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(1), + atlas = 'bunco_resprites_spectrals' + }, true) SMODS.Consumable:take_ownership('ceres', { - pos = coordinate(9), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(1), + atlas = 'bunco_resprites_planets' + }, true) SMODS.Consumable:take_ownership('mercury', { - pos = coordinate(10), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(2), + atlas = 'bunco_resprites_planets' + }, true) SMODS.Consumable:take_ownership('uranus', { - pos = coordinate(11), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(3), + atlas = 'bunco_resprites_planets' + }, true) SMODS.Consumable:take_ownership('pluto', { - pos = coordinate(12), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(4), + atlas = 'bunco_resprites_planets' + }, true) SMODS.Consumable:take_ownership('incantation', { - pos = coordinate(13), - atlas = 'bunco_resprites_consumables' - }) + pos = coordinate_from_atlas_index(2), + atlas = 'bunco_resprites_spectrals' + }, true) SMODS.Consumable:take_ownership('black_hole', { - pos = coordinate(14), - atlas = 'bunco_resprites_consumables' + pos = coordinate_from_atlas_index(3), + atlas = 'bunco_resprites_spectrals' }) end + if next(SMODS.find_mod("malverk")) then + AltTexture({ + key = 'tarots_fixed_sprites', + set = 'Tarot', + path = 'Resprites/Tarots.png', + keys = { + 'c_fool', + 'c_lovers', + 'c_chariot', + 'c_wheel_of_fortune', + 'c_tower', + 'c_moon', + 'c_world', + }, + loc_txt = { + name = 'Tarot Fixes' + } + }) + AltTexture({ + key = 'planets_fixed_sprites', + set = 'Planet', + path = 'Resprites/Planets.png', + keys = { + 'c_ceres', + 'c_mercury', + 'c_uranus', + 'c_pluto', + }, + loc_txt = { + name = 'Planet Fixes' + } + }) + AltTexture({ + key = 'spectrals_fixed_sprites', + set = 'Spectral', + path = 'Resprites/Spectrals.png', + keys = { + 'c_soul', + 'c_incantation', + 'c_black_hole' + }, + loc_txt = { + name = 'Spectral Fixes' + } + }) + AltTexture({ + key = 'jokers_fixed_sprites', + set = 'Joker', + path = 'Resprites/Jokers.png', + keys = { + 'j_juggler', + 'j_drunkard', + 'j_acrobat', + 'j_credit_card', + 'j_troubadour', + 'j_even_steven', + 'j_odd_todd', + 'j_fibonacci', + 'j_drivers_license', + 'j_gift', + 'j_flash', + 'j_ramen', + 'j_selzer', + 'j_scholar' + }, + loc_txt = { + name = 'Joker Fixes' + } + }) + + TexturePack({ + key = 'bunc_fixed_sprites', + textures = { + 'bunc_jokers_fixed_sprites', + 'bunc_tarots_fixed_sprites', + 'bunc_planets_fixed_sprites', + 'bunc_spectrals_fixed_sprites', + }, + loc_txt = { + name = 'Bunco Resprites', + text = {'Port of Bunco sprite fixes'} + } + }) + end + end -- Text icons @@ -652,6 +840,17 @@ if config.gameplay_reworks then add_tag(Tag('tag_bunc_breaking')) play_sound('generic1', 0.9 + math.random() * 0.1, 0.8) play_sound('holo1', 1.2 + math.random() * 0.1, 0.4) + + -- Trigger immediate tags + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = function() + for i = 1, #G.GAME.tags do + G.GAME.tags[i]:apply_to_run({ type = 'immediate' }) + end + return true + end + })) return true end) })) @@ -666,15 +865,11 @@ if config.gameplay_reworks then calculate = function(self, card, context) if context.skipping_booster and not context.blueprint then card.ability.mult = card.ability.mult + (card.ability.extra * G.GAME.pack_choices) - event({ - func = function() - card_eval_status_text(card, 'extra', nil, nil, nil, { - message = localize{type = 'variable', key = 'a_mult', vars = {card.ability.extra * G.GAME.pack_choices}}, - colour = G.C.RED, - delay = 0.45, - card = card - }) - return true end}) + return { + message = localize{type = 'variable', key = 'a_mult', vars = {card.ability.extra * G.GAME.pack_choices}}, + colour = G.C.RED, + delay = 0.45 + } end end }) @@ -716,7 +911,7 @@ if config.gameplay_reworks then return true end) - G.GAME.current_round.free_rerolls = G.GAME.current_round.free_rerolls + 1 + G.GAME.current_round.free_rerolls = math.max(G.GAME.current_round.free_rerolls + 1, 0) calculate_reroll_cost(true) tag.triggered = true @@ -735,16 +930,11 @@ if config.gameplay_reworks then info_queue[#info_queue+1] = G.P_CENTERS.e_polychrome info_queue[#info_queue+1] = G.P_CENTERS.e_bunc_glitter - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, self.config.extra} - else - vars = {1, self.config.extra} - end + local vars = {SMODS.get_probability_vars(card, 1, self.config.extra, 'wheel_of_fortune')} return {key = 'c_bunc_wheel_of_fortune', vars = vars} end, - pos = config.fixed_sprites and coordinate(4) or nil, - atlas = config.fixed_sprites and 'bunco_resprites_consumables' or nil + pos = use_fixed_sprite_atlas() and coordinate_from_atlas_index(4) or nil, + atlas = use_fixed_sprite_atlas() and 'bunco_resprites_tarots' or nil }) SMODS.Consumable:take_ownership('aura', { @@ -762,14 +952,14 @@ end -- Temporary extra chips -local original_end_round = end_round +local bunc_original_end_round = end_round function end_round() for _, v in ipairs(G.playing_cards) do if v.ability and type(v.ability) == 'table' and v.ability.temporary_extra_chips then v.ability.temporary_extra_chips = nil end end - original_end_round() + bunc_original_end_round() end local Card_get_chip_bonus = Card.get_chip_bonus @@ -797,9 +987,9 @@ function post_eval_card(card, context) return ret end -local original_calculate_main_scoring = SMODS.calculate_main_scoring +local bunc_original_calculate_main_scoring = SMODS.calculate_main_scoring function SMODS.calculate_main_scoring(context, scoring_hand) - original_calculate_main_scoring(context, scoring_hand) + bunc_original_calculate_main_scoring(context, scoring_hand) -- Post-scoring @@ -816,90 +1006,79 @@ end -- Repetitions unlocking -local original_calculate_repetitions = SMODS.calculate_repetitions +local bunc_original_calculate_repetitions = SMODS.calculate_repetitions SMODS.calculate_repetitions = function(card, context, reps) - original_calculate_repetitions(card, context, reps) + bunc_original_calculate_repetitions(card, context, reps) - local locked_card + check_for_unlock({type = 'repetition', repetition_amount = #reps - 1}) +end - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] +-- Various on-money-gain functions - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'repetition', repetition_amount = #reps - 1}) - end +table.insert(SMODS.calculation_keys, "bunc_new_dollars_mod") +table.insert(SMODS.other_calculation_keys, "bunc_new_dollars_mod") +local bunc_original_smods_calculate_individal_effect = SMODS.calculate_individual_effect +SMODS.calculate_individual_effect = function(effect, scored_card, key, amount, from_edition) + + if key == "bunc_new_dollars_mod" then + return { [key] = amount } end -end --- Various on-money-gain functions + return bunc_original_smods_calculate_individal_effect(effect, scored_card, key, amount, from_edition) +end -BUNCOMOD.funcs.ease_dollars = function(mod) - if G.GAME.Trident and (to_big(mod) <= to_big(0)) then --Vermilion Trident 1/2 +local bunc_original_ease_dollars = ease_dollars +function ease_dollars(mod, instant) + if G.GAME.Trident and (to_big(mod) <= to_big(0)) then -- Vermilion Trident 1/2 G.GAME.ante_purchases = (G.GAME.ante_purchases or 0) + 1 end - - G.GAME.money_spend_this_round = G.GAME.money_spend_this_round or 0 --Money spent in one shop unlock 1/2 + + G.GAME.bunc_money_spend_this_round = G.GAME.bunc_money_spend_this_round or 0 -- Money spent in one shop unlock 1/2 if to_big(mod) < to_big(0) then - G.GAME.money_spend_this_round = G.GAME.money_spend_this_round - mod + G.GAME.bunc_money_spend_this_round = G.GAME.bunc_money_spend_this_round - mod + check_for_unlock({type = 'round_spend_money', round_spend_money = G.GAME.bunc_money_spend_this_round}) + end - local locked_card + local ret = SMODS.calculate_context({ + bunc_pre_money_change = true, + mod = mod, + sign = (to_big(mod) < to_big(0) and -1 or to_big(mod) > to_big(0) and 1 or 0) + }) + mod = ret.calculated and to_big(ret.bunc_new_dollars_mod) or mod - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] + if to_big(mod) == to_big(0) then return end - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'round_spend_money', round_spend_money = G.GAME.money_spend_this_round}) - end - end - end + bunc_original_ease_dollars(mod, instant) - if G.jokers ~= nil then --Jokers that affect money income - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_fiendish' and not v.debuff then - if to_big(mod) > to_big(0) then - if pseudorandom('fiendish'..G.SEED) < G.GAME.probabilities.normal / v.ability.extra.odds then - mod = to_big(1) - local message = to_number(mod) - G.E_MANAGER:add_event(Event{func = function() - card_eval_status_text( - v, - 'extra', - nil, nil, nil, - {message = '$'..(message or '1'), colour = G.C.RED, instant = true}) - return true end}) - else - mod = to_big(mod) * to_big(2) - local message = to_number(mod) - G.E_MANAGER:add_event(Event{func = function() - card_eval_status_text( - v, - 'extra', - nil, nil, nil, - {message = '$'..message, colour = G.C.ORANGE, instant = true}) - return true end}) - end - end - end - if v.config.center.key == 'j_bunc_bounty_hunter' and not v.debuff then - if to_big(mod) > to_big(0) then - v:calculate_joker({get_money = true}) - mod = to_big(mod) - to_big(1) - G.E_MANAGER:add_event(Event{func = function() - card_eval_status_text( - v, - 'extra', - nil, nil, nil, - {message = G.localization.misc.dictionary.bunc_robbed, colour = G.C.ORANGE, instant = true}) - return true end}) - end + if instant then + SMODS.calculate_context({ + bunc_money_change = true, + mod = mod, + sign = (to_big(mod) < to_big(0) and -1 or to_big(mod) > to_big(0) and 1 or 0) + }) + if G.GAME.round_resets.blind_choices.Boss == "bl_bunc_stone" then + BUNCOMOD.funcs.bunc_refresh_boss_blind() + end + else + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = function() + SMODS.calculate_context({ + bunc_money_change = true, + mod = mod, + sign = (to_big(mod) < to_big(0) and -1 or to_big(mod) > to_big(0) and 1 or 0) + }) + if G.GAME.round_resets.blind_choices.Boss == "bl_bunc_stone" then + BUNCOMOD.funcs.bunc_refresh_boss_blind() end + return true end + })) end - return(mod) -end -local original_game_update = Game.update +end +local bunc_original_game_update = Game.update function Game:update(dt) -- The 8 @@ -928,7 +1107,15 @@ function Game:update(dt) end end - original_game_update(self, dt) + -- (Vermilion Trident 2/2) + if G.GAME.round_resets.blind_choices and G.GAME.round_resets.blind_choices.Boss and G.GAME.round_resets.blind_choices.Boss == 'bl_bunc_final_trident' then + G.GAME.Trident = true + else + G.GAME.Trident = false + G.GAME.ante_purchases = 0 + end + + bunc_original_game_update(self, dt) end function BUNCOMOD.content.set_debuff(card) @@ -965,39 +1152,34 @@ function BUNCOMOD.content.set_debuff(card) if G.jokers.cards[my_pos + 1] and G.jokers.cards[my_pos + 1].config.center.key == 'j_bunc_gameplan' and not G.jokers.cards[my_pos + 1].debuff then return true end end - -- Conquest + -- Reactive - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key == 'j_bunc_conquest' then - if G.jokers.cards[i].ability.extra.joker ~= 0 and card == G.jokers.cards[i].ability.extra.joker then - return true - end + local reactive_condition + for _, v in pairs(G.GAME.round_resets.blind_states) do + if v == 'Skipped' then + reactive_condition = true end end - - -- Reactive - for i = 1, #G.jokers.cards do if card == G.jokers.cards[i] and G.jokers.cards[i].ability.bunc_reactive then - local condition - for _, v in pairs(G.GAME.round_resets.blind_states) do - if v == 'Skipped' then - condition = true - end - end - if not condition then + if not reactive_condition then return true end end + + -- Conquest + + if card.ability.bunc_conquest_chosen then + return true + end end return false end -local original_start_run = Game.start_run - +local bunc_original_start_run = Game.start_run function Game:start_run(args) - original_start_run(self, args) + bunc_original_start_run(self, args) local sledgehammers = SMODS.find_card('j_bunc_sledgehammer') for _, card in ipairs(sledgehammers) do @@ -1014,7 +1196,15 @@ SMODS.Tag:take_ownership('double', { return {key = 'tag_bunc_double'} end end, -}) +}, true) + +-- All in Jest compat +-- AiJ implemented this in a way that usually specific compat isn't required +-- However in this case I did weird stuff, so putting in a specific fix +-- Used in Prehistoric Joker +aij_ids_op = next(SMODS.find_mod("allinjest")) and ids_op or function (card, op, b) + return card:get_id() == b +end -- Joker creation setup @@ -1026,6 +1216,7 @@ SMODS.Atlas({key = 'bunco_jokers_taped', path = 'Jokers/JokerTaped.png', px = 12 SMODS.Atlas({key = 'bunco_jokers_headache', path = 'Jokers/JokerHeadache.png', px = 71, py = 95}) SMODS.Atlas({key = 'bunco_jokers_winking', path = 'Jokers/JokerWinking.png', px = 71, py = 95}) SMODS.Atlas({key = 'bunco_jokers_border', path = 'Jokers/JokerBorder.png', px = 71, py = 95}) +SMODS.Atlas({key = 'settings_icon', path = 'settings.png', px = 32, py = 32}) SMODS.Sound({key = 'gunshot', path = 'gunshot.ogg'}) SMODS.Sound({key = 'mousetrap', path = 'mousetrap.ogg'}) @@ -1036,10 +1227,13 @@ SMODS.Sound({key = 'diamond', path = 'diamond.ogg'}) SMODS.Sound({key = 'fleuron', path = 'fleuron.ogg'}) SMODS.Sound({key = 'halberd', path = 'halberd.ogg'}) SMODS.Sound({key = 'stone', path = 'stone.ogg'}) +SMODS.Sound({key = 'paperback_crown', path = 'crown.ogg'}) +SMODS.Sound({key = 'paperback_star', path = 'star.ogg'}) +SMODS.Sound({key = 'minty_3', path = 'meow3.wav'}) SMODS.Shader({key = 'headache', path = 'headache.fs'}) -local function create_joker(joker) +local function bunc_define_joker(joker) -- Sprite position @@ -1105,7 +1299,7 @@ local function create_joker(joker) -- Joker creation - if not (joker.purist == false and config.purist_mode) then SMODS.Joker{ + SMODS.Joker{ name = joker.name, key = key, @@ -1125,6 +1319,8 @@ local function create_joker(joker) eternal_compat = joker.eternal, perishable_compat = joker.perishable, + pools = joker.pools, + process_loc_text = joker.process_loc_text, config = joker.custom_config or joker.config, @@ -1155,8 +1351,7 @@ local function create_joker(joker) in_pool = joker.custom_in_pool or pool, effect = joker.effect - } - end + } if joker.drawsteps then for index, drawstep in ipairs(joker.drawsteps) do drawstep.key = key..'_'..index @@ -1167,7 +1362,22 @@ end -- Jokers -create_joker({ -- Cassette +local bunc_cassette_sprite_change = function(card) + local coord = 1 + + if BUNCOMOD.funcs.exotic_in_pool() then + coord = coord + 70 + end + + if card.ability and card.ability.extra and card.ability.extra.side then + if card.ability.extra.side == 'B' then + coord = coord + 1 + end + end + + card.children.center:set_sprite_pos(coordinate_from_atlas_index(coord)) +end +bunc_define_joker({ -- Cassette name = 'Cassette', position = 1, vars = {{chips = 45}, {mult = 6}, {side = 'A'}}, custom_vars = function(self, info_queue, card) @@ -1206,14 +1416,17 @@ create_joker({ -- Cassette } if card.ability.extra.side == 'A' then - - if card.area and card.area.config.collection and G.P_CENTERS['b_bunc_fairy'].unlocked then - info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_light_suits_exotic'} + if next(SMODS.find_mod("paperback")) then + info_queue[#info_queue + 1] = PB_UTIL.suit_tooltip('light') else - if G.GAME and G.GAME.Exotic then + if card.area and card.area.config.collection and G.P_CENTERS['b_bunc_fairy'].unlocked then info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_light_suits_exotic'} else - info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_light_suits'} + if G.GAME and G.GAME.Exotic then + info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_light_suits_exotic'} + else + info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_light_suits'} + end end end @@ -1221,14 +1434,17 @@ create_joker({ -- Cassette main_end = main_end, vars = vars} else - - if card.area and card.area.config.collection and G.P_CENTERS['b_bunc_fairy'].unlocked then - info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_dark_suits_exotic'} + if next(SMODS.find_mod("paperback")) then + info_queue[#info_queue + 1] = PB_UTIL.suit_tooltip('dark') else - if G.GAME and G.GAME.Exotic then + if card.area and card.area.config.collection and G.P_CENTERS['b_bunc_fairy'].unlocked then info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_dark_suits_exotic'} else - info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_dark_suits'} + if G.GAME and G.GAME.Exotic then + info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_dark_suits_exotic'} + else + info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_dark_suits'} + end end end @@ -1238,20 +1454,23 @@ create_joker({ -- Cassette end end, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.pre_discard and not context.blueprint then card:flip() end - if context.flip and not context.blueprint then - forced_message(G.localization.misc.dictionary['bunc_'..(card.ability.extra.side == 'A' and 'b' or 'a')..'_side'], card, G.C.RED) + if context.flip and not context.blueprint and context.card_flipped == card then if card.ability.extra.side == 'A' then card.ability.extra.side = 'B' else card.ability.extra.side = 'A' end + return { + message = G.localization.misc.dictionary['bunc_'..(card.ability.extra.side == 'A' and 'a' or 'b')..'_side'], + colour = G.C.RED + } end if context.individual and context.cardarea == G.play then @@ -1262,8 +1481,7 @@ create_joker({ -- Cassette if other_card:is_suit('Hearts') or other_card:is_suit('Diamonds') or other_card:is_suit('bunc_Fleurons') then if side == 'A' then return { - chips = card.ability.extra.chips, - card = card + chips = card.ability.extra.chips } end end @@ -1271,8 +1489,7 @@ create_joker({ -- Cassette if other_card:is_suit('Spades') or other_card:is_suit('Clubs') or other_card:is_suit('bunc_Halberds') then if side == 'B' then return { - mult = card.ability.extra.mult, - card = card + mult = card.ability.extra.mult } end end @@ -1280,31 +1497,21 @@ create_joker({ -- Cassette end, update = function(self, card) if card.VT.w <= 0 then - if card.ability.extra.side == 'A' then - card.children.center:set_sprite_pos(coordinate(1)) - else - card.children.center:set_sprite_pos(coordinate(2)) - end + bunc_cassette_sprite_change(card) end end, set_sprites = function(self, card, front) if self.discovered or card.bypass_discovery_center then - if card.ability and card.ability.extra and card.ability.extra.side then - if card.ability.extra.side == 'A' then - card.children.center:set_sprite_pos(coordinate(1)) - else - card.children.center:set_sprite_pos(coordinate(2)) - end - end + bunc_cassette_sprite_change(card) end end }) -create_joker({ -- Mosaic +bunc_define_joker({ -- Mosaic name = 'Mosaic', position = 3, vars = {{mult = 6}}, rarity = 'Uncommon', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'hand_contents' then @@ -1332,22 +1539,21 @@ create_joker({ -- Mosaic if context.individual and context.cardarea == G.play then if context.other_card.config.center == G.P_CENTERS.m_stone then return { - mult = card.ability.extra.mult, - card = card + mult = card.ability.extra.mult } end end end }) -create_joker({ -- Voxel +bunc_define_joker({ -- Voxel name = 'Voxel', position = 4, vars = {{base = 3}, {bonus = 0.1}, {xmult = 3}, {tally = 0}, {unlock = 10}}, locked_vars = function(self, info_queue, card) return {vars = {self.config.extra.unlock}} end, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'modify_deck' then @@ -1364,13 +1570,7 @@ create_joker({ -- Voxel if context.joker_main then if card.ability.extra.xmult ~= 1 then return { - Xmult_mod = card.ability.extra.xmult, - card = card, - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - } + xmult = card.ability.extra.xmult } end end @@ -1392,7 +1592,7 @@ create_joker({ -- Voxel end }) -create_joker({ -- Crop Circles +bunc_define_joker({ -- Crop Circles name = 'Crop Circles', position = 5, rarity = 'Common', cost = 4, custom_vars = function(self, info_queue, card) @@ -1404,66 +1604,57 @@ create_joker({ -- Crop Circles end end end, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.individual and context.cardarea == G.play then local other_card = context.other_card - if other_card.config.center ~= G.P_CENTERS.m_stone then + local rank_mult = 0 + local suit_mult = 0 - if other_card.base.suit == ('bunc_Fleurons') then - if other_card:get_id() == 8 then - return { - mult = 6, - card = card - } - elseif other_card:get_id() == 12 or other_card:get_id() == 10 or other_card:get_id() == 9 or other_card:get_id() == 6 then - return { - mult = 5, - card = card - } - else - return { - mult = 4, - card = card - } - end - elseif other_card.base.suit == ('Clubs') then - if other_card:get_id() == 8 then - return { - mult = 5, - card = card - } - elseif other_card:get_id() == 12 or other_card:get_id() == 10 or other_card:get_id() == 9 or other_card:get_id() == 6 then - return { - mult = 4, - card = card - } - else - return { - mult = 3, - card = card - } - end - elseif other_card:get_id() == 8 then - return { - mult = 2, - card = card - } + if not SMODS.has_no_suit(other_card) then + if other_card.base.suit == "bunc_Fleurons" then + suit_mult = suit_mult + 4 + elseif other_card.base.suit == "Clubs" then + suit_mult = suit_mult + 3 + end + end + + if not SMODS.has_no_rank(other_card) then + if other_card:get_id() == 8 then + rank_mult = rank_mult + 2 elseif other_card:get_id() == 12 or other_card:get_id() == 10 or other_card:get_id() == 9 or other_card:get_id() == 6 then - return { - mult = 1, - card = card - } + rank_mult = rank_mult + 1 end end + + if (suit_mult + rank_mult) > 0 then + if not context.blueprint and BUNCOMOD.funcs.exotic_in_pool() then + event({ + blocking = false, + func = function() + card.children.center:set_sprite_pos(coordinate_from_atlas_index(73)) + return true + end + }) + end + return { + mult = suit_mult + rank_mult + } + end + end + end, + set_sprites = function(self, card, front) + -- Alt textures for slothful to include exotic and paperback suits if they have been unlocked + if (self.discovered or card.bypass_discovery_center) and BUNCOMOD.funcs.exotic_in_pool() then + card.children.center:set_sprite_pos(coordinate_from_atlas_index(73)) end end }) -create_joker({ -- Xray +bunc_define_joker({ -- Xray name = 'Xray', position = 6, vars = {{bonus = 0.2}, {xmult = 1}}, rarity = 'Common', cost = 4, @@ -1478,34 +1669,30 @@ create_joker({ -- Xray calculate = function(self, card, context) if context.emplaced_card and context.emplaced_card.facing == 'back' and not context.blueprint then card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.bonus - - forced_message('X'..tostring(card.ability.extra.xmult)..' '..localize('k_mult'), card, G.C.RED, card.ability.extra.bonus) + return { + message = localize('k_upgrade_ex'), + instant = true + } end if context.joker_main then if card.ability.extra.xmult ~= 1 then return { - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - }, - Xmult_mod = card.ability.extra.xmult, - card = card + xmult = card.ability.extra.xmult, } end end end }) -create_joker({ -- Dread +bunc_define_joker({ -- Dread name = 'Dread', position = 7, vars = {{levels = 2}, {trash_list = {}}, {level_up_list = {}}, {unlock = 10}}, locked_vars = function(self, info_queue, card) return {vars = {self.config.extra.unlock}} end, rarity = 'Rare', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'round_deck_size' and args.round_deck_size_diff <= -self.config.extra.unlock then @@ -1521,7 +1708,7 @@ create_joker({ -- Dread end end - if (context.after or context.first_hand_drawn) and G.GAME.current_round.hands_left == 1 then -- For shaking the card when there's one hand left + if (context.after or context.first_hand_drawn) and G.GAME.current_round.hands_left <= 1 then -- For shaking the card when there's one hand left event({func = function () local eval = function() return G.GAME.current_round.hands_left == nil or G.GAME.current_round.hands_left ~= 0 end juice_card_until(card, eval, true) @@ -1529,46 +1716,38 @@ create_joker({ -- Dread end if context.after and G.GAME.current_round.hands_left <= 0 and context.scoring_name then - ---- Event (1): display message - forced_message(localize('k_level_up_ex'), card, G.C.RED, true) - ---- Events (2): animate level up - -- line copied from planet use - update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize(context.scoring_name, 'poker_hands'),chips = G.GAME.hands[context.scoring_name].chips, mult = G.GAME.hands[context.scoring_name].mult, level=G.GAME.hands[context.scoring_name].level}) - -- Has immediate effects - level_up_hand(card, context.scoring_name, false, card.ability.extra.levels) - card.ability.extra.level_up_list[context.scoring_name] = - (card.ability.extra.level_up_list[context.scoring_name] or 0) + card.ability.extra.levels - local trash_list = card.ability.extra.trash_list - ---- Event (3): start_dissolve() on every card to trash - -- start_dissolve() calls run concurrently with blocking events. - -- To treat them as a normal event, wrap them in a - -- 'before' event with delay equal to how long start_dissolve() takes - - -- (From Firch) UPD: Trying to make this work with other Dread copies a bit better, - -- added an additional check if the cards are already destroyed. - -- Without this check a second Dread would cause a destroying sound to play - -- despite not having any cards to destroy - local dissolve_time_fac = 3 - event({ - trigger = 'before', - delay = 0.7*dissolve_time_fac*1.051, + return { + message = localize('k_level_up_ex'), + colour = G.C.RED, func = function() - big_juice(card) - for _, card_to_trash in ipairs(trash_list) do - if not card_to_trash.removed then - card_to_trash:start_dissolve(nil, nil, dissolve_time_fac) + update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize(context.scoring_name, 'poker_hands'),chips = G.GAME.hands[context.scoring_name].chips, mult = G.GAME.hands[context.scoring_name].mult, level=G.GAME.hands[context.scoring_name].level}) + level_up_hand(card, context.scoring_name, false, card.ability.extra.levels) + card.ability.extra.level_up_list[context.scoring_name] = (card.ability.extra.level_up_list[context.scoring_name] or 0) + card.ability.extra.levels + update_hand_text({sound = 'button', volume = 0.7, pitch = 1.1, delay = 0}, {mult = 0, chips = 0, handname = '', level = ''}) + + local trash_list = card.ability.extra.trash_list + local dissolve_time_fac = 3 + event({ + trigger = 'before', + delay = 0.7*dissolve_time_fac*1.051, + func = function() + big_juice(card) + for _, card_to_trash in ipairs(trash_list) do + if not card_to_trash.removed then + card_to_trash:start_dissolve(nil, nil, dissolve_time_fac) + end + end + return true end + }) + + for _, card_to_trash in ipairs(trash_list) do + card_to_trash.destroyed = true end - return true + SMODS.calculate_context({remove_playing_cards = true, removed = trash_list}) + card.ability.extra.trash_list = {} end - }) - update_hand_text({delay = 0}, {mult = 0, chips = 0, handname = '', level = ''}) - -- Has immediate effects, so make sure this is set for other mods - for _, card_to_trash in ipairs(trash_list) do - card_to_trash.destroyed = true - end - SMODS.calculate_context({remove_playing_cards = true, removed = trash_list}) - card.ability.extra.trash_list = {} + } end end end, @@ -1579,11 +1758,11 @@ create_joker({ -- Dread end }) -create_joker({ -- Prehistoric +bunc_define_joker({ -- Prehistoric name = 'Prehistoric', position = 8, vars = {{mult = 16}, {card_list = { }}}, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'hand_contents' then @@ -1595,20 +1774,23 @@ create_joker({ -- Prehistoric end, calculate = function(self, card, context) if context.individual and context.cardarea == G.play then - for k, v in pairs(card.ability.extra.card_list) do - if (v:get_id() == context.other_card:get_id()) - and (v:is_suit(context.other_card.base.suit) or context.other_card.config.center == G.P_CENTERS.m_wild) - and context.other_card.config.center ~= G.P_CENTERS.m_stone then + for _, v in ipairs(card.ability.extra.card_list) do + if (aij_ids_op(context.other_card, '==', v.rank)) + and (v.has_any_suit or context.other_card:is_suit(v.suit)) then return { - mult = card.ability.extra.mult, - card = card + mult = card.ability.extra.mult } end end if not context.blueprint then - if context.other_card.config.center ~= G.P_CENTERS.m_stone then - table.insert(card.ability.extra.card_list, context.other_card) -- Add the card to the list + if not (SMODS.has_no_suit(context.other_card) or SMODS.has_no_rank(context.other_card)) then + table.insert(card.ability.extra.card_list, { + rank = context.other_card:get_id(), + suit = context.other_card.base.suit, + has_any_suit = SMODS.has_any_suit(context.other_card), + ID = context.other_card.unique_val + }) -- Add the card to the list end end @@ -1620,10 +1802,10 @@ create_joker({ -- Prehistoric end }) -create_joker({ -- Linocut +bunc_define_joker({ -- Linocut name = 'Linocut', position = 9, rarity = 'Uncommon', cost = 4, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.after and context.scoring_hand and #context.scoring_hand == 2 and not context.blueprint then @@ -1631,45 +1813,52 @@ create_joker({ -- Linocut event({trigger = 'after', delay = 0.15, func = function() context.scoring_hand[1]:flip(); play_sound('card1', 1); context.scoring_hand[1]:juice_up(0.3, 0.3); return true end }) event({trigger = 'after', delay = 0.1, func = function() context.scoring_hand[1]:change_suit(context.scoring_hand[2].config.card.suit); return true end }) event({trigger = 'after', delay = 0.15, func = function() context.scoring_hand[1]:flip(); play_sound('tarot2', 1, 0.6); big_juice(card); context.scoring_hand[1]:juice_up(0.3, 0.3); return true end }) - forced_message(G.localization.misc.dictionary.bunc_copied, card, G.C.RED, true) + return { + message = G.localization.misc.dictionary["bunc_copied"], + colour = G.C.RED + } end end end }) -create_joker({ -- Ghost Print +bunc_define_joker({ -- Ghost Print name = 'Ghost Print', position = 10, vars = {{last_hand = 'Nothing'}}, custom_vars = function(self, info_queue, card) local vars if card.ability.extra.last_hand == 'Nothing' then - vars = {G.localization.misc.dictionary.bunc_nothing} + vars = {G.GAME.last_hand_played or G.localization.misc.dictionary.bunc_nothing} else vars = {G.localization.misc['poker_hands'][card.ability.extra.last_hand]} end return {vars = vars} end, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.joker_main then - if card.ability.extra.last_hand ~= 'Nothing' then - mult = mod_mult(mult + G.GAME.hands[card.ability.extra.last_hand].mult) - hand_chips = mod_chips(hand_chips + G.GAME.hands[card.ability.extra.last_hand].chips) - update_hand_text({delay = 0, sound = '', modded = true}, {chips = hand_chips, mult = mult}) - forced_message(G.localization.misc['poker_hands'][card.ability.extra.last_hand]..'!', context.blueprint_card or card, G.C.HAND_LEVELS[G.GAME.hands[card.ability.extra.last_hand].level], true) + return { + chips = G.GAME.hands[card.ability.extra.last_hand].chips, + mult = G.GAME.hands[card.ability.extra.last_hand].mult, + } end + end - if not context.blueprint then - card.ability.extra.last_hand = G.GAME.last_hand_played - end + if context.after and not context.blueprint then + card.ability.extra.last_hand = G.GAME.last_hand_played + end + end, + add = function(self, card, from_debuff) + if not from_debuff then + card.ability.extra.last_hand = G.GAME.last_hand_played or "Nothing" end end }) -create_joker({ -- Loan Shark +bunc_define_joker({ -- Loan Shark name = 'Loan Shark', position = 11, vars = {{dollars = 50}, {cost = -100}}, custom_vars = function(self, info_queue, card) @@ -1681,44 +1870,49 @@ create_joker({ -- Loan Shark end end, rarity = 'Uncommon', cost = 3, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'round_spend_money' and to_number(args.round_spend_money) >= 100 then unlock_card(self) end end, - add = function(self, card) - ease_dollars(card.ability.extra.dollars) + add = function(self, card, from_debuff) + if not from_debuff then + ease_dollars(card.ability.extra.dollars) + end card:set_cost() end }) -create_joker({ -- Basement +bunc_define_joker({ -- Basement name = 'Basement', position = 12, rarity = 'Rare', cost = 8, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, - purist = false, calculate = function(self, card, context) if context.end_of_round and G.GAME.blind.boss and not context.other_card then if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then - if not context.blueprint then - forced_message(localize('k_plus_spectral'), card, G.C.SECONDARY_SET.Spectral) - else - forced_message(localize('k_plus_spectral'), context.blueprint_card, G.C.SECONDARY_SET.Spectral) - end G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1 - local spectral = create_card('Spectral', G.consumeables, nil, nil, nil, nil, nil) - spectral:add_to_deck() - G.consumeables:emplace(spectral) - G.GAME.consumeable_buffer = 0 + G.E_MANAGER:add_event(Event({ + func = function() + local spectral = create_card('Spectral', G.consumeables, nil, nil, nil, nil, nil) + spectral:add_to_deck() + G.consumeables:emplace(spectral) + G.GAME.consumeable_buffer = 0 + return true + end + })) + return { + message = localize('k_plus_spectral'), + colour = G.C.SECONDARY_SET.Spectral + } end end end }) -create_joker({ -- Shepherd +bunc_define_joker({ -- Shepherd name = 'Shepherd', position = 13, vars = {{bonus = 6}, {chips = 0}}, rarity = 'Common', cost = 5, @@ -1728,26 +1922,23 @@ create_joker({ -- Shepherd if context.before and context.poker_hands ~= nil and next(context.poker_hands['Pair']) and not context.blueprint then card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.bonus - forced_message('+'..tostring(card.ability.extra.chips)..' '..G.localization.misc.dictionary.bunc_chips, card, G.C.BLUE, true) + return { + message = '+'..tostring(card.ability.extra.chips)..' '..G.localization.misc.dictionary["bunc_chips"], + colour = G.C.BLUE + } end if context.joker_main then if card.ability.extra.chips ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_chips', - vars = { card.ability.extra.chips } - }, - chip_mod = card.ability.extra.chips, - card = card + chips = card.ability.extra.chips } end end end }) -create_joker({ -- Knight +bunc_define_joker({ -- Joker Knight name = 'Knight', position = 14, vars = {{bonus = 6}, {mult = 0}}, rarity = 'Uncommon', cost = 6, @@ -1758,7 +1949,6 @@ create_joker({ -- Knight unlock_card(self) end end, - purist = false, calculate = function(self, card, context) if context.setting_blind and not card.getting_sliced and not context.blueprint then card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.bonus @@ -1770,29 +1960,28 @@ create_joker({ -- Knight delay(0.15) event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 1);return true end }) delay(0.5) - return true end }) + return true + end }) - forced_message('+'..tostring(card.ability.extra.mult)..' '..localize('k_mult'), card, G.C.RED) + return { + message = '+'..tostring(card.ability.extra.mult)..' '..localize('k_mult'), + colour = G.C.RED + } end if context.break_positions and not context.blueprint then if card.ability.extra.mult ~= 0 then card.ability.extra.mult = 0 - - forced_message(localize('k_reset'), card, G.C.RED) + return { + message = localize('k_reset') + } end end if context.joker_main then if card.ability.extra.mult ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { card.ability.extra.mult } - }, - mult_mod = card.ability.extra.mult, - card = card + mult = card.ability.extra.mult } end end @@ -1812,21 +2001,20 @@ create_joker({ -- Knight end }) -create_joker({ -- JMJB +bunc_define_joker({ -- Joker Man & Jester Boy Trading Card No. 54 (JMJB) name = 'JMJB', position = 15, vars = {{unlock = 50}}, locked_vars = function(self, info_queue, card) return {vars = {self.config.extra.unlock, G.PROFILES[G.SETTINGS.profile].booster_packs_opened or 0}} end, rarity = 'Rare', cost = 5, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'open_pack' and args.packs_total >= self.config.extra.unlock then unlock_card(self) end end, - purist = false, calculate = function(self, card, context) if context.open_booster and context.card.ability.name then if (context.open_booster and context.card.ability.name == 'Standard Pack' or @@ -1855,11 +2043,11 @@ create_joker({ -- JMJB end }) -create_joker({ -- Dogs Playing Poker +bunc_define_joker({ -- Dogs Playing Poker name = 'Dogs Playing Poker', position = 16, vars = {{xmult = 2.5}}, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.joker_main then @@ -1868,9 +2056,12 @@ create_joker({ -- Dogs Playing Poker if context.scoring_hand then for i = 1, #context.scoring_hand do - if (context.scoring_hand[i]:get_id() >= 6 or - context.scoring_hand[i]:get_id() < 2) and - context.scoring_hand[i].config.center ~= G.P_CENTERS.m_stone then + if not ( + context.scoring_hand[i]:get_id() == 2 or + context.scoring_hand[i]:get_id() == 3 or + context.scoring_hand[i]:get_id() == 4 or + context.scoring_hand[i]:get_id() == 5 + ) or SMODS.has_no_rank(context.scoring_hand[i]) then condition = false end end @@ -1878,27 +2069,21 @@ create_joker({ -- Dogs Playing Poker if condition then return { - Xmult_mod = card.ability.extra.xmult, - card = card, - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - }, + xmult = card.ability.extra.xmult, } end end end }) -create_joker({ -- Righthook +bunc_define_joker({ -- Righthook name = 'Righthook', position = 17, vars = {{unlock = 5}}, locked_vars = function(self, info_queue, card) return {vars = {self.config.extra.unlock}} end, rarity = 'Rare', cost = 8, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'repetition' and args.repetition_amount >= self.config.extra.unlock then @@ -1908,31 +2093,25 @@ create_joker({ -- Righthook calculate = function(self, card, context) if context.repetition and context.cardarea == G.play and context.scoring_hand and context.other_card == context.scoring_hand[#context.scoring_hand] then - local repetitions = G.GAME.current_round.hands_left + local repetitions = G.GAME.cry_panop_juggle or G.GAME.current_round.hands_left -- For cryptid compat return { message = localize('k_again_ex'), - repetitions = repetitions, - card = card + repetitions = repetitions } end end }) -create_joker({ -- Fiendish +bunc_define_joker({ -- Fiendish name = 'Fiendish', position = 18, vars = {{odds = 3}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_fiendish")} return {vars = vars} end, rarity = 'Uncommon', cost = 5, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_challenge' and G.GAME.challenge == 'c_double_nothing_1' then @@ -1940,10 +2119,28 @@ create_joker({ -- Fiendish unlock_card(self) end end, - purist = false + calculate = function(self, card, context) + if context.bunc_pre_money_change and context.sign == 1 then + if SMODS.pseudorandom_probability(card, 'fiendish'..G.SEED, 1, card.ability.extra.odds, 'bunc_fiendish') then + local new_mod = to_big(1) + return { + bunc_new_dollars_mod = new_mod, + message = "$" .. to_number(new_mod), + colour = G.C.RED + } + else + local new_mod = to_big(context.mod) * to_big(2) + return { + bunc_new_dollars_mod = new_mod, + message = "$" .. to_number(new_mod), + colour = G.C.ORANGE + } + end + end + end }) -create_joker({ -- Carnival +bunc_define_joker({ -- Carnival name = 'Carnival', position = 19, vars = {{ante = -huge_number}}, custom_vars = function (self, info_queue, card) @@ -1958,14 +2155,13 @@ create_joker({ -- Carnival return {main_end = main_end} end, rarity = 'Rare', cost = 10, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'ante_down' and args.ante == 0 then unlock_card(self) end end, - purist = false, calculate = function(self, card, context) if context.end_of_round and G.GAME.blind.boss and not context.other_card and not context.blueprint then if G.GAME.round_resets.ante > card.ability.extra.ante then @@ -1977,23 +2173,31 @@ create_joker({ -- Carnival if joker_to_destroy and not card.getting_sliced then joker_to_destroy.getting_sliced = true - card:juice_up(0.8, 0.8) card.ability.extra.ante = G.GAME.round_resets.ante ease_ante(-1) - forced_message(G.localization.misc.dictionary.bunc_loop, card, G.C.BLACK) - joker_to_destroy:start_dissolve({G.C.BLACK}, nil, 1.6) - play_sound('slice1', 0.96+math.random()*0.08) + G.E_MANAGER:add_event(Event({ + func = function() + card:juice_up(0.8, 0.8) + joker_to_destroy:start_dissolve({G.C.BLACK}, nil, 1.6) + play_sound('slice1', 0.96+math.random()*0.08) + return true + end + })) + return { + message = G.localization.misc.dictionary["bunc_loop"], + colour = G.C.BLACK, + } end end end end }) -create_joker({ -- Sledgehammer +bunc_define_joker({ -- Sledgehammer name = 'Sledgehammer', position = 20, vars = {{plus_xmult = 1}, {div_chance_denom = 4}}, rarity = 'Uncommon', cost = 5, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'hand_contents' then @@ -2055,10 +2259,10 @@ create_joker({ -- Sledgehammer end }) -create_joker({ -- Doorhanger +bunc_define_joker({ -- Doorhanger name = 'Doorhanger', position = 21, rarity = 'Rare', cost = 10, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_custom' and G.GAME.max_common_jokers == 0 then @@ -2080,62 +2284,72 @@ create_joker({ -- Doorhanger end }) -create_joker({ -- Fingerprints +bunc_define_joker({ -- Fingerprints name = 'Fingerprints', position = 22, vars = {{bonus = 50}, {scoring_card_set = {}}}, rarity = 'Uncommon', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.after and context.scoring_name ~= nil and context.scoring_hand and not context.blueprint then - card.ability.extra.scoring_card_set = {} - for i = 1, #context.scoring_hand do - card.ability.extra.scoring_card_set[context.scoring_hand[i].unique_val] = true + if ((SMODS.calculate_round_score() + G.GAME.chips) - G.GAME.blind.chips) >= to_big(0) then + card.ability.extra.scoring_card_set = {} + for i = 1, #context.scoring_hand do + local other_card = context.scoring_hand[i] + if not other_card.debuff then + event({func = function() + big_juice(other_card) + return true + end}) + + -- Save upgraded cards to actually upgrade after end_round() triggers + card.ability.extra.scoring_card_set[other_card.unique_val] = true + end + end + return { + message = localize('k_upgrade_ex'), + colour = G.C.CHIPS + } end end - if context.end_of_round and not context.other_card and not context.blueprint then - for _, v in ipairs(G.playing_cards) do - if card.ability.extra.scoring_card_set[v.unique_val] then - v.ability = v.ability or {} - v.ability.temporary_extra_chips = (v.ability.temporary_extra_chips or 0) + card.ability.extra.bonus + if context.end_of_round and context.cardarea == G.jokers and not context.blueprint then + if card.ability.extra.scoring_card_set then + for _, v in ipairs(G.playing_cards) do + if card.ability.extra.scoring_card_set[v.unique_val] then + v.ability = v.ability or {} + v.ability.temporary_extra_chips = (v.ability.temporary_extra_chips or 0) + card.ability.extra.bonus + end end + -- not needed, but good style to fail fast + card.ability.extra.scoring_card_set = nil end - -- not needed, but good style to fail fast - card.ability.extra.scoring_card_set = nil - - forced_message(localize('k_upgrade_ex'), card, G.C.CHIPS, true) end end }) -create_joker({ -- Zero Shapiro +bunc_define_joker({ -- Zero Shapiro name = 'Zero Shapiro', position = 23, vars = {{odds = 8}}, custom_vars = function(self, info_queue, card) - local vars - info_queue[#info_queue+1] = {set = 'Tag', key = 'tag_d_six'} - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_zero_shapiro")} return {vars = vars} end, rarity = 'Uncommon', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.individual and context.cardarea == G.play then - if context.other_card.config.center.key == 'm_stone' or context.other_card:get_id() == 0 or not tonumber(context.other_card.base.value) and context.other_card.base.value ~= 'Ace' then - if pseudorandom('zero_shapiro'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if context.other_card:get_id() == 11 or context.other_card:get_id() == 12 or context.other_card:get_id() == 13 or SMODS.has_no_rank(context.other_card) then + if SMODS.pseudorandom_probability(card, pseudorandom('zero_shapiro'..G.SEED), 1, card.ability.extra.odds, 'bunc_zero_shapiro') then return { - extra = {message = '+'..localize{type = 'name_text', key = 'tag_d_six', set = 'Tag'}, colour = G.C.GREEN}, - card = card, + message = '+'..localize{type = 'name_text', key = 'tag_d_six', set = 'Tag'}, + blocking = false, + colour = G.C.GREEN, func = function() - event({func = function() + event({trigger="before", delay = 0.7 * 1.25, func = function() add_tag(Tag('tag_d_six')) return true end}) @@ -2147,25 +2361,26 @@ create_joker({ -- Zero Shapiro end }) -create_joker({ -- Nil Bill +bunc_define_joker({ -- Nil Bill name = 'Nil Bill', position = 24, vars = {{bonus = 2}}, rarity = 'Uncommon', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.remove_playing_cards then - ease_dollars(card.ability.extra.bonus * #context.removed) - forced_message('$'..card.ability.extra.bonus * #context.removed, card, G.C.MONEY) + return { + dollars = card.ability.extra.bonus * #context.removed + } end end }) -create_joker({ -- Bierdeckel +bunc_define_joker({ -- Bierdeckel name = 'Bierdeckel', position = 25, vars = {{bonus = 10}}, rarity = 'Uncommon', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if (context.after or context.discard and context.other_card == context.full_hand[1]) then @@ -2183,7 +2398,10 @@ create_joker({ -- Bierdeckel end -- maybe juice all held cards, that'd be fun - forced_message(localize('k_upgrade_ex'), context.blueprint_card or card, G.C.CHIPS, true) + return { + message = localize('k_upgrade_ex'), + colour = G.C.CHIPS + } end end, set_ability = function(self, card, initial, delay_sprites) @@ -2201,11 +2419,29 @@ create_joker({ -- Bierdeckel end }) -create_joker({ -- Registration Plate +local bunc_registration_plate_refresh = function (card) + -- TODO: Make it so a card cannot be randomly chosen twice + local card_list = {} + for i = 1, 5 do + local index = math.random(#G.deck.cards) + table.insert(card_list, G.deck.cards[index]) + end + + card.ability.extra.combination = {} + for i = 1, 5 do + table.insert(card.ability.extra.combination, card_list[i].base.value) + end + + card.ability.extra.ranks = {} + for i = 1, 5 do + table.insert(card.ability.extra.ranks, card_list[i]:get_id()) + end +end +bunc_define_joker({ -- Registration Plate name = 'Registration Plate', position = 26, - vars = {{combination = ''}, {card_list = {}}, {ranks = {}}}, + vars = {{combination = {"2", "3", "4", "5", "6"}}, {ranks = {}}}, rarity = 'Rare', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_challenge' and G.GAME.challenge == 'c_city_1' then @@ -2214,67 +2450,45 @@ create_joker({ -- Registration Plate end end, custom_vars = function(self, info_queue, card) - local vars - if card.ability.extra.combination == '' then - vars = {'2, 3, 4, 5 '..G.localization.misc.dictionary.bunc_word_and..' 6'} - else - vars = {card.ability.extra.combination} + local vars = {} + for i = 1, #card.ability.extra.combination do + table.insert(vars, localize(card.ability.extra.combination[i], 'ranks')) end return {vars = vars} end, - add = function(self, card) - card.ability.extra.card_list = {} - - for i = 1, 5 do - local index = math.random(#G.deck.cards) - table.insert(card.ability.extra.card_list, G.deck.cards[index]) - end - - local combination = {} - - for i = 1, 5 do - table.insert(combination, card.ability.extra.card_list[i].base.value) - end - - card.ability.extra.ranks = {} - - for i = 1, 5 do - table.insert(card.ability.extra.ranks, card.ability.extra.card_list[i]:get_id()) + add = function(self, card, from_debuff) + if from_debuff then + return end - card.ability.extra.combination = table.concat(combination, ", ", 1, 4).." "..G.localization.misc.dictionary.bunc_word_and.." "..table.concat(combination, " ", 5) + bunc_registration_plate_refresh(card) end, calculate = function(self, card, context) if context.end_of_round and #G.deck.cards ~= 0 then - card.ability.extra.card_list = {} - for i = 1, 5 do - local index = math.random(#G.deck.cards) - table.insert(card.ability.extra.card_list, G.deck.cards[index]) - end - - local combination = {} - - for i = 1, 5 do - table.insert(combination, card.ability.extra.card_list[i].base.value) - end - - card.ability.extra.ranks = {} - - for i = 1, 5 do - table.insert(card.ability.extra.ranks, card.ability.extra.card_list[i]:get_id()) - end - - card.ability.extra.combination = table.concat(combination, ", ", 1, 4).." "..G.localization.misc.dictionary.bunc_word_and.." "..table.concat(combination, " ", 5) + bunc_registration_plate_refresh(card) end end }) -create_joker({ -- Slothful +local bunc_slothful_sprite_change = function(card) + if BUNCOMOD.funcs.exotic_in_pool() then + if next(SMODS.find_mod("paperback")) and (SMODS.Suits.paperback_Crowns:in_pool() or SMODS.Suits.paperback_Stars:in_pool()) then + card.children.center:set_sprite_pos(coordinate_from_atlas_index(76)) + else + card.children.center:set_sprite_pos(coordinate_from_atlas_index(74)) + end + else + if next(SMODS.find_mod("paperback")) and (SMODS.Suits.paperback_Crowns:in_pool() or SMODS.Suits.paperback_Stars:in_pool()) then + card.children.center:set_sprite_pos(coordinate_from_atlas_index(75)) + end + end +end +bunc_define_joker({ -- Slothful name = 'Slothful', position = 27, vars = {{mult = 9}}, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'hand_contents' then @@ -2290,33 +2504,49 @@ create_joker({ -- Slothful end end, custom_in_pool = function() - local condition = false if G.playing_cards then for k, v in pairs(G.playing_cards) do - if v.config.center == G.P_CENTERS.m_wild then condition = true break end + if v.config.center == G.P_CENTERS.m_wild then + return true + end end end - return condition + return false end, calculate = function(self, card, context) if context.individual and context.cardarea == G.play then if context.other_card.config.center == G.P_CENTERS.m_wild then + if not context.blueprint then + event({ + blocking = false, + func = function() + bunc_slothful_sprite_change(card) + return true + end + }) + end return { mult = card.ability.extra.mult, card = card } end end + end, + set_sprites = function(self, card, front) + -- Alt textures for slothful to include exotic and paperback suits if they have been unlocked + if self.discovered or card.bypass_discovery_center then + bunc_slothful_sprite_change(card) + end end }) -create_joker({ -- Neon +bunc_define_joker({ -- Neon name = 'Neon', position = 28, custom_vars = function(self, info_queue, card) info_queue[#info_queue+1] = G.P_CENTERS.e_bunc_fluorescent end, rarity = 'Uncommon', cost = 5, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'hand_contents' then @@ -2333,20 +2563,22 @@ create_joker({ -- Neon end, calculate = function(self, card, context) if context.enhance_card and not context.blueprint then - if context.enhanced_card:get_edition() == nil then - context.enhanced_card:set_edition({bunc_fluorescent = true}) - event({func = function() big_juice(card) return true end}) + if context.enhanced_card.area == G.hand then + if context.enhanced_card:get_edition() == nil then + context.enhanced_card:set_edition({bunc_fluorescent = true}) + event({func = function() big_juice(card) return true end}) + end end end end }) -create_joker({ -- Gameplan +bunc_define_joker({ -- Gameplan name = 'Gameplan', position = 29, vars = {{mult = 20}}, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'defeat_blind' and args.blind.name == 'Verdant Leaf' then @@ -2368,36 +2600,31 @@ create_joker({ -- Gameplan end end, calculate = function(self, card, context) - if context.joker_main then + if context.other_joker then local mult = 0 local my_pos = nil for i = 1, #G.jokers.cards do if G.jokers.cards[i] == card then my_pos = i; break end end - if G.jokers.cards[my_pos - 1] then mult = mult + card.ability.extra.mult end - if G.jokers.cards[my_pos + 1] then mult = mult + card.ability.extra.mult end + if context.other_joker == G.jokers.cards[my_pos - 1] then mult = card.ability.extra.mult end + if context.other_joker == G.jokers.cards[my_pos + 1] then mult = card.ability.extra.mult end if mult ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { mult } - }, - mult_mod = mult, - card = card + mult = mult, + card = context.other_joker } end end end }) -create_joker({ -- Conquest +bunc_define_joker({ -- Conquest name = 'Conquest', position = 30, vars = {{chips = 200}, {joker = 0}}, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'defeat_blind' and args.blind.name == 'Crimson Heart' then @@ -2414,6 +2641,7 @@ create_joker({ -- Conquest remove = function(self, card) if G.jokers then for i = 1, #G.jokers.cards do + if G.jokers.cards[i].ability.bunc_conquest_chosen == card.unique_val then G.jokers.cards[i].ability.bunc_conquest_chosen = nil end G.GAME.blind:debuff_card(G.jokers.cards[i]) end end @@ -2422,41 +2650,49 @@ create_joker({ -- Conquest if context.setting_blind and not context.blueprint then local my_pos = nil for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then my_pos = i; break end + if G.jokers.cards[i] == card then my_pos = i end + if G.jokers.cards[i].ability.bunc_conquest_chosen == card.unique_val then G.jokers.cards[i].ability.bunc_conquest_chosen = nil end end if #G.jokers.cards > 1 then - card.ability.extra.joker = G.jokers.cards[math.random(#G.jokers.cards)] - while card.ability.extra.joker == G.jokers.cards[my_pos] do - card.ability.extra.joker = G.jokers.cards[math.random(#G.jokers.cards)] - end - else - card.ability.extra.joker = 0 - end + event({func = function() + local random_index = math.random(#G.jokers.cards - 1) + if random_index >= my_pos then + random_index = random_index + 1 + end + G.jokers.cards[random_index].ability.bunc_conquest_chosen = card.unique_val + G.GAME.blind:debuff_card(G.jokers.cards[random_index]) + big_juice(G.jokers.cards[random_index]) + return true + end}) - if card.ability.extra.joker ~= 0 then - forced_message(G.localization.misc.dictionary.bunc_debuffed, card, G.C.RED, true, card.ability.extra.joker) + -- Using forced_message since SMOD will stil display message if debuffed + event({delay = 0.7 * 1.25, func = function() + if not card.debuffed then + card_eval_status_text( + card, + 'extra', + nil, percent, nil, + {message = G.localization.misc.dictionary["bunc_debuffed"], colour = G.C.RED, instant = true} + ) + end + return true + end}) end end if context.joker_main then return { - message = localize { - type = 'variable', - key = 'a_chips', - vars = { card.ability.extra.chips } - }, - chip_mod = card.ability.extra.chips, - card = context.blueprint_card or card + chips = card.ability.extra.chips } end - end + end, }) -create_joker({ -- Hierarchy of Needs +bunc_define_joker({ -- Hierarchy of Needs name = 'Hierarchy of Needs', position = 31, vars = {{bonus = 5}, {mult = 20}}, rarity = 'Common', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, update = function(self, card) if G.playing_cards then @@ -2507,20 +2743,14 @@ create_joker({ -- Hierarchy of Needs if context.joker_main then if card.ability.extra.mult ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { card.ability.extra.mult } - }, - mult_mod = card.ability.extra.mult, - card = card + mult = card.ability.extra.mult } end end end }) -create_joker({ -- Dwarven +bunc_define_joker({ -- Dwarven name = 'Dwarven', position = 32, custom_vars = function(self, info_queue, card) info_queue[#info_queue+1] = G.P_CENTERS.m_stone @@ -2529,7 +2759,7 @@ create_joker({ -- Dwarven return {} end, rarity = 'Uncommon', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'hand_contents' then @@ -2581,10 +2811,10 @@ create_joker({ -- Dwarven end }) -create_joker({ -- Aristocrat +bunc_define_joker({ -- Aristocrat name = 'Aristocrat', position = 33, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_custom' and G.GAME.booster_packs_opened == 0 then @@ -2612,7 +2842,7 @@ create_joker({ -- Aristocrat end }) -create_joker({ -- Metallurgist +bunc_define_joker({ -- Metallurgist name = 'Metallurgist', position = 34, vars = {{mult = 10}}, custom_vars = function(self, info_queue, card) @@ -2620,7 +2850,7 @@ create_joker({ -- Metallurgist return {vars = {card.ability.extra.mult}} end, rarity = 'Common', cost = 6, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, custom_in_pool = function() local condition = false @@ -2649,7 +2879,7 @@ create_joker({ -- Metallurgist end }) -create_joker({ -- Juggalo +bunc_define_joker({ -- Juggalo name = 'Juggalo', position = 35, vars = {{unlock = 10}}, custom_vars = function(self, info_queue, card) @@ -2663,7 +2893,7 @@ create_joker({ -- Juggalo return {vars = {self.config.extra.unlock, G.PROFILES[G.SETTINGS.profile].consumables_with_edition_used or 0}} end, rarity = 'Rare', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'use_consumable_with_edition' and args.used_total >= self.config.extra.unlock then @@ -2684,30 +2914,29 @@ create_joker({ -- Juggalo {'e_holo', 'e_foil', 'e_polychrome', 'e_bunc_glitter'}) if consumable then event({func = function() + big_juice(consumable) consumable:set_edition(edition, true) return true end}) - forced_message(localize('k_upgrade_ex'), card, G.C.RED, true, consumable) + return { + message = localize('k_upgrade_ex'), + colour = G.C.RED + } end end end end }) -create_joker({ -- Head in the Clouds +bunc_define_joker({ -- Head in the Clouds name = 'Head in the Clouds', position = 36, vars = {{odds = 3}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_head_in_the_clouds")} return {vars = vars} end, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_custom' then @@ -2732,24 +2961,25 @@ create_joker({ -- Head in the Clouds end, calculate = function(self, card, context) if context.level_up_hand and context.level_up_hand ~= self.name then - if pseudorandom('head_in_the_clouds'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if SMODS.pseudorandom_probability(card, 'head_in_the_clouds'..G.SEED, 1, card.ability.extra.odds, 'bunc_head_in_the_clouds') then event({func = function() local hand = 'High Card' card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_upgrade_ex')}) update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize(hand, 'poker_hands'),chips = G.GAME.hands[hand].chips, mult = G.GAME.hands[hand].mult, level=G.GAME.hands[hand].level}) level_up_hand(context.blueprint_card or card, self.name, nil, 1) update_hand_text({sound = 'button', volume = 0.7, pitch = 1.1, delay = 0}, {mult = 0, chips = 0, handname = '', level = ''}) - return true end}) + return true + end}) end end end }) -create_joker({ -- Headshot +bunc_define_joker({ -- Headshot name = 'Headshot', position = 37, vars = {{xmult = 3}}, rarity = 'Uncommon', cost = 8, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.joker_main and context.scoring_hand then @@ -2762,33 +2992,38 @@ create_joker({ -- Headshot if face_amount == 1 then return { - Xmult_mod = card.ability.extra.xmult, - card = card, - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - }, + xmult = card.ability.extra.xmult, } end end end }) -create_joker({ -- Trigger Finger +function create_UIBox_bunc_trigger_finger_config() + local t = create_UIBox_generic_options({ contents = { + {n=G.UIT.R, config={align = "cm", padding = 0.15, colour = G.C.CLEAR}, nodes={ + {n=G.UIT.C, config={align = "cm", padding = 0.15}, nodes={ + create_slider({label = G.localization.descriptions.Joker.j_bunc_trigger_finger.name .. " (" .. G.localization.misc.dictionary.bunc_volume .. ")", w = 5, h = 0.4, ref_table = G.SETTINGS.SOUND, ref_value = 'bunc_trigger_finger_volume', min = 0, max = 100}), + }} + }} + }}) + return t +end +G.FUNCS.j_bunc_trigger_finger_settings = function(e) + G.FUNCS.overlay_menu{ + definition = create_UIBox_bunc_trigger_finger_config(), + config = {offset = {x=0,y=10}} + } +end +bunc_define_joker({ -- Trigger Finger name = 'Trigger Finger', position = 38, vars = {{xmult = 4}, {odds = 10}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {card.ability.extra.xmult, G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {card.ability.extra.xmult, 1, card.ability.extra.odds} - end + local vars = {card.ability.extra.xmult, SMODS.get_probability_vars(card, 1, card.ability.extra.odds, 'bunc_trigger_finger')} return {vars = vars} end, rarity = 'Rare', cost = 8, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'defeat_blind' and args.blind.name == 'Cerulean Bell' then @@ -2796,12 +3031,12 @@ create_joker({ -- Trigger Finger end end, calculate = function(self, card, context) - if context.highlight_card and (G.STATE == G.STATES.SELECTING_HAND or G.STATE == G.STATES.DRAW_TO_HAND) then + if context.bunc_trigger_finger_highlight_card and (G.STATE == G.STATES.SELECTING_HAND or G.STATE == G.STATES.DRAW_TO_HAND) and G.GAME.STOP_USE <= 0 then local cards = {} for i = 1, #G.hand.highlighted do table.insert(cards, G.hand.highlighted[i]) end - event({trigger = 'after', func = function() + if #cards > 0 and SMODS.pseudorandom_probability(card, 'trigger_finger'..G.SEED, 1, card.ability.extra.odds, 'bunc_trigger_finger') then for i = 1, #cards do if not cards[i].highlighted then cards[i]:highlight() @@ -2809,55 +3044,69 @@ create_joker({ -- Trigger Finger end if G.hand.highlighted then G.FUNCS.play_cards_from_highlighted() - play_sound('bunc_gunshot') - forced_message(G.localization.misc.dictionary.bunc_pew, card, G.C.RED) + G.STATE = G.STATES.HAND_PLAYED + G.STATE_COMPLETE = true end - return true end}) + if G.SETTINGS.SOUND.bunc_trigger_finger_volume == 0 then + return { + message = G.localization.misc.dictionary.bunc_pew, + colour = G.C.RED, + instant = true + } + else + return { + message = G.localization.misc.dictionary.bunc_pew, + colour = G.C.RED, + sound = 'bunc_gunshot', + volume = G.SETTINGS.SOUND.bunc_trigger_finger_volume / 100, + instant = true + } + end + end end if context.joker_main then return { - Xmult_mod = card.ability.extra.xmult, - card = card, - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - }, + xmult = card.ability.extra.xmult, } end end }) -create_joker({ -- Hopscotch +bunc_define_joker({ -- Hopscotch name = 'Hopscotch', position = 39, vars = {{discard = 1}}, rarity = 'Common', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.before and context.poker_hands ~= nil and next(context.poker_hands['Straight']) then ease_discard(card.ability.extra.discard) - forced_message('+'..card.ability.extra.discard..' '..localize('b_discard'), card, G.C.RED, true) + return { + message = '+'..card.ability.extra.discard..' '..localize('b_discard'), + colour = G.C.RED + } end end }) -create_joker({ -- Pawn +bunc_define_joker({ -- Pawn name = 'Pawn', position = 40, custom_vars = function(self, info_queue, card) if G.playing_cards and #G.playing_cards > 0 then local rank = math.huge + local display_rank = "" for _, deck_card in ipairs(G.playing_cards) do - if deck_card:get_id() < rank and deck_card.config.center ~= G.P_CENTERS.m_stone then + if deck_card:get_id() < rank and not SMODS.has_no_rank(deck_card) then rank = deck_card:get_id() + display_rank = deck_card.base.value end end - return {vars = {localize(tostring(rank), 'ranks')}} + return {vars = {localize(tostring(display_rank), 'ranks')}} end return {vars = {localize('2', 'ranks')}} end, rarity = 'Common', cost = 5, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.after and context.scoring_hand and not context.blueprint then @@ -2866,7 +3115,7 @@ create_joker({ -- Pawn local other_card = context.scoring_hand[i] local rank = math.huge for _, deck_card in ipairs(G.playing_cards) do - if deck_card:get_id() < rank and deck_card.config.center ~= G.P_CENTERS.m_stone then + if deck_card:get_id() < rank and not SMODS.has_no_rank(deck_card) then rank = deck_card:get_id() end end @@ -2904,7 +3153,7 @@ create_joker({ -- Pawn end }) -create_joker({ -- Puzzle Board +bunc_define_joker({ -- Puzzle Board name = 'Puzzle Board', position = 41, vars = {{odds = 4}}, custom_vars = function(self, info_queue, card) @@ -2914,20 +3163,15 @@ create_joker({ -- Puzzle Board info_queue[#info_queue+1] = G.P_CENTERS.e_polychrome info_queue[#info_queue+1] = G.P_CENTERS.e_bunc_glitter - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_puzzle_board")} return {vars = vars} end, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) - if context.using_consumeable and context.consumeable.ability.set == 'Tarot' then - if pseudorandom('puzzle_board'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if context.using_consumeable and context.consumeable.ability.set == 'Tarot' and #G.hand.highlighted > 0 then + if SMODS.pseudorandom_probability(card, 'puzzle_board'..G.SEED, 1, card.ability.extra.odds, 'bunc_puzzle_board') then local cards = {} local edition = poll_edition('wheel_of_fortune', nil, true, true) @@ -2943,28 +3187,25 @@ create_joker({ -- Puzzle Board end return true end}) else - event({trigger = 'after', func = function() - forced_message(localize('k_nope_ex'), card, G.C.RED) - return true end}) + return { + message = localize('k_nope_ex'), + colour = G.C.RED, + } end end end }) -create_joker({ -- Vandalism - name = 'Vandalism', position = 42, soul = coordinate(42), +bunc_define_joker({ -- Vandalism + name = 'Vandalism', position = 42, soul = coordinate_from_atlas_index(42), vars = {{odds = 4}, {xmult = 2}, {card_list = {}}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds, card.ability.extra.xmult} - else - vars = {1, card.ability.extra.odds, card.ability.extra.xmult} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, 'bunc_vandalism')} + table.insert(vars, card.ability.extra.xmult) return {vars = vars} end, rarity = 'Rare', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'play_all_flipped' then @@ -2972,10 +3213,22 @@ create_joker({ -- Vandalism end end, calculate = function(self, card, context) - if context.stay_flipped and not context.blueprint then - big_juice(card) + if context.stay_flipped and context.to_area == G.hand then + -- Does not juice while in booster packs + if G.STATE == G.STATES.SELECTING_HAND or G.STATE == G.STATES.DRAW_TO_HAND then + if (SMODS.pseudorandom_probability(card, 'vandalism'..G.SEED, 1, card.ability.extra.odds, 'bunc_vandalism')) then + big_juice(context.blueprint_card or card) + return { + stay_flipped = true + } + else + return { + stay_flipped = false + } + end + end end - if context.play_cards then + if context.bunc_play_cards then card.ability.extra.card_list = {} for i = 1, #G.hand.highlighted do if G.hand.highlighted[i].facing == 'back' then @@ -3008,7 +3261,7 @@ create_joker({ -- Vandalism card.children.center.states.collide.can = false card.children.center:set_role({major = card, role_type = 'Glued', draw_major = card}) - card.children.back = Sprite(card.T.x, card.T.y, card.T.w, card.T.h, G.ASSET_ATLAS['bunc_bunco_jokers_winking'], coordinate(1)) + card.children.back = Sprite(card.T.x, card.T.y, card.T.w, card.T.h, G.ASSET_ATLAS['bunc_bunco_jokers_winking'], coordinate_from_atlas_index(1)) card.children.back.states.hover = card.states.hover card.children.back.states.click = card.states.click card.children.back.states.drag = card.states.drag @@ -3036,35 +3289,34 @@ create_joker({ -- Vandalism } }) -create_joker({ -- Protester +bunc_define_joker({ -- Protester name = 'Protester', position = 43, vars = {{chip_mult = 8}, {chips = 0}, {rank = -huge_number}}, rarity = 'Common', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.pre_discard then local raised_card = nil for i = 1, #G.hand.highlighted do - if not card.debuff and card.ability.extra.rank < G.hand.highlighted[i].base.nominal and G.hand.cards[i].ability.effect ~= 'Stone Card' then - card.ability.extra.chips = G.hand.highlighted[i].base.nominal * card.ability.extra.chip_mult - card.ability.extra.rank = G.hand.highlighted[i].base.nominal - raised_card = G.hand.highlighted[i] + if not card.debuff and card.ability.extra.rank < G.hand.highlighted[i].base.nominal then + if not SMODS.has_no_rank(G.hand.highlighted[i]) and not G.hand.highlighted[i].debuff then + card.ability.extra.chips = G.hand.highlighted[i].base.nominal * card.ability.extra.chip_mult + card.ability.extra.rank = G.hand.highlighted[i].base.nominal + raised_card = G.hand.highlighted[i] + end end end if raised_card then - event({delay = 0.7 * 1.25, trigger = 'before', func = function() - play_sound('generic1', nil, 1) - extra_juice(card) - big_juice(raised_card) - return true end}) + return { + message = localize{type = 'variable', key = 'a_chips', vars = {card.ability.extra.chips}} + } end end if context.joker_main then if card.ability.extra.chips ~= 0 then return { - message = localize{type = 'variable', key = 'a_chips', vars = {card.ability.extra.chips}}, - chip_mod = card.ability.extra.chips, + chips = card.ability.extra.chips, } end end @@ -3073,20 +3325,23 @@ create_joker({ -- Protester card.ability.extra.rank = -huge_number card.ability.extra.chips = 0 - forced_message(localize('k_reset'), card, G.C.RED, true) + return { + message = localize('k_reset'), + colour = G.C.red_card + } end end end }) -create_joker({ -- Doodle +bunc_define_joker({ -- Doodle name = 'Doodle', position = 44, vars = {{active = true}, {unlock = 10}}, locked_vars = function(self, info_queue, card) return {vars = {self.config.extra.unlock, G.PROFILES[G.SETTINGS.profile].career_stats.c_wins}} end, rarity = 'Rare', cost = 10, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_custom' and (G.PROFILES[G.SETTINGS.profile].career_stats.c_wins + 1) >= self.config.extra.unlock then @@ -3105,7 +3360,6 @@ create_joker({ -- Doodle event({func = function () if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then local copy - forced_message(localize('k_duplicated_ex'), context.blueprint_card or card, nil, true, copy) card.ability.extra.active = false copy = copy_card(context.consumeable) copy:add_to_deck() @@ -3113,6 +3367,9 @@ create_joker({ -- Doodle end return true end}) + return { + message = localize('k_duplicated_ex'), + } end end, add = function(self, card) @@ -3123,7 +3380,7 @@ create_joker({ -- Doodle end }) -create_joker({ -- Disproportionality +bunc_define_joker({ -- Disproportionality name = 'Disproportionality', position = 45, vars = {{min = 0}, {max = 200}}, custom_vars = function(self, info_queue, card) @@ -3137,7 +3394,8 @@ create_joker({ -- Disproportionality [2] = "at file 'chip_mod.lua:", [3] = "'", [4] = "ERROR", - [5] = "Stack Traceback" + [5] = "Stack Traceback", + [6] = "NOT A REAL BUG" } --for i = 1, #r_chips do -- r_chips[i] = text[2]..r_chips[i]..text[3] @@ -3148,7 +3406,7 @@ create_joker({ -- Disproportionality {n = G.UIT.O, config = {object = DynaText({string = { {string = text[1]}, {string = text[1]}, {string = text[1]}, {string = text[1]}, {string = text[1]}, {string = text[1]}, {string = text[4], colour = G.C.JOKER_GREY}, - {string = text[5]}, + {string = text[5]}, {string = text[6]}, }, colours = {G.C.L_BLACK}, random_element = true, pop_in_rate = 9999999, silent = true, pop_delay = 0.2, scale = 0.32, min_cycle_time = 0})}}, }}, {n = G.UIT.R, config = {align = "cm", padding = 0.02}, nodes = { @@ -3160,30 +3418,29 @@ create_joker({ -- Disproportionality } end, rarity = 'Common', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.joker_main then local temp_chips = pseudorandom('disproportionality', card.ability.extra.min, card.ability.extra.max) return { - message = localize{type='variable',key='a_chips',vars={temp_chips}}, - chip_mod = temp_chips + chips = temp_chips, } end end }) -create_joker({ -- Running Joke +bunc_define_joker({ -- Running Joke name = 'Running Joke', position = 46, custom_vars = function(self, info_queue, card) info_queue[#info_queue+1] = G.P_CENTERS.e_negative info_queue[#info_queue+1] = G.P_CENTERS.j_joker end, rarity = 'Rare', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) - if context.enter_shop then + if context.bunc_enter_shop then big_juice(card) local area = G.shop_jokers local shop_card = Card(area.T.x + area.T.w/2, area.T.y, G.CARD_W, G.CARD_H, nil, G.P_CENTERS['j_joker'], @@ -3198,11 +3455,11 @@ create_joker({ -- Running Joke end }) -create_joker({ -- On Broadway +bunc_define_joker({ -- On Broadway name = 'On Broadway', position = 47, vars = {{chips = 120}, {mult = 20}}, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.joker_main and context.scoring_hand and context.poker_hands ~= nil and next(context.poker_hands['Straight']) then @@ -3213,28 +3470,20 @@ create_joker({ -- On Broadway end end if face then - hand_chips = mod_chips(hand_chips + card.ability.extra.chips) - update_hand_text({delay = 0}, {chips = hand_chips}) - forced_message('+'..tostring(card.ability.extra.chips), card, G.C.CHIPS, true) return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { card.ability.extra.mult } - }, - mult_mod = card.ability.extra.mult, - card = card + chips = card.ability.extra.chips, + mult = card.ability.extra.mult } end end end }) -create_joker({ -- Rasta +bunc_define_joker({ -- Rasta name = 'Rasta', position = 48, vars = {{mult = 12}}, rarity = 'Common', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'win_custom' and not G.GAME.enhancements_used then @@ -3250,78 +3499,70 @@ create_joker({ -- Rasta end end if not enhancement then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { card.ability.extra.mult } - }, - mult_mod = card.ability.extra.mult, + mult = card.ability.extra.mult, card = card } end end if context.joker_main and not context.scoring_hand then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { card.ability.extra.mult } - }, - mult_mod = card.ability.extra.mult, + mult = card.ability.extra.mult, card = card } end end }) -create_joker({ -- Critic +bunc_define_joker({ -- Critic name = 'Critic', position = 49, vars = {{xmult = 2}, {fraction = 3}}, rarity = 'Common', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.joker_main then local temp_chips = G.GAME.blind.chips if math.floor(hand_chips * mult) < (temp_chips / card.ability.extra.fraction) then return { - Xmult_mod = card.ability.extra.xmult, - card = card, - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - }, + xmult = card.ability.extra.xmult, } end end end }) -create_joker({ -- Cellphone +bunc_define_joker({ -- Cellphone name = 'Cellphone', position = 50, vars = {{active = true}, {cards_to_hand = {}}}, rarity = 'Uncommon', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.first_hand_drawn then card.ability.extra.active = true - local eval = function() return G.GAME.current_round.hands_played == 0 and G.GAME.current_round.discards_used == 0 end + local eval = function() return card.ability.extra.active end juice_card_until(card, eval, true) end if context.joker_main and context.scoring_hand then card.ability.extra.cards_to_hand = context.scoring_hand end - if context.press_play and card.ability.extra.active and G.GAME.current_round.hands_played == 0 then - forced_message(G.localization.misc.dictionary.bunc_accepted, card, G.C.GREEN) + if context.bunc_press_play and card.ability.extra.active and G.GAME.current_round.hands_played == 0 then + return { + message = G.localization.misc.dictionary.bunc_accepted, + colour = G.C.GREEN + } end if context.after and G.GAME.current_round.hands_played == 0 then event({func = function () - card.ability.extra.active = false + if G.GAME.current_round.hands_played > 0 then + card.ability.extra.active = false + end return true end}) end if context.pre_discard and card.ability.extra.active then card.ability.extra.active = false - forced_message(G.localization.misc.dictionary.bunc_declined, card, G.C.RED, true) + return { + message = G.localization.misc.dictionary.bunc_declined, + colour = G.C.RED + } end end, set_ability = function(self, card, initial, delay_sprites) @@ -3339,11 +3580,11 @@ create_joker({ -- Cellphone end }) -create_joker({ -- Wino +bunc_define_joker({ -- Wino name = 'Wino', position = 51, vars = {{chips = 12}}, rarity = 'Common', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.individual and context.cardarea == G.play then @@ -3360,9 +3601,9 @@ create_joker({ -- Wino end }) -create_joker({ -- Bounty Hunter +bunc_define_joker({ -- Bounty Hunter name = 'Bounty Hunter', position = 52, - vars = {{bonus = 1}, {mult = 0}, {unlock = -20}}, + vars = {{bonus = 1}, {mult = 0}, {unlock = -20}, {being_sold = false}}, locked_vars = function(self, info_queue, card) return {vars = {self.config.extra.unlock}} end, @@ -3371,74 +3612,128 @@ create_joker({ -- Bounty Hunter unlocked = false, check_for_unlock = function(self, args) if args.type == 'money' then - if G.GAME.dollars < to_big(self.config.extra.unlock) then + if to_big(G.GAME.dollars) < to_big(self.config.extra.unlock) then unlock_card(self) end end end, calculate = function(self, card, context) - if context.get_money and not context.blueprint then + if context.selling_card and context.card == card then + card.ability.being_sold = true + end + if context.bunc_pre_money_change and context.sign == 1 and not context.blueprint then card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.bonus + local new_mod = to_big(context.mod) - to_big(card.ability.extra.bonus) + if card.ability.being_sold then + return { + bunc_new_dollars_mod = new_mod, + message = localize("bunc_robbed"), + colour = G.C.ORANGE, + } + else + return { + bunc_new_dollars_mod = new_mod, + message = localize("bunc_robbed"), + colour = G.C.ORANGE, + extra = { + message = localize { + type = 'variable', + key = 'a_mult', + vars = {card.ability.extra.mult} + } + } + } + end end if context.joker_main and card.ability.extra.mult ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = {card.ability.extra.mult} - }, - mult_mod = card.ability.extra.mult, + mult = card.ability.extra.mult, card = card } end end }) -create_joker({ -- Mousetrap +function create_UIBox_bunc_mousetrap_config() + local t = create_UIBox_generic_options({ contents = { + {n=G.UIT.R, config={align = "cm", padding = 0.15, colour = G.C.CLEAR}, nodes={ + {n=G.UIT.C, config={align = "cm", padding = 0.15}, nodes={ + create_slider({label = G.localization.descriptions.Joker.j_bunc_mousetrap.name .. " (" .. G.localization.misc.dictionary.bunc_volume .. ")", w = 5, h = 0.4, ref_table = G.SETTINGS.SOUND, ref_value = 'bunc_mousetrap_volume', min = 0, max = 100}), + }} + }} + }}) + return t +end +G.FUNCS.j_bunc_mousetrap_settings = function(e) + G.FUNCS.overlay_menu{ + definition = create_UIBox_bunc_mousetrap_config(), + config = {offset = {x=0,y=10}} + } +end +bunc_define_joker({ -- Mousetrap name = 'Mousetrap', position = 53, vars = {{chips = 300}, {odds = 3}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {card.ability.extra.chips, G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {card.ability.extra.chips, 1, card.ability.extra.odds} - end + local vars = {card.ability.extra.chips, SMODS.get_probability_vars(card, 1, card.ability.extra.odds, 'bunc_mousetrap')} return {vars = vars} end, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) + if (context.end_of_round or context.hand_drawn or context.after) and card.children.center.sprite_pos.y == 15 then + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = function() + card:juice_up(0.3, 0.3) + local center = card.children.center + center:set_sprite_pos({ x = 2, y = 5 }) + return true + end + })) + end if context.joker_main then - if pseudorandom('mousetrap'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if SMODS.pseudorandom_probability(card, 'mousetrap'..G.SEED, 1, card.ability.extra.odds, 'bunc_mousetrap') then if G.GAME.current_round.hands_left ~= 0 then ease_hands_played(-1) end - event({func = function() play_sound('bunc_mousetrap') return true end}) - forced_message(G.localization.misc.dictionary.bunc_ouch, card, G.C.RED, true) + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = function() + local center = card.children.center + center:set_sprite_pos({ x = 9, y = 15 }) + return true + end + })) + if G.SETTINGS.SOUND.bunc_mousetrap_volume == 0 then + return { + message = G.localization.misc.dictionary.bunc_ouch, + colour = G.C.RED, + } + else + return { + message = G.localization.misc.dictionary.bunc_ouch, + colour = G.C.RED, + sound = "bunc_mousetrap", + volume = G.SETTINGS.SOUND.bunc_mousetrap_volume / 100 + } + end else return { - message = localize{type='variable', key='a_chips', vars={card.ability.extra.chips}}, - chip_mod = card.ability.extra.chips, + chips = card.ability.extra.chips, } end end end }) -create_joker({ -- The Joker +bunc_define_joker({ -- The Joker name = 'The Joker', custom_atlas = 'bunco_jokers_the_joker', position = 1, vars = {{trash_list = {}}, {odds = 3}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_the_joker")} return {vars = vars} end, rarity = 'Rare', cost = 10, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = false, check_for_unlock = function(self, args) if args.type == 'discover_amount' then @@ -3453,7 +3748,7 @@ create_joker({ -- The Joker card.ability.extra.trash_list = {} for k, v in ipairs(context.scoring_hand) do if v.config.center == G.P_CENTERS.c_base then - if pseudorandom('the_joker'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if SMODS.pseudorandom_probability(card, 'the_joker'..G.SEED, 1, card.ability.extra.odds, 'bunc_the_joker') then table.insert(card.ability.extra.trash_list, v) end end @@ -3520,11 +3815,11 @@ create_joker({ -- The Joker end }) -create_joker({ -- Tangram +bunc_define_joker({ -- Tangram name = 'Tangram', position = 54, vars = {{mult = 7}}, rarity = 'Rare', cost = 7, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.individual and context.cardarea == G.play then @@ -3547,10 +3842,10 @@ create_joker({ -- Tangram end }) -create_joker({ -- Domino +bunc_define_joker({ -- Domino name = 'Domino', position = 55, rarity = 'Rare', cost = 12, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if (context.buying_card or context.getting_booster_card) and context.pre_cardarea and not context.blueprint then @@ -3593,18 +3888,35 @@ create_joker({ -- Domino local card_pos = context.pre_card_pos if card_pos then - if context.pre_card_left and context.pre_card_left.area ~= G.consumeables then - if G.FUNCS.check_for_buy_space(context.pre_card_left) then - acquire(context.pre_card_left) + -- Aquire left then right card + + local left_card = context.pre_card_left + local right_card = context.pre_card_right + if left_card and left_card.area ~= G.consumeables then + if G.FUNCS.check_for_buy_space(left_card) and + (left_card.ability.consumeable or + left_card.ability.set == 'Enhanced' or + left_card.ability.set == 'Default' or + left_card.ability.set == 'Joker') + then + acquire(left_card) + big_juice(card) end - big_juice(card) end - if context.pre_card_right and context.pre_card_right.area ~= G.consumeables then - if G.FUNCS.check_for_buy_space(context.pre_card_right) then - acquire(context.pre_card_right) + if right_card and right_card.area ~= G.consumeables then + if G.FUNCS.check_for_buy_space(right_card) and + (right_card.ability.consumeable or + right_card.ability.set == 'Enhanced' or + right_card.ability.set == 'Default' or + right_card.ability.set == 'Joker') + then + acquire(right_card) + big_juice(card) end - big_juice(card) end + + -- If all cards from booster have been aquired then close booster + -- by setting choices to zero if G.STATE == G.STATES.STANDARD_PACK or G.STATE == G.STATES.BUFFOON_PACK or G.STATE == G.STATES.TAROT_PACK @@ -3633,7 +3945,7 @@ create_joker({ -- Domino end }) -create_joker({ -- Glue Gun +bunc_define_joker({ -- Glue Gun name = 'Glue Gun', position = 56, vars = {{amount = 4}}, custom_vars = function (self, info_queue, card) @@ -3651,7 +3963,7 @@ create_joker({ -- Glue Gun return {vars = {card.ability.extra.amount}, main_end = main_end} end, rarity = 'Uncommon', cost = 4, - blueprint = false, eternal = false, + blueprint = false, eternal = false, perishable = true, unlocked = true, calculate = function(self, card, context) if context.selling_self and not context.blueprint then @@ -3672,13 +3984,13 @@ create_joker({ -- Glue Gun end }) -create_joker({ -- Taped +bunc_define_joker({ -- Taped name = 'Taped', custom_atlas = 'bunco_jokers_taped', position = 1, custom_vars = function (self, info_queue, card) info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_linked_group'} end, rarity = 'Rare', cost = 6, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.before @@ -3726,7 +4038,7 @@ create_joker({ -- Taped end }) -create_joker({ -- Rubber Band Ball +bunc_define_joker({ -- Rubber Band Ball name = 'Rubber Band Ball', position = 57, vars = {{bonus = 1}, {xmult = 1}}, custom_vars = function (self, info_queue, card) @@ -3740,13 +4052,7 @@ create_joker({ -- Rubber Band Ball if context.joker_main then if card.ability.extra.xmult ~= 1 then return { - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - }, - Xmult_mod = card.ability.extra.xmult, - card = card + xmult = card.ability.extra.xmult, } end end @@ -3759,7 +4065,7 @@ create_joker({ -- Rubber Band Ball end, }) -create_joker({ -- Headache +bunc_define_joker({ -- Headache name = 'Headache', custom_atlas = 'bunco_jokers_headache', position = 1, vars = {{amount = 4}, {destroyed = 0}}, custom_vars = function (self, info_queue, card) @@ -3768,7 +4074,7 @@ create_joker({ -- Headache return {vars = {card.ability.extra.amount, card.ability.extra.destroyed}} end, rarity = 'Uncommon', cost = 4, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.remove_playing_cards then @@ -3782,7 +4088,7 @@ create_joker({ -- Headache end, set_sprites = function(self, card, front) if card.config.center.discovered or card.bypass_discovery_center then - card.children.floating_sprite = Sprite(card.T.x, card.T.y, card.T.w, card.T.h, G.ASSET_ATLAS['bunc_bunco_jokers_border'], coordinate(1)) + card.children.floating_sprite = Sprite(card.T.x, card.T.y, card.T.w, card.T.h, G.ASSET_ATLAS['bunc_bunco_jokers_border'], coordinate_from_atlas_index(1)) card.children.floating_sprite.states.hover = card.states.hover card.children.floating_sprite.states.click = card.states.click card.children.floating_sprite.states.drag = card.states.drag @@ -3825,9 +4131,9 @@ create_joker({ -- Headache } }) -create_joker({ -- Games Collector +bunc_define_joker({ -- Games Collector name = 'Games Collector', position = 58, - vars = {{bonus = 10}, {chips = 0}}, + vars = {{bonus = 10}, {chips = 0}, {drawn_this_round = {}}}, custom_vars = function (self, info_queue, card) info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_linked_group'} return {vars = {card.ability.extra.bonus, card.ability.extra.chips}} @@ -3838,38 +4144,46 @@ create_joker({ -- Games Collector calculate = function(self, card, context) -- Note: - -- Due the way this is coded, it will only trigger + -- Due to the way this is coded, it will only trigger -- upon the group breaking the hand limit. -- That means that if you managed to draw a group -- "naturally" (so it didn't request other cards) -- the Joker won't recieve its bonus - if context.groups_drawn and not context.blueprint then - for _, group in ipairs(context.groups_drawn) do - card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.bonus + if context.bunc_groups_drawn and not context.blueprint then + local upgrade = false + for _, group_id in ipairs(context.bunc_groups_drawn) do + if not card.ability.extra.drawn_this_round[group_id] then + card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.bonus + card.ability.extra.drawn_this_round[group_id] = true + upgrade = true + end + end + if upgrade then + return { + message = localize('k_upgrade_ex'), + colour = G.C.CHIPS + } end - forced_message(localize('k_upgrade_ex'), card, G.C.CHIPS) end if context.joker_main then if card.ability.extra.chips ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_chips', - vars = { card.ability.extra.chips } - }, - chip_mod = card.ability.extra.chips, + chips = card.ability.extra.chips, card = card } end end + if context.end_of_round then + card.ability.extra.drawn_this_round = {} + end end, custom_in_pool = function() return G.GAME.last_card_group end }) -create_joker({ -- Jumper +bunc_define_joker({ -- Jumper name = 'Jumper', position = 59, vars = {{bonus = 8}, {chips = 0}}, rarity = 'Common', cost = 5, @@ -3889,12 +4203,7 @@ create_joker({ -- Jumper if context.joker_main then if card.ability.extra.chips ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_chips', - vars = { card.ability.extra.chips } - }, - chip_mod = card.ability.extra.chips, + chips = card.ability.extra.chips, card = card } end @@ -3902,72 +4211,97 @@ create_joker({ -- Jumper end }) -create_joker({ -- Stylophone +function create_UIBox_bunc_stylophone_config() + local t = create_UIBox_generic_options({ contents = { + {n=G.UIT.R, config={align = "cm", padding = 0.15, colour = G.C.CLEAR}, nodes={ + {n=G.UIT.C, config={align = "cm", padding = 0.15}, nodes={ + create_slider({label = G.localization.descriptions.Joker.j_bunc_stylophone.name .. " (" .. G.localization.misc.dictionary.bunc_volume .. ")", w = 5, h = 0.4, ref_table = G.SETTINGS.SOUND, ref_value = 'bunc_stylophone_volume', min = 0, max = 100}), + }} + }} + }}) + return t +end +G.FUNCS.j_bunc_stylophone_settings = function(e) + G.FUNCS.overlay_menu{ + definition = create_UIBox_bunc_stylophone_config(), + config = {offset = {x=0,y=10}} + } +end +bunc_define_joker({ -- Stylophone name = 'Stylophone', position = 60, vars = {{x = 0.3}}, rarity = 'Uncommon', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) local function play_stylophone(other_card) + if G.SETTINGS.SOUND.bunc_stylophone_volume == 0 then + return + end local instrument = 'bunc_stone' local function calculate_pitch(pitch) return 2^(pitch / 12) end - if other_card.config.center ~= G.P_CENTERS.m_stone then - if other_card.base.suit == 'Spades' then - instrument = 'bunc_spade' - elseif other_card.base.suit == 'Clubs' then - instrument = 'bunc_club' - elseif other_card.base.suit == 'Hearts' then - instrument = 'bunc_heart' - elseif other_card.base.suit == 'Diamonds' then - instrument = 'bunc_diamond' - elseif other_card.base.suit == 'bunc_Fleurons' then - instrument = 'bunc_fleuron' - elseif other_card.base.suit == 'bunc_Halberds' then - instrument = 'bunc_halberd' - end - event({trigger = 'after', func = function() play_sound(instrument, calculate_pitch(other_card:get_id()), 2.0) return true end}) - else + if SMODS.has_no_rank(other_card) then event({trigger = 'after', func = function() play_sound(instrument, 1.0, 2.0) return true end}) + else + -- For a theoretical suitless card with a rank + if not SMODS.has_no_suit(other_card) then + if other_card.base.suit == 'Spades' then + instrument = 'bunc_spade' + elseif other_card.base.suit == 'Clubs' then + instrument = 'bunc_club' + elseif other_card.base.suit == 'Hearts' then + instrument = 'bunc_heart' + elseif other_card.base.suit == 'Diamonds' then + instrument = 'bunc_diamond' + elseif other_card.base.suit == 'bunc_Fleurons' then + instrument = 'bunc_fleuron' + elseif other_card.base.suit == 'bunc_Halberds' then + instrument = 'bunc_halberd' + elseif other_card.base.suit == 'paperback_Stars' then + instrument = 'bunc_paperback_star' + elseif other_card.base.suit == 'paperback_Crowns' then + instrument = 'bunc_paperback_crown' + elseif other_card.base.suit == 'minty_3s' then + instrument = 'bunc_minty_3' + end + end + event({trigger = 'after', func = function() play_sound(instrument, calculate_pitch(other_card:get_id()), 2.0 * G.SETTINGS.SOUND.bunc_stylophone_volume / 100) return true end}) end end if context.individual and context.cardarea == G.play then - play_stylophone(context.other_card) - if context.other_card.config.center ~= G.P_CENTERS.m_stone then + if G.SETTINGS.SOUND.bunc_stylophone_volume > 0 then + play_stylophone(context.other_card) + end + if not SMODS.has_no_rank(context.other_card) then return { mult = context.other_card:get_id() * card.ability.extra.x, card = card } end end - if context.click and context.other_card.area == G.hand then + if context.click and context.other_card.area == G.hand and G.SETTINGS.SOUND.bunc_stylophone_volume > 0 then extra_juice(card) play_stylophone(context.other_card) end end }) -create_joker({ -- Kite Experiment +bunc_define_joker({ -- Kite Experiment name = 'Kite Experiment', position = 61, vars = {{odds = 2}, {cards_rescored = {}}}, custom_vars = function(self, info_queue, card) - local vars info_queue[#info_queue+1] = G.P_CENTERS.m_bunc_copper - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_kite_experiment")} return {vars = vars} end, rarity = 'Uncommon', cost = 6, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, custom_in_pool = function() local condition = false @@ -3988,7 +4322,7 @@ create_joker({ -- Kite Experiment end end - if condition and pseudorandom('kite_experiment'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if condition and SMODS.pseudorandom_probability(card, 'kite_experiment'..G.SEED, 1, card.ability.extra.odds, 'bunc_kite_experiment') then context.rescore_cards[1].config.copper_rescored_times = context.rescore_cards[1].config.copper_rescored_times - 1 table.insert(card.ability.extra.cards_rescored, context.rescore_cards[1]) return { @@ -4003,7 +4337,7 @@ create_joker({ -- Kite Experiment end }) -create_joker({ -- Robot +bunc_define_joker({ -- Robot name = 'Robot', position = 62, vars = {{bonus = 3}, {mult = 0}}, custom_vars = function(self, info_queue, card) @@ -4035,12 +4369,7 @@ create_joker({ -- Robot if context.joker_main then if card.ability.extra.mult ~= 0 then return { - message = localize { - type = 'variable', - key = 'a_mult', - vars = { card.ability.extra.mult } - }, - mult_mod = card.ability.extra.mult, + mult = card.ability.extra.mult, card = card } end @@ -4048,7 +4377,7 @@ create_joker({ -- Robot end }) -create_joker({ -- Hardtack +bunc_define_joker({ -- Hardtack name = 'Hardtack', position = 63, custom_vars = function(self, info_queue, card) info_queue[#info_queue+1] = G.P_CENTERS.m_bunc_cracker @@ -4067,7 +4396,7 @@ create_joker({ -- Hardtack end }) -create_joker({ -- Pica +bunc_define_joker({ -- Pica name = 'Pica', position = 64, custom_vars = function(self, info_queue, card) info_queue[#info_queue+1] = G.P_CENTERS.m_bunc_cracker @@ -4088,79 +4417,75 @@ create_joker({ -- Pica -- Exotic Jokers -create_joker({ -- Zealous +bunc_define_joker({ -- Zealous type = 'Exotic', name = 'Zealous', position = 1, custom_vars = function(self, info_queue, card) return {vars = {card.ability.t_mult}} end, custom_config = {t_mult = 10, type = 'bunc_Spectrum'}, rarity = 'Common', cost = 3, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true }) -create_joker({ -- Lurid +bunc_define_joker({ -- Lurid type = 'Exotic', name = 'Lurid', position = 2, custom_vars = function(self, info_queue, card) return {vars = {card.ability.t_chips}} end, custom_config = {t_chips = 80, type = 'bunc_Spectrum'}, rarity = 'Common', cost = 3, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true }) -create_joker({ -- Envious +bunc_define_joker({ -- Envious type = 'Exotic', name = 'Envious', position = 3, vars = {{s_mult = 6}, {suit = 'bunc_Fleurons'}}, rarity = 'Common', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, effect = 'Suit Mult' }) -create_joker({ -- Proud +bunc_define_joker({ -- Proud type = 'Exotic', name = 'Proud', position = 4, vars = {{s_mult = 6}, {suit = 'bunc_Halberds'}}, rarity = 'Common', cost = 5, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, effect = 'Suit Mult' }) -create_joker({ -- Wishalloy +bunc_define_joker({ -- Wishalloy type = 'Exotic', name = 'Wishalloy', position = 5, vars = {{odds = 7}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_wishalloy")} return {vars = vars} end, rarity = 'Uncommon', cost = 7, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.individual and context.cardarea == G.play and context.other_card:is_suit('bunc_Fleurons') then - if pseudorandom('wishalloy'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if SMODS.pseudorandom_probability(card, 'wishalloy'..G.SEED, 1, card.ability.extra.odds, 'bunc_wishalloy') then local value = context.other_card:get_chip_bonus() - ease_dollars(value) - forced_message('$'..value, context.other_card, G.C.MONEY, true, card) + return { + dollars = value, + } end end end }) -create_joker({ -- Unobtanium +bunc_define_joker({ -- Unobtanium type = 'Exotic', name = 'Unobtanium', position = 6, vars = {{chips = 30}, {mult = 6}}, rarity = 'Uncommon', cost = 7, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.individual and context.cardarea == G.play and context.other_card:is_suit('bunc_Halberds') then @@ -4178,17 +4503,17 @@ create_joker({ -- Unobtanium end }) -create_joker({ -- Dynasty +bunc_define_joker({ -- Dynasty type = 'Exotic', name = 'Dynasty', position = 7, custom_vars = function(self, info_queue, card) return {vars = {card.ability.x_mult}} end, custom_config = {Xmult = 5, type = 'bunc_Spectrum'}, rarity = 'Rare', cost = 8, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true }) -create_joker({ -- Magic Wand +bunc_define_joker({ -- Magic Wand type = 'Exotic', name = 'Magic Wand', position = 8, vars = {{bonus = 3}, {mult = 0}}, @@ -4201,8 +4526,10 @@ create_joker({ -- Magic Wand elseif context.after and context.poker_hands ~= nil and not next(context.poker_hands['bunc_Spectrum']) and not context.blueprint then if card.ability.extra.mult ~= 0 then card.ability.extra.mult = 0 - - forced_message(localize('k_reset'), card, G.C.RED) + return { + message = localize('k_reset'), + colour = G.C.RED + } end end @@ -4217,50 +4544,59 @@ create_joker({ -- Magic Wand end }) -create_joker({ -- Starfruit +bunc_define_joker({ -- Starfruit type = 'Exotic', name = 'Starfruit', position = 9, vars = {{odds = 4}}, custom_vars = function(self, info_queue, card) - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_starfruit")} return {vars = vars} end, rarity = 'Uncommon', cost = 5, - blueprint = false, eternal = false, + blueprint = false, eternal = false, perishable = true, unlocked = true, + pools = { + Food = true + }, calculate = function(self, card, context) if context.before and context.poker_hands ~= nil and next(context.poker_hands['bunc_Spectrum']) and not context.blueprint then - forced_message(localize('k_level_up_ex'), card, G.C.RED, true) - level_up_hand(card, context.scoring_name, false, 1) + return { + message = localize('k_level_up_ex'), + colour = G.C.RED, + func = function() + level_up_hand(card, context.scoring_name, false, 1) + end + } end if context.end_of_round and not context.other_card and not context.blueprint then - if pseudorandom('starfruit'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then - - forced_message(localize('k_eaten_ex'), card, G.C.FILTER, true) - card:start_dissolve() - + if SMODS.pseudorandom_probability(card, 'starfruit'..G.SEED, 1, card.ability.extra.odds, 'bunc_starfruit') then + event({func = function() + card:start_dissolve() + return true + end}) + return { + message = localize('k_eaten_ex'), + G.C.FILTER + } else - - forced_message(localize('k_safe_ex'), card, nil, true) - card.ability.extra.condition = false - + return { + message = localize('k_safe_ex') + } end end end }) -create_joker({ -- Fondue +bunc_define_joker({ -- Fondue type = 'Exotic', name = 'Fondue', position = 10, rarity = 'Rare', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true, + pools = { + Food = true + }, calculate = function(self, card, context) if context.after and G.GAME.current_round.hands_played == 0 and context.scoring_hand and not context.blueprint then enable_exotics() @@ -4282,23 +4618,47 @@ create_joker({ -- Fondue end }) -create_joker({ -- Myopia +BUNCOMOD.funcs.myopia_check = function (card, suit) + if not next(SMODS.find_card('j_bunc_myopia')) then + return false + end + if card.base.suit == 'Spades' and ((card.base.suit == 'Spades') == (suit == 'Spades' or suit == 'bunc_Halberds')) then + return true + end + if card.base.suit == 'Clubs' and ((card.base.suit == 'Clubs') == (suit == 'Clubs' or suit == 'bunc_Halberds')) then + return true + end + return false +end +bunc_define_joker({ -- Myopia type = 'Exotic', name = 'Myopia', position = 11, rarity = 'Uncommon', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true }) -create_joker({ -- Astigmatism +BUNCOMOD.funcs.astigmatism_check = function (card, suit) + if not next(SMODS.find_card('j_bunc_myopia')) then + return false + end + if card.base.suit == 'Hearts' and (card.base.suit == 'Hearts') == (suit == 'Hearts' or suit == 'bunc_Fleurons') then + return true + end + if card.base.suit == 'Diamonds' and (card.base.suit == 'Diamonds') == (suit == 'Diamonds' or suit == 'bunc_Fleurons') then + return true + end + return false +end +bunc_define_joker({ -- Astigmatism type = 'Exotic', name = 'Astigmatism', position = 12, rarity = 'Uncommon', cost = 8, - blueprint = false, eternal = true, + blueprint = false, eternal = true, perishable = true, unlocked = true }) -create_joker({ -- ROYGBIV +bunc_define_joker({ -- ROYGBIV type = 'Exotic', name = 'ROYGBIV', position = 13, vars = {{odds = 7}}, @@ -4306,20 +4666,15 @@ create_joker({ -- ROYGBIV info_queue[#info_queue+1] = G.P_CENTERS.e_polychrome - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_roygbiv")} return {vars = vars} end, rarity = 'Uncommon', cost = 8, - blueprint = true, eternal = true, + blueprint = true, eternal = true, perishable = true, unlocked = true, calculate = function(self, card, context) if context.before and context.poker_hands ~= nil and next(context.poker_hands['bunc_Spectrum']) and context.scoring_hand and not context.blueprint then - if pseudorandom('roygbiv'..G.SEED) < G.GAME.probabilities.normal / card.ability.extra.odds then + if SMODS.pseudorandom_probability(card, 'roygbiv'..G.SEED, 1, card.ability.extra.odds, 'bunc_roygbiv') then if context.scoring_hand then local cards = {} @@ -4331,11 +4686,18 @@ create_joker({ -- ROYGBIV end if cards and #cards > 0 then - forced_message('+'..localize{type = 'name_text', key = 'e_polychrome', set = 'Edition'}, card) - for i = 1, #cards do - local other_card = cards[i] - other_card:set_edition({polychrome = true}) - end + event({func = function() + for i = 1, #cards do + local other_card = cards[i] + other_card:set_edition({polychrome = true}, true, true) + other_card:juice_up() + end + play_sound('polychrome1', 1.2, 0.7) + return true + end}) + return { + message = '+'..localize{type = 'name_text', key = 'e_polychrome', set = 'Edition'} + } end end end @@ -4345,7 +4707,7 @@ create_joker({ -- ROYGBIV -- Legendary Jokers -create_joker({ -- Rigoletto +bunc_define_joker({ -- Rigoletto type = 'Exotic', name = 'Rigoletto', position = 1, vars = {{bonus = 0.2}, {xmult = 1}, {tally = 0}}, @@ -4361,13 +4723,7 @@ create_joker({ -- Rigoletto if context.joker_main then if card.ability.extra.xmult ~= 1 then return { - Xmult_mod = card.ability.extra.xmult, - card = card, - message = localize { - type = 'variable', - key = 'a_xmult', - vars = { card.ability.extra.xmult } - } + xmult = card.ability.extra.xmult, } end end @@ -4387,112 +4743,16 @@ create_joker({ -- Rigoletto -- Tarots -local thoth_unlock_amount = 100 - -function create_UIBox_thoth_tarots_unlock(card_centers) - G.your_collection = CardArea( - 0, - 0, - 2.85 * G.CARD_W, - 0.75 * G.CARD_H, - {card_limit = 4, type = 'title', highlight_limit = 0} - ) - - for i, card_center in ipairs(card_centers) do - local card = Card(G.your_collection.T.x + G.your_collection.T.w/2 - G.CARD_W/2, G.your_collection.T.y, G.CARD_W, G.CARD_H, G.P_CARDS.empty, card_center, {bypass_discovery_center = true, bypass_discovery_ui = true}) - card.states.click.can = false - card.states.visible = false - G.your_collection:emplace(card) - event({ - timer = 'REAL', - blockable = false, - blocking = false, - trigger = 'after', - delay = 0.1 * i, - func = (function() - card:start_materialize({G.C.SECONDARY_SET.Tarot}) - return true end) - }) - end - - local criteria = {} - - localize{ - type = 'descriptions', - key = 'deck_locked_discover', - set = "Other", - nodes = criteria, - vars = {thoth_unlock_amount} - } - - local criteria_cols = {} - for k, v in ipairs(criteria) do - if k > 1 then criteria_cols[#criteria_cols+1] = {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={}} end - criteria_cols[#criteria_cols+1] = {n=G.UIT.R, config={align = "cm", padding = 0}, nodes=v} - end - - local t = create_UIBox_generic_options({padding = 0,back_label = localize('b_continue'), no_pip = true, snap_back = true, back_func = 'continue_unlock', minw = 4.5, contents = { - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.1}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.2}, nodes={ - {n=G.UIT.O, config={object = DynaText({string = {{string = localize('bunc_thoth_tarots'), suffix = ' '..localize('k_unlocked_ex'), outer_colour = G.C.UI.TEXT_LIGHT}}, colours = {G.C.SECONDARY_SET.Tarot},shadow = true, rotate = true, float = true, scale = 0.7, pop_in = 0.1})}} - }}, - {n=G.UIT.R, config={align = "cm", padding = 0.3, draw_layer = 1}, nodes={ - {n=G.UIT.O, config={object = G.your_collection}} - }}, - {n=G.UIT.R, config={align = "cm", padding = 0, draw_layer = 2}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.0}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.05, emboss = 0.05, colour = G.C.WHITE, r = 0.1}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.05, emboss = 0.05, colour = G.C.WHITE, r = 0.1}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes=criteria_cols} - }} - }} - }} - }} - }} - }} - }}) - return t -end - --- SMODS.Keybind{ --- key_pressed = 'l', --- event = 'pressed', --- action = function(self) --- G.E_MANAGER:add_event(Event({ --- trigger = 'immediate', --- no_delete = true, --- func = (function() --- if not G.OVERLAY_MENU then --- G.SETTINGS.paused = true --- G.FUNCS.overlay_menu{ --- definition = create_UIBox_thoth_tarots_unlock({ --- G.P_CENTERS['c_bunc_adjustment'], --- G.P_CENTERS['c_bunc_art'], --- G.P_CENTERS['c_bunc_universe'], --- G.P_CENTERS['c_bunc_lust'] --- }), --- } --- play_sound('foil1', 0.7, 0.3) --- play_sound('gong', 1.4, 0.15) --- return true --- end --- end) --- }), 'unlock') --- end --- } - SMODS.Atlas({key = 'bunco_tarots', path = 'Consumables/Tarots.png', px = 71, py = 95}) SMODS.Atlas({key = 'bunco_tarots_exotic', path = 'Consumables/TarotsExotic.png', px = 71, py = 95}) SMODS.Consumable{ -- Adjustment set = 'Tarot', atlas = 'bunco_tarots', key = 'adjustment', - --unlocked = false, effect = 'Enhance', config = {mod_conv = 'm_bunc_cracker', max_highlighted = 2}, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), set_card_type_badge = function(self, card, badges) badges[1] = create_badge(G.localization.misc.dictionary.bunc_thoth_tarot, get_type_colour(self or card.config, card), nil, 1.2) @@ -4502,19 +4762,15 @@ SMODS.Consumable{ -- Adjustment info_queue[#info_queue+1] = G.P_CENTERS.m_bunc_cracker return {vars = {self.config.max_highlighted, localize{type = 'name_text', set = 'Enhanced', key = self.config.mod_conv}}} end, - locked_loc_vars = function(self, info_queue, card) - return {vars = {thoth_unlock_amount}} - end } SMODS.Consumable{ -- The Art set = 'Tarot', atlas = 'bunco_tarots', key = 'art', - --unlocked = false, effect = 'Enhance', config = {mod_conv = 'm_bunc_copper', max_highlighted = 2}, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), set_card_type_badge = function(self, card, badges) badges[1] = create_badge(G.localization.misc.dictionary.bunc_thoth_tarot, get_type_colour(self or card.config, card), nil, 1.2) @@ -4524,18 +4780,14 @@ SMODS.Consumable{ -- The Art info_queue[#info_queue+1] = G.P_CENTERS.m_bunc_copper return {vars = {self.config.max_highlighted, localize{type = 'name_text', set = 'Enhanced', key = self.config.mod_conv}}} end, - locked_loc_vars = function(self, info_queue, card) - return {vars = {thoth_unlock_amount}} - end } SMODS.Consumable{ -- The Universe set = 'Tarot', atlas = 'bunco_tarots', key = 'universe', - --unlocked = false, config = {max_highlighted = 3}, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), set_card_type_badge = function(self, card, badges) badges[1] = create_badge(G.localization.misc.dictionary.bunc_thoth_tarot, get_type_colour(self or card.config, card), nil, 1.2) @@ -4544,9 +4796,6 @@ SMODS.Consumable{ -- The Universe loc_vars = function(self, info_queue) return {vars = {self.config.max_highlighted}} end, - locked_loc_vars = function(self, info_queue, card) - return {vars = {thoth_unlock_amount}} - end, can_use = function(self, card) if G.hand and (#G.hand.highlighted >= 1) and (#G.hand.highlighted <= self.config.max_highlighted) then @@ -4594,10 +4843,9 @@ SMODS.Consumable{ -- The Universe SMODS.Consumable{ -- Lust set = 'Tarot', atlas = 'bunco_tarots', key = 'lust', - --unlocked = false, config = {bonus = 1, limit = 52}, - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), set_card_type_badge = function(self, card, badges) badges[1] = create_badge(G.localization.misc.dictionary.bunc_thoth_tarot, get_type_colour(self or card.config, card), nil, 1.2) @@ -4610,9 +4858,6 @@ SMODS.Consumable{ -- Lust end return {vars = {self.config.bonus, self.config.limit, (reward <= self.config.limit) and reward or self.config.limit}} end, - locked_loc_vars = function(self, info_queue, card) - return {vars = {thoth_unlock_amount}} - end, can_use = function(self, card) if G.hand and G.hand.cards and (#G.hand.cards > 0) then @@ -4634,7 +4879,7 @@ SMODS.Consumable{ -- The Sky end, config = {max_highlighted = 3, suit_conv = 'bunc_Fleurons'}, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), loc_vars = function(self) return {vars = {self.config.max_highlighted}} end, @@ -4676,7 +4921,7 @@ SMODS.Consumable{ -- The Abyss end, config = {max_highlighted = 3, suit_conv = 'bunc_Halberds'}, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), loc_vars = function(self) return {vars = {self.config.max_highlighted}} end, @@ -4722,7 +4967,7 @@ SMODS.Consumable{ -- Quaoar end, config = {hand_type = 'bunc_Spectrum', softlock = true}, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), generate_ui = 0, process_loc_text = function(self) @@ -4741,7 +4986,7 @@ SMODS.Consumable{ -- Haumea end, config = {hand_type = 'bunc_Straight Spectrum', softlock = true}, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), generate_ui = 0, process_loc_text = function(self) @@ -4760,7 +5005,7 @@ SMODS.Consumable{ -- Sedna end, config = {hand_type = 'bunc_Spectrum House', softlock = true}, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), generate_ui = 0, process_loc_text = function(self) @@ -4779,7 +5024,7 @@ SMODS.Consumable{ -- Makemake end, config = {hand_type = 'bunc_Spectrum Five', softlock = true}, - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), generate_ui = 0, process_loc_text = function(self) @@ -4799,7 +5044,7 @@ SMODS.Consumable{ -- Cleanse key = 'cleanse', config = {max_highlighted = 3}, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), loc_vars = function(self, info_queue) info_queue[#info_queue+1] = G.P_CENTERS.e_bunc_fluorescent @@ -4876,15 +5121,7 @@ function link_cards(cards, source, ignore_groups) G.PROFILES[G.SETTINGS.profile].cards_linked = (G.PROFILES[G.SETTINGS.profile].cards_linked or 0) + 1 if G.PROFILES[G.SETTINGS.profile].cards_linked then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'link_cards', links_total = G.PROFILES[G.SETTINGS.profile].cards_linked}) - end - end + check_for_unlock({type = 'link_cards', links_total = G.PROFILES[G.SETTINGS.profile].cards_linked}) end end @@ -4905,90 +5142,51 @@ SMODS.DrawStep({ end }) --- Pseudoinjections for Polyminoes - -local original_draw_from_deck_to_hand = G.FUNCS.draw_from_deck_to_hand -G.FUNCS.draw_from_deck_to_hand = function(e) - original_draw_from_deck_to_hand(e) - - event({delay = 0.0, trigger = 'before', func = function() - - local groups = {} - local cards_from_groups = {} - - -- Check for linked cards in the G.hand - - for i = 1, #G.hand.cards do - local card = G.hand.cards[i] - if card.ability.group then - local can_insert = true - - for _, group in ipairs(groups) do - if group.id == card.ability.group.id then - can_insert = false - end - end - - if can_insert then - table.insert(groups, card.ability.group) - end - end - end - - local m = 1 - for _, group in ipairs(groups) do - +CardArea.bunc_original_cardarea_emplace = CardArea.emplace +function CardArea:emplace(card, location, stay_flipped) + local ret = self:bunc_original_cardarea_emplace(card, location, stay_flipped) + if self == G.hand and card.ability.group and card.ability.group.id then + event({trigger = 'immediate', func = function() local n = 0 while n < #G.deck.cards do - local card = G.deck.cards[#G.deck.cards - n] - - if card.ability.group and (card.ability.group.id == group.id) then - cards_from_groups[m] = card - m = m + 1 - end - - n = n + 1 - end - end - - local drawn = false + local other_card = G.deck.cards[#G.deck.cards - n] - for i = 1, #cards_from_groups do - local n = 0 - while n < #G.deck.cards do - local card = G.deck.cards[#G.deck.cards - n] + if other_card == card or other_card.area == G.hand or not other_card then - if card == cards_from_groups[i] then - draw_card(G.deck, G.hand, i * 100 / #cards_from_groups, 'up', true, card) - drawn = true + else + if other_card.ability.group and other_card.ability.group.id == card.ability.group.id and other_card.area == G.deck then + event({trigger = 'immediate', func = function() + draw_card(G.deck, G.hand, percent, 'up', true, other_card) + return true + end}) + end end n = n + 1 end - end - - if groups and drawn then - if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_games_collector' and not v.debuff then - v:calculate_joker({groups_drawn = groups}) - end - end - end - end - return true end}) + event({trigger = 'immediate', func = function() + SMODS.calculate_context({bunc_groups_drawn = {card.ability.group.id}}) + return true + end}) + return true + end}) + end + return ret end -local original_add_to_highlighted = CardArea.add_to_highlighted +local bunc_original_add_to_highlighted = CardArea.add_to_highlighted function CardArea:add_to_highlighted(card, silent) if G.STATE ~= G.STATES.DRAW_TO_HAND and not G.DRAWING_CARDS then + local original_highlited_limit = self.config.highlighted_limit + self.config.highlighted_limit = G.GAME.THE_8_BYPASS and self.config.type == "hand" and math.huge or self.config.highlighted_limit + if card.ability.group and self then local group = {} for i = 1, #self.cards do if self.cards[i].ability.group and self.cards[i].ability.group.id == card.ability.group.id then - if self.config.type == 'hand' and not self.cards[i].highlighted then + if self.config.type == 'hand' and not self.cards[i].highlighted and not (card ~= self.cards[i] and self.cards[i].edition and self.cards[i].edition.bunc_fluorescent) then table.insert(group, self.cards[i]) end end @@ -5005,16 +5203,18 @@ function CardArea:add_to_highlighted(card, silent) end else - original_add_to_highlighted(self, group[i], (silent == nil) and false or silent) + bunc_original_add_to_highlighted(self, group[i], (silent == nil) and false or silent) end end else - original_add_to_highlighted(self, card, silent) + bunc_original_add_to_highlighted(self, card, silent) end + + self.config.highlighted_limit = original_highlited_limit end end -local original_remove_from_highlighted = CardArea.remove_from_highlighted +local bunc_original_remove_from_highlighted = CardArea.remove_from_highlighted function CardArea:remove_from_highlighted(card, force) if card.ability.group and self and not force then local group = {} @@ -5033,12 +5233,58 @@ function CardArea:remove_from_highlighted(card, force) end group[i].highlighted = false if i == #group then - original_remove_from_highlighted(self, group[i], force) + bunc_original_remove_from_highlighted(self, group[i], force) end end else - original_remove_from_highlighted(self, card, force) + bunc_original_remove_from_highlighted(self, card, force) + end +end + +-- Allows for a group of over 5 cards to be played/discarded +local bunc_original_G_FUNCS_can_play = G.FUNCS.can_play +G.FUNCS.can_play = function(e) + local group_size = 0 + + if G.hand and G.hand.highlighted then + for i = 1, #G.hand.highlighted do + if G.hand.highlighted[i].ability.group then + group_size = group_size + 1 + end + end + end + + local original_play_limit = G.GAME.starting_params.play_limit + + G.GAME.starting_params.play_limit = math.max(G.GAME.starting_params.play_limit, group_size) + + local ret = bunc_original_G_FUNCS_can_play(e) + + G.GAME.starting_params.play_limit = original_play_limit + + return ret +end +local bunc_original_G_FUNCS_can_discard = G.FUNCS.can_discard +G.FUNCS.can_discard = function(e) + local group_size = 0 + + if G.hand and G.hand.highlighted then + for i = 1, #G.hand.highlighted do + if G.hand.highlighted[i].ability.group then + group_size = group_size + 1 + end + end end + + local original_discard_limit = G.GAME.starting_params.discard_limit + + G.GAME.starting_params.discard_limit = math.max(G.GAME.starting_params.discard_limit, group_size) + + local ret = bunc_original_G_FUNCS_can_discard(e) + + G.GAME.starting_params.discard_limit = original_discard_limit + + return ret end -- Polyminoes @@ -5049,14 +5295,14 @@ SMODS.Atlas({key = 'bunco_polyminoes', path = 'Consumables/Polyminoes.png', px = SMODS.ConsumableType{ key = 'Polymino', primary_colour = HEX('424e54'), - secondary_colour = G.C.BUNCO_VIRTUAL_DARK, + secondary_colour = HEX('4fb66f'), collection_rows = {4, 4} } SMODS.UndiscoveredSprite{ key = 'Polymino', atlas = 'bunco_polyminoes_undiscovered', - pos = coordinate(1) + pos = coordinate_from_atlas_index(1) } SMODS.Consumable{ -- The I @@ -5120,7 +5366,7 @@ SMODS.Consumable{ -- The I card:juice_up(0.3, 0.5) end, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), } SMODS.Consumable{ -- The O @@ -5200,7 +5446,7 @@ SMODS.Consumable{ -- The O card:juice_up(0.3, 0.5) end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), } SMODS.Consumable{ -- The T @@ -5290,7 +5536,7 @@ SMODS.Consumable{ -- The T card:juice_up(0.3, 0.5) end, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), } SMODS.Consumable{ -- The S @@ -5382,7 +5628,7 @@ SMODS.Consumable{ -- The S card:juice_up(0.3, 0.5) end, - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), } SMODS.Consumable{ -- The Z @@ -5471,7 +5717,7 @@ SMODS.Consumable{ -- The Z card:juice_up(0.3, 0.5) end, - pos = coordinate(5), + pos = coordinate_from_atlas_index(5), } SMODS.Consumable{ -- The J @@ -5573,7 +5819,7 @@ SMODS.Consumable{ -- The J card:juice_up(0.3, 0.5) end, - pos = coordinate(6), + pos = coordinate_from_atlas_index(6), } SMODS.Consumable{ -- The L @@ -5671,7 +5917,7 @@ SMODS.Consumable{ -- The L card:juice_up(0.3, 0.5) end, - pos = coordinate(7), + pos = coordinate_from_atlas_index(7), } SMODS.Consumable{ -- The / @@ -5764,7 +6010,7 @@ SMODS.Consumable{ -- The / card:juice_up(0.3, 0.5) end, - pos = coordinate(8), + pos = coordinate_from_atlas_index(8), in_pool = function(self) return BUNCOMOD.funcs.exotic_in_pool() @@ -5809,7 +6055,7 @@ SMODS.Consumable{ -- The 8 card:juice_up(0.3, 0.5) end, - pos = coordinate(9), + pos = coordinate_from_atlas_index(9), } -- Exotic suits @@ -5878,54 +6124,63 @@ table.insert(SMODS.Suit.obj_buffer, 1, table.remove(SMODS.Suit.obj_buffer, 2)) SMODS.Atlas{key = 'bunco_resprites_enhanced_contrast', path = 'Resprites/EnhancedContrast.png', px = 71, py = 95} SMODS.Atlas{key = 'bunco_resprites_enhanced_contrast_ui', path = 'Resprites/EnhancedUIContrast.png', px = 18, py = 18} +SMODS.Atlas{key = 'bunco_paperback_enhanced_contrast', path = 'Resprites/EnhancedContrastPaperback.png', px = 71, py = 95} -SMODS.DeckSkin.add_palette(SMODS.DeckSkins['default_Spades'], { - key = 'recast_contrast', - ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace'}, - display_ranks = {'King', 'Queen', 'Jack'}, - atlas = 'bunc_bunco_resprites_enhanced_contrast', - pos_style = 'deck', - colour = HEX('5d55a6'), - suit_icon = { - atlas = 'bunc_bunco_resprites_enhanced_contrast_ui' - } -}) +-- Bunco High Contrast -SMODS.DeckSkin.add_palette(SMODS.DeckSkins['default_Hearts'], { - key = 'recast_contrast', - ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace'}, - display_ranks = {'King', 'Queen', 'Jack'}, - atlas = 'bunc_bunco_resprites_enhanced_contrast', - pos_style = 'deck', - colour = HEX('ee151b'), - suit_icon = { - atlas = 'bunc_bunco_resprites_enhanced_contrast_ui' - } -}) +local collabs = { + Hearts = {'AU', 'TBoI', 'CL', 'D2', 'BUG', 'CR'}, + Diamonds = {'DTD', 'SV', 'EG', 'XR', 'C7', 'R'}, + Clubs = {'VS', 'STS', 'PC', 'WF', 'DBD', 'FO'}, + Spades = {'TW', 'CYP', 'SK', 'DS', 'AC', 'STP'}, +} -SMODS.DeckSkin.add_palette(SMODS.DeckSkins['default_Clubs'], { - key = 'recast_contrast', - ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace'}, - display_ranks = {'King', 'Queen', 'Jack'}, - atlas = 'bunc_bunco_resprites_enhanced_contrast', - pos_style = 'deck', - colour = HEX('197f77'), - suit_icon = { - atlas = 'bunc_bunco_resprites_enhanced_contrast_ui' - } -}) +local bunc_hc_colours = { + Hearts = HEX('ee151b'), + Diamonds = HEX('e56b10'), + Spades = HEX('5d55a6'), + Clubs = HEX('197f77') +} -SMODS.DeckSkin.add_palette(SMODS.DeckSkins['default_Diamonds'], { - key = 'recast_contrast', - ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace'}, - display_ranks = {'King', 'Queen', 'Jack'}, - atlas = 'bunc_bunco_resprites_enhanced_contrast', - pos_style = 'deck', - colour = HEX('e56b10'), - suit_icon = { - atlas = 'bunc_bunco_resprites_enhanced_contrast_ui' - } -}) +for i, suit in ipairs({'Hearts', 'Diamonds', 'Clubs', 'Spades'}) do + SMODS.DeckSkin.add_palette(SMODS.DeckSkins['default_' .. suit], { + key = 'recast_contrast', + ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace', 'paperback_Apostle'}, + display_ranks = {'King', 'Queen', 'Jack'}, + atlas = 'bunc_bunco_resprites_enhanced_contrast', + pos_style = { + fallback_style = "deck", + ['paperback_Apostle'] = { pos = {x = 0, y = ({0, 2, 1, 3})[i]}, atlas = 'bunc_bunco_paperback_enhanced_contrast'}, + }, + colour = bunc_hc_colours[suit], + suit_icon = { + atlas = 'bunc_bunco_resprites_enhanced_contrast_ui', + pos = {x = i - 1, y = 0} + }, + }) + + for _, collab in pairs(collabs[suit]) do + SMODS.Atlas{key = 'collab_'.. collab ..'_alt_hc', path = 'Resprites/collabs/collab_' .. collab .. '_EnhancedContrast.png', px = 71, py = 95} + SMODS.DeckSkin.add_palette(SMODS.DeckSkins['collab_' .. collab], { + key = 'recast_contrast', + ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace', 'paperback_Apostle'}, + display_ranks = {'King', 'Queen', 'Jack'}, + atlas = 'bunc_bunco_resprites_enhanced_contrast', + pos_style = { + fallback_style = "deck", + ['paperback_Apostle'] = { pos = {x = 0, y = ({0, 2, 1, 3})[i]}, atlas = 'bunc_bunco_paperback_enhanced_contrast'}, + ['Jack'] = { pos = {x = 0, y = 0}, atlas = 'bunc_collab_'.. collab ..'_alt_hc'}, + ['Queen'] = { pos = {x = 1, y = 0}, atlas = 'bunc_collab_'.. collab ..'_alt_hc'}, + ['King'] = { pos = {x = 2, y = 0}, atlas = 'bunc_collab_'.. collab ..'_alt_hc'}, + }, + colour = bunc_hc_colours[suit], + suit_icon = { + atlas = 'bunc_bunco_resprites_enhanced_contrast_ui', + pos = {x = i - 1, y = 0} + }, + }) + end +end SMODS.Atlas({key = 'bunco_skins_duckgame_lc', path = 'Skins/SkinDuckGameLC.png', px = 71, py = 95}) SMODS.Atlas({key = 'bunco_skins_duckgame_hc', path = 'Skins/SkinDuckGameHC.png', px = 71, py = 95}) @@ -6024,12 +6279,12 @@ SMODS.DeckSkin{ function disable_exotics() if G.GAME then G.GAME.Exotic = false end - say('Triggered Exotic System disabling.') + -- say('Triggered Exotic System disabling.') end function enable_exotics() if G.GAME then G.GAME.Exotic = true end - say('Triggered Exotic System enabling.') + -- say('Triggered Exotic System enabling.') end -- Poker hands @@ -6046,6 +6301,7 @@ SMODS.PokerHandPart{ -- Spectrum base (Referenced from SixSuits) -- < 5 hand cant be a spectrum if #hand < 5 then return {} end + local extraCardsAllowed = #hand - 5 local nonwilds = {} for i = 1, #hand do local cardsuits = {} @@ -6056,13 +6312,17 @@ SMODS.PokerHandPart{ -- Spectrum base (Referenced from SixSuits) end end - -- if somehow no suits: spectrum is impossible + -- a card with no suit can't contribute to a spectrum if #cardsuits == 0 then - return {} + if extraCardsAllowed <= 0 then return {} end + extraCardsAllowed = extraCardsAllowed - 1 -- if only 1 suit: can be handled immediately elseif #cardsuits == 1 then - -- if suit is already present, not a spectrum, otherwise remove suit from "not yet used suits" - if suits[cardsuits[1]] == 0 then return {} end + -- if suit is already present, this card isn't contributing; otherwise remove suit from "not yet used suits" + if suits[cardsuits[1]] == 0 then + if extraCardsAllowed <= 0 then return {} end + extraCardsAllowed = extraCardsAllowed - 1 + end suits[cardsuits[1]] = 0 -- add all cards with 2-4 suits to a table to be looked at elseif #cardsuits < 5 then @@ -6208,53 +6468,43 @@ SMODS.PokerHand{ -- Spectrum Five (Referenced from SixSuits) SMODS.PokerHandPart{ -- Deal base key = 'deal', func = function(hand) + if #hand < 5 then + return {} + end local current_ranks = {} local deals = {} - for i = 1, #hand do - table.insert(current_ranks, hand[i]:get_id()) - end - if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_registration_plate' then - table.insert(deals, v.ability.extra.ranks) - end - end + for _, v in ipairs(SMODS.find_card("j_bunc_registration_plate")) do + table.insert(deals, v.ability.extra.ranks) end - local count1 = {} - for _, value in ipairs(current_ranks) do - if count1[value] then - count1[value] = count1[value] + 1 - else - count1[value] = 1 + for i, deal in ipairs(deals) do + local deal_count = {} -- Counts # of each rank in deal requirement + local hand_count = {} -- Counts # of each rank in the selected cards + + for _, rank in ipairs(deal) do + hand_count[rank] = 0 + deal_count[rank] = (deal_count[rank] or 0) + 1 end - end - for i, deal in ipairs(deals) do - local count2 = {} - for _, value in ipairs(deal) do - if count2[value] then - count2[value] = count2[value] + 1 - else - count2[value] = 1 + for j = 1, #hand do + local match = false -- Every card must match a rank. + for rank, _ in pairs(deal_count) do + if hand[j]:get_id() == rank then + match = true + hand_count[rank] = hand_count[rank] + 1 + end + end + if not match then + return {} end end local equal = true - for key, count in pairs(count1) do - if count2[key] ~= count then - equal = false - break - end - end - if equal then - for key, count in pairs(count2) do - if count1[key] ~= count then - equal = false - break - end + for rank, count in pairs(deal_count) do + if hand_count[rank] < count then -- If deal requires more of a rank than in hand, mark as invalid + equal = false end end @@ -6280,8 +6530,9 @@ SMODS.PokerHandPart{ -- Deal base SMODS.PokerHand{ -- Deal key = 'Deal', - above_hand = 'Flush Five', + above_hand = 'bunc_Spectrum Five', visible = false, + no_collection = true, chips = 0, mult = 0, l_chips = 0, @@ -6296,6 +6547,33 @@ SMODS.PokerHand{ -- Deal SMODS.Atlas({key = 'bunco_blinds', path = 'Blinds/Blinds.png', px = 34, py = 34, frames = 21, atlas_table = 'ANIMATION_ATLAS'}) SMODS.Atlas({key = 'bunco_blinds_finisher', path = 'Blinds/BlindsFinisher.png', px = 34, py = 34, frames = 21, atlas_table = 'ANIMATION_ATLAS'}) +BUNCOMOD.funcs.bunc_refresh_boss_blind = function () + if G.GAME.blind.boss or not G.blind_select_opts then return end + + local par = G.blind_select_opts.boss.parent + if par and par.config.object then + G.blind_select_opts.boss:remove() + G.blind_select_opts.boss = UIBox{ + T = {par.T.x, 0, 0, 0}, + definition = { n = G.UIT.ROOT, config = { align = "cm", colour = G.C.CLEAR }, nodes = { + UIBox_dyn_container({ create_UIBox_blind_choice('Boss') }, false, get_blind_main_colour('Boss'), mix_colours(G.C.BLACK, get_blind_main_colour('Boss'), 0.8)) + } }, + config = { + align = "bmi", + offset = { + x = 0, + y = G.blind_select_opts.boss.alignment.offset.y + }, + major = par, + xy_bond = 'Weak' + } + } + par.config.object = G.blind_select_opts.boss + par.config.object:recalculate() + G.blind_select_opts.boss.parent = par + -- G.blind_select_opts.boss.alignment.offset.y = -0.2 + end +end SMODS.Blind{ -- The Paling key = 'paling', @@ -6341,7 +6619,7 @@ SMODS.Blind{ -- The Tine end, recalc_debuff = function(self, card, from_blind) - if not G.GAME.blind.disabled and card.area ~= G.jokers and card.config.center ~= G.P_CENTERS.m_stone then + if not G.GAME.blind.disabled and card.area ~= G.jokers and not SMODS.has_no_rank(card) then if card.base.value == G.GAME.current_round.most_played_rank then card:set_debuff(true) return true @@ -6420,8 +6698,8 @@ SMODS.Blind{ -- The Flame boss = {min = 3}, recalc_debuff = function(self, card, from_blind) - if not G.GAME.blind.disabled and card.area ~= G.jokers then - if card.config.center ~= G.P_CENTERS.c_base then + if not G.GAME.blind.disabled and card.area ~= G.jokers and card.area ~= G.consumeables then + if card.config.center.set == "Enhanced" then card:set_debuff(true) return true end @@ -6441,6 +6719,9 @@ SMODS.Blind{ -- The Mask vars = {}, loc_vars = function(self) + G.GAME.current_round.most_played_poker_hand = G.GAME.current_round.most_played_poker_hand or "High Card" + G.GAME.current_round.least_played_poker_hand = G.GAME.current_round.least_played_poker_hand or "High Card" + return {vars = {localize(G.GAME.current_round.most_played_poker_hand, 'poker_hands'), localize(G.GAME.current_round.least_played_poker_hand, 'poker_hands')}} end, collection_loc_vars = function(self) @@ -6448,6 +6729,9 @@ SMODS.Blind{ -- The Mask end, modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) + G.GAME.current_round.most_played_poker_hand = G.GAME.current_round.most_played_poker_hand or "High Card" + G.GAME.current_round.least_played_poker_hand = G.GAME.current_round.least_played_poker_hand or "High Card" + if not G.GAME.blind.disabled then if G.GAME.last_hand_played == G.GAME.current_round.most_played_poker_hand then G.GAME.blind.triggered = true @@ -6457,6 +6741,16 @@ SMODS.Blind{ -- The Mask return mult, hand_chips, false end, + in_pool = function(self) + if (G.GAME.round_resets.ante >= self.boss.min) and + G.GAME.current_round.most_played_poker_hand ~= G.GAME.current_round.most_played_poker_hand + then + return true + else + return false + end + end, + boss_colour = HEX('efcca6'), pos = {y = 7}, @@ -6511,7 +6805,7 @@ SMODS.Blind{ -- The Knoll stay_flipped = function(self, area, card) if not G.GAME.blind.disabled and (area == G.hand) and - G.GAME.current_round.hands_played == 0 and G.GAME.current_round.discards_used == 0 then + G.GAME.current_round.hands_played == 0 and G.GAME.current_round.discards_used == 0 and #(G.GAME.Knoll or {}) < G.hand.config.card_limit then if G.GAME.dollars > to_big(5) then G.GAME.Knoll = G.GAME.Knoll or {} table.insert(G.GAME.Knoll, card) @@ -6543,6 +6837,10 @@ SMODS.Blind{ -- The Stone key = 'stone', boss = {min = 4}, + bunc_blind_amount_display = function(self, blind, base_blind_amount, mult) + return base_blind_amount * (mult + math.floor(to_number(G.GAME.dollars) / 10)) + end, + set_blind = function(self, reset, silent) if not reset then G.GAME.blind.original_chips = G.GAME.blind.chips @@ -6585,10 +6883,36 @@ SMODS.Blind{ -- The Stone atlas = 'bunco_blinds' } +local bunc_add_tag_ref = add_tag +function add_tag(_tag) + local ret = bunc_add_tag_ref(_tag) + if G.GAME.round_resets.blind_choices.Boss == "bl_bunc_sand" then + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = function() + BUNCOMOD.funcs.bunc_refresh_boss_blind() + return true + end + })) + end + return ret +end +local bunc_tag_remove_ref = Tag.remove +function Tag:remove() + local ret = bunc_tag_remove_ref(self) + if G.GAME.round_resets.blind_choices.Boss == "bl_bunc_sand" then + BUNCOMOD.funcs.bunc_refresh_boss_blind() + end + return ret +end SMODS.Blind{ -- The Sand key = 'sand', boss = {min = 4}, + bunc_blind_amount_display = function(self, blind, base_blind_amount, mult) + return base_blind_amount * (mult + #G.HUD_tags) + end, + set_blind = function(self, reset, silent) if not reset then G.GAME.blind.original_chips = G.GAME.blind.chips @@ -6720,12 +7044,16 @@ SMODS.Blind{ -- The Wind boss = {min = 6}, drawn_to_hand = function(self) - if not G.GAME.blind.disabled and G.GAME.current_round.hands_played == 0 and G.GAME.current_round.discards_used == 0 then + if not G.GAME.blind.disabled and G.GAME.current_round.hands_played == 0 and G.GAME.current_round.discards_used == 0 and not G.GAME.bunc_bl_wind_flag then G.GAME.blind.ready = true if G.jokers and G.jokers.cards[1] then big_juice(G.jokers.cards[1]) end G.GAME.blind:wiggle() + G.GAME.bunc_bl_wind_flag = true end end, + defeat = function(self) + G.GAME.bunc_bl_wind_flag = nil + end, boss_colour = HEX('a6cdef'), @@ -6748,10 +7076,16 @@ SMODS.Blind{ -- The Prince end G.GAME.blind:wiggle() end - if not G.GAME.blind.disabled and G.GAME.current_round.hands_played > 0 then + if not G.GAME.blind.disabled and G.GAME.bunc_bl_prince_flag then G.GAME.blind:disable() end end, + press_play = function(self) + G.GAME.bunc_bl_prince_flag = true + end, + defeat = function(self) + G.GAME.bunc_bl_prince_flag = nil + end, boss_colour = HEX('f31745'), @@ -6833,7 +7167,7 @@ SMODS.Blind{ -- Chartreuse Crown card.base.suit == ('Hearts') or card.base.suit == ('Clubs') or card.base.suit == ('Diamonds') then - if card.ability.name ~= 'Stone Card' then + if not SMODS.has_no_suit(card) then card:set_debuff(true) return true end @@ -6849,7 +7183,7 @@ SMODS.Blind{ -- Chartreuse Crown for k, v in pairs(G.playing_cards) do if (v.base.suit == ('bunc_Fleurons') or v.base.suit == ('bunc_Halberds')) and - v.ability.name ~= 'Stone Card' then + not SMODS.has_no_suit(v) then exotic_amount = exotic_amount + 1 end end @@ -6874,6 +7208,13 @@ SMODS.Blind{ -- Vermilion Trident dollars = 8, + bunc_blind_amount_display = function(self, blind, base_blind_amount, mult) + return base_blind_amount * (mult + G.GAME.ante_purchases) + end, + + calculate = function(self, blind, context) + end, + set_blind = function(self, reset, silent) if not reset then G.GAME.blind.original_chips = G.GAME.blind.chips @@ -6923,7 +7264,7 @@ SMODS.Blind{ -- Indigo Tower dollars = 8, recalc_debuff = function(self, card, from_blind) - if not G.GAME.blind.disabled and card.area ~= G.jokers then + if not G.GAME.blind.disabled and card.area ~= G.jokers and card.area ~= G.consumeables then if not card.ability.played_this_ante then card:set_debuff(true) return true @@ -6954,6 +7295,10 @@ SMODS.Blind{ -- Turquoise Shield key = 'final_shield', boss = {showdown = true, min = 10, max = 10}, + bunc_blind_amount_display = function(self, blind, base_blind_amount, mult) + return base_blind_amount * mult + (G.GAME.overscore or 0) + end, + dollars = 8, set_blind = function(self, reset, silent) @@ -7019,8 +7364,8 @@ SMODS.Back{ -- Fairy apply = function() enable_exotics() end, - trigger_effect = function(self, args) - if args.context == 'eval' and G.GAME.last_blind and G.GAME.last_blind.boss then + calculate = function(self, back, context) + if context.round_eval and G.GAME.last_blind and G.GAME.last_blind.boss then event({ func = (function() local numbers = {} @@ -7046,7 +7391,7 @@ SMODS.Back{ -- Fairy end end, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_decks' } @@ -7065,7 +7410,7 @@ SMODS.Back{ -- Digital G.GAME.polymino_rate = self.config.polymino_rate end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_decks' } @@ -7083,13 +7428,16 @@ SMODS.Tag{ -- Breaking config = {type = 'round_start_bonus'}, apply = function(self, tag, context) - if context.type == self.config.type then + if context.type == self.config.type or context.type == "immediate" then if G.GAME.blind and G.GAME.blind.boss and not G.GAME.blind.disabled then tag:yep('+', G.C.BLUE, function() return true end) - G.GAME.blind:disable() + event({ func = function() + G.GAME.blind:disable() + return true + end }) tag.triggered = true return true @@ -7097,7 +7445,7 @@ SMODS.Tag{ -- Breaking end end, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_tags', in_pool = function() @@ -7137,7 +7485,7 @@ SMODS.Tag{ -- Arcade end end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_tags', in_pool = function() @@ -7172,7 +7520,7 @@ SMODS.Tag{ -- Triple end end, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), atlas = 'bunco_tags', in_pool = function() return G.GAME.used_vouchers['v_bunc_pin_collector'] end @@ -7211,7 +7559,7 @@ SMODS.Tag{ -- Glitter end end, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_tags_edition', } @@ -7248,7 +7596,7 @@ SMODS.Tag{ -- Fluorescent end end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_tags_edition', in_pool = function() @@ -7260,6 +7608,52 @@ SMODS.Tag{ -- Fluorescent end } +SMODS.Tag{ -- Filigree + key = 'filigree', + + config = {type = 'standard_pack_opened'}, + loc_vars = function(self, info_queue) + info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_exotic_cards'} + return {} + end, + apply = function(self, tag, context) + if context.type == self.config.type then + tag:instayep('+', G.C.BUNCO_EXOTIC, function() + return true + end) + event({ + trigger = 'after', + delay = 0, + blockable = false, + blocking = false, + func = function() + if G.pack_cards and G.pack_cards.cards ~= nil and G.pack_cards.cards[1] and G.pack_cards.VT.y < G.ROOM.T.h then + + enable_exotics() + + for _, v in ipairs(G.pack_cards.cards) do + if (not v:is_suit('bunc_Fleurons') and not v:is_suit('bunc_Halberds')) or SMODS.has_any_suit(v) then + local suits = {'bunc_Fleurons', 'bunc_Halberds'} + local suit = pseudorandom_element(suits, pseudoseed('filigree'..G.SEED)) + v:change_suit(suit) + end + end + + return true + end + end + }) + tag.triggered = true + return true + end + end, + + pos = coordinate_from_atlas_index(1), + atlas = 'bunco_tags_exotic', + + in_pool = BUNCOMOD.funcs.exotic_in_pool +} + SMODS.Tag{ -- Chips key = 'chips', @@ -7283,7 +7677,7 @@ SMODS.Tag{ -- Chips end end, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_tags_hand', in_pool = function() return false end @@ -7312,7 +7706,7 @@ SMODS.Tag{ -- Mult end end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_tags_hand', in_pool = function() return false end @@ -7341,7 +7735,7 @@ SMODS.Tag{ -- Xmult end end, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), atlas = 'bunco_tags_hand', in_pool = function() return false end @@ -7370,58 +7764,12 @@ SMODS.Tag{ -- Xchip end end, - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), atlas = 'bunco_tags_hand', in_pool = function() return false end } -SMODS.Tag{ -- Filigree - key = 'filigree', - - config = {type = 'standard_pack_opened'}, - loc_vars = function(self, info_queue) - info_queue[#info_queue+1] = {set = 'Other', key = 'bunc_exotic_cards'} - return {} - end, - apply = function(self, tag, context) - if context.type == self.config.type then - tag:instayep('+', G.C.BUNCO_EXOTIC, function() - return true - end) - event({ - trigger = 'after', - delay = 0, - blockable = false, - blocking = false, - func = function() - if G.pack_cards and G.pack_cards.cards ~= nil and G.pack_cards.cards[1] and G.pack_cards.VT.y < G.ROOM.T.h then - - enable_exotics() - - for _, v in ipairs(G.pack_cards.cards) do - if (not v:is_suit('bunc_Fleurons') and not v:is_suit('bunc_Halberds')) or v.config.center == G.P_CENTERS.m_wild then - local suits = {'bunc_Fleurons', 'bunc_Halberds'} - local suit = pseudorandom_element(suits, pseudoseed('filigree'..G.SEED)) - v:change_suit(suit) - end - end - - return true - end - end - }) - tag.triggered = true - return true - end - end, - - pos = coordinate(1), - atlas = 'bunco_tags_exotic', - - in_pool = BUNCOMOD.funcs.exotic_in_pool -} - SMODS.Tag{ -- Eternal key = 'eternal', @@ -7433,7 +7781,14 @@ SMODS.Tag{ -- Eternal apply = function(self, tag, context) if context.type == self.config.type then - if context.card and not context.card.ability.eternal and not context.card.ability.perishable and context.card.ability.set == 'Joker' then + if context.card and + not context.card.ability.eternal and + not context.card.ability.perishable and + not context.card.ability.bunc_scattering and + not context.card.ability.bunc_hindered and + context.card.ability.set == 'Joker' and + context.card.config.center.eternal_compat + then local lock = tag.ID G.CONTROLLER.locks[lock] = true tag:yep('+', G.C.RED, function() @@ -7450,7 +7805,7 @@ SMODS.Tag{ -- Eternal end end, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_tags_sticker', in_pool = function() return false end @@ -7467,7 +7822,12 @@ SMODS.Tag{ -- Perishable apply = function(self, tag, context) if context.type == self.config.type then - if context.card and not context.card.ability.perishable and not context.card.ability.eternal and context.card.ability.set == 'Joker' then + if context.card and + not context.card.ability.perishable and + not context.card.ability.eternal and + context.card.ability.set == 'Joker' and + context.card.config.center.perishable_compat + then local lock = tag.ID G.CONTROLLER.locks[lock] = true tag:yep('+', G.C.RED, function() @@ -7484,7 +7844,7 @@ SMODS.Tag{ -- Perishable end end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_tags_sticker', in_pool = function() return false end @@ -7523,7 +7883,7 @@ SMODS.Tag{ -- Scattering end end, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), atlas = 'bunco_tags_sticker', in_pool = function() return false end @@ -7562,7 +7922,7 @@ SMODS.Tag{ -- Hindered end end, - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), atlas = 'bunco_tags_sticker', in_pool = function() return false end @@ -7600,7 +7960,7 @@ SMODS.Tag{ -- Reactive end end, - pos = coordinate(5), + pos = coordinate_from_atlas_index(5), atlas = 'bunco_tags_sticker', in_pool = function() return false end @@ -7634,7 +7994,7 @@ SMODS.Tag{ -- Rental end end, - pos = coordinate(6), + pos = coordinate_from_atlas_index(6), atlas = 'bunco_tags_sticker', in_pool = function() return false end @@ -7670,6 +8030,7 @@ SMODS.Edition{ sound = {sound = 'bunc_glitter', per = 1.2, vol = 0.4}, in_shop = true, weight = 9, + extra_cost = 3, get_weight = function(self) return G.GAME.edition_rate * self.weight end, @@ -7686,6 +8047,7 @@ SMODS.Edition{ sound = {sound = 'bunc_fluorescent', per = 1.2, vol = 0.4}, in_shop = true, weight = 18, + extra_cost = 1, get_weight = function(self) return G.GAME.edition_rate * self.weight end, @@ -7702,7 +8064,7 @@ SMODS.Voucher{ -- Lamination unlocked = true, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_vouchers' } @@ -7724,7 +8086,7 @@ SMODS.Voucher{ -- Supercoating end end, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_vouchers' } @@ -7738,7 +8100,7 @@ SMODS.Voucher{ -- Hedge Trimmer unlocked = true, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), atlas = 'bunco_vouchers' } @@ -7767,7 +8129,7 @@ SMODS.Voucher{ -- Chainsaw end end, - pos = coordinate(4), + pos = coordinate_from_atlas_index(4), atlas = 'bunco_vouchers' } @@ -7781,7 +8143,7 @@ SMODS.Voucher{ -- Cups 'n' Balls unlocked = true, - pos = coordinate(5), + pos = coordinate_from_atlas_index(5), atlas = 'bunco_vouchers' } @@ -7803,7 +8165,7 @@ SMODS.Voucher{ -- Shell Game end end, - pos = coordinate(6), + pos = coordinate_from_atlas_index(6), atlas = 'bunco_vouchers' } @@ -7812,7 +8174,7 @@ SMODS.Voucher{ -- Disguise unlocked = true, - pos = coordinate(7), + pos = coordinate_from_atlas_index(7), atlas = 'bunco_vouchers' } @@ -7844,7 +8206,7 @@ SMODS.Voucher{ -- Masquerade end end, - pos = coordinate(8), + pos = coordinate_from_atlas_index(8), atlas = 'bunco_vouchers' } @@ -7856,18 +8218,13 @@ SMODS.Voucher{ -- Fanny Pack info_queue[#info_queue+1] = {set = 'Tag', key = 'tag_double'} - local vars - if G.GAME and G.GAME.probabilities.normal then - vars = {G.GAME.probabilities.normal, card.ability.extra.odds} - else - vars = {1, card.ability.extra.odds} - end + local vars = {SMODS.get_probability_vars(card, 1, card.ability.extra.odds)} return {vars = vars} end, unlocked = true, - pos = coordinate(9), + pos = coordinate_from_atlas_index(9), atlas = 'bunco_vouchers' } @@ -7893,7 +8250,7 @@ SMODS.Voucher{ -- Pin Collector end end, - pos = coordinate(10), + pos = coordinate_from_atlas_index(10), atlas = 'bunco_vouchers' } @@ -7902,7 +8259,7 @@ SMODS.Voucher{ -- Arcade Machine unlocked = true, - pos = coordinate(11), + pos = coordinate_from_atlas_index(11), atlas = 'bunco_vouchers' } @@ -7924,7 +8281,7 @@ SMODS.Voucher{ -- Polybius end end, - pos = coordinate(12), + pos = coordinate_from_atlas_index(12), atlas = 'bunco_vouchers' } @@ -7996,6 +8353,35 @@ end SMODS.Atlas({key = 'bunco_booster_packs_blind', path = 'Boosters/BoostersBlind.png', px = 71, py = 95}) SMODS.Atlas({key = 'bunco_booster_packs_virtual', path = 'Boosters/BoostersVirtual.png', px = 71, py = 95}) +-- Blind pack functionality + +G.FUNCS.can_use_blind_card = function(e) + e.config.colour = G.C.GREEN + e.config.button = 'use_blind_card' +end + +G.FUNCS.use_blind_card = function(e) + local card = e.config.ref_table + + local boss = card.ability.blind_card.blind.key + G.GAME.round_resets.blind_choices.Boss = boss + + play_sound('other1') + + e.config.button = nil + + if G.blind_select_opts.boss then + BUNCOMOD.funcs.bunc_refresh_boss_blind() + end + + G.PROFILES[G.SETTINGS.profile].blind_cards_used = (G.PROFILES[G.SETTINGS.profile].blind_cards_used or 0) + 1 + if G.PROFILES[G.SETTINGS.profile].blind_cards_used then + check_for_unlock({type = 'use_blind_card', blinds_total = G.PROFILES[G.SETTINGS.profile].blind_cards_used}) + end + + G.FUNCS.end_consumeable(nil, 0.2) +end + for i = 1, 4 do -- Blind SMODS.Booster{ type = 'bunc_blind', @@ -8061,7 +8447,7 @@ for i = 1, 4 do -- Blind return t end, - pos = coordinate(i), + pos = coordinate_from_atlas_index(i), atlas = 'bunco_booster_packs_blind', in_pool = function() return G.GAME.used_vouchers['v_bunc_disguise'] end @@ -8149,7 +8535,7 @@ for i = 1, 4 do -- Virtual ease_background_colour{new_colour = HEX('50506a'), special_colour = HEX('7e9999'), contrast = 2} end, - pos = coordinate(i), + pos = coordinate_from_atlas_index(i), atlas = 'bunco_booster_packs_virtual', } end @@ -8173,7 +8559,7 @@ SMODS.Sound({key = 'cracker', path = 'cracker.ogg'}) SMODS.Enhancement({ -- Cracker key = 'cracker', - atlas = 'bunco_enhancements', pos = coordinate(1) + atlas = 'bunco_enhancements', pos = coordinate_from_atlas_index(1) }) function calculate_cracker_cards(context) @@ -8210,7 +8596,10 @@ function calculate_cracker_cards(context) trigger = 'after', blockable = false, delay = 0.5 * dissolve_time, - func = (function() childParts:fade(0.5 * dissolve_time) return true end) + func = (function() + childParts:fade(0.5 * dissolve_time) + return true + end) }) cracker_card:start_dissolve({HEX('ffdfaa')}, nil, dissolve_time_fac) @@ -8231,7 +8620,7 @@ end SMODS.Enhancement({ -- Copper key = 'copper', post_effect = true, - rescore_amount = 1, pos = coordinate(2), + rescore_amount = 1, pos = coordinate_from_atlas_index(2), atlas = 'bunco_enhancements', calculate = function(self, card, context, effect) if context.post_effect @@ -8284,7 +8673,6 @@ SMODS.Enhancement({ -- Copper local streak_card = streak_cards[streak_index] event({func = function() big_juice(streak_card) return true end}) - --forced_message(localize('bunc_repeat'), streak_card, G.C.YELLOW, streak_index == 1) end @@ -8310,7 +8698,7 @@ SMODS.Enhancement({ -- Copper end end -- Reset the retrigger thingy - if context.after then + if context.after and context.scoring_hand then for _, other_card in ipairs(context.scoring_hand) do other_card.config.copper_rescored_times = 0 end @@ -8320,31 +8708,69 @@ SMODS.Enhancement({ -- Copper -- Stickers +function Card:calculate_hindered() + if self.ability.bunc_hindered and self.ability.bunc_hindered_sold then + self:start_dissolve({G.C.GOLD}, nil, 1.6) + end +end +function Card:calculate_reactive() + if self.ability.bunc_reactive then + local skipped_blinds = 0 + for _, v in pairs(G.GAME.round_resets.blind_states) do + if v == 'Skipped' then + skipped_blinds = skipped_blinds + 1 + end + end + if skipped_blinds == 1 then + self:juice_up(0.3, 0.3) + end + end +end + SMODS.Atlas({key = 'bunco_stickers', path = 'Stickers/Stickers.png', px = 71, py = 95}) SMODS.Sticker{ -- Scattering key = 'scattering', + should_apply = function(self, card, center, area, bypass_roll) + local default_check = SMODS.Sticker.should_apply(self, card, center, area, bypass_roll) + local other_sticker_check = not ((card and card.ability) and (card.ability.eternal or card.ability.bunc_hindered or card.ability.bunc_reactive)) + local shop_check = (area == G.shop_jokers) or (area == G.pack_cards) + return default_check and other_sticker_check and shop_check + end, apply = function(self, card, val) - if card.ability.eternal or card.ability.bunc_hindered or card.ability.bunc_reactive then return end + -- if card.ability.eternal or card.ability.bunc_hindered or card.ability.bunc_reactive then return end card.ability[self.key] = val + -- card.config.center.eternal_compat = false end, + -- Cross-mod stuff + compat_exceptions = { + "sarc_cracked_egg" + }, + badge_colour = HEX('9eacbe'), order = 5, - pos = coordinate(1), + pos = coordinate_from_atlas_index(1), atlas = 'bunco_stickers' } SMODS.Sticker{ -- Hindered key = 'hindered', + should_apply = function(self, card, center, area, bypass_roll) + local default_check = SMODS.Sticker.should_apply(self, card, center, area, bypass_roll) + local other_sticker_check = not ((card and card.ability) and (card.ability.eternal or card.ability.bunc_scattering or card.ability.bunc_reactive)) + local shop_check = (area == G.shop_jokers) or (area == G.pack_cards) + return default_check and other_sticker_check and shop_check + end, apply = function(self, card, val) - if card.ability.eternal or card.ability.bunc_scattering or card.ability.bunc_reactive then return end + -- if card.ability.eternal or card.ability.bunc_scattering or card.ability.bunc_reactive then return end card.ability[self.key] = val card.ability.bunc_hindered_sold = false + -- card.config.center.eternal_compat = false end, calculate = function(self, card, context) if context.end_of_round and not context.repetition and not context.individual then @@ -8356,15 +8782,21 @@ SMODS.Sticker{ -- Hindered order = 6, - pos = coordinate(2), + pos = coordinate_from_atlas_index(2), atlas = 'bunco_stickers' } SMODS.Sticker{ -- Reactive key = 'reactive', + should_apply = function(self, card, center, area, bypass_roll) + local default_check = SMODS.Sticker.should_apply(self, card, center, area, bypass_roll) + local other_sticker_check = not ((card and card.ability) and (card.ability.bunc_hindered or card.ability.bunc_scattering)) + local shop_check = (area == G.shop_jokers) or (area == G.pack_cards) + return default_check and other_sticker_check and shop_check + end, apply = function(self, card, val) - if card.ability.eternal or card.ability.bunc_scattering or card.ability.bunc_hindered then return end + -- if card.ability.bunc_scattering or card.ability.bunc_hindered then return end card.ability[self.key] = val if G.GAME and G.GAME.blind then G.GAME.blind:debuff_card(card) end end, @@ -8378,7 +8810,7 @@ SMODS.Sticker{ -- Reactive order = 7, - pos = coordinate(3), + pos = coordinate_from_atlas_index(3), atlas = 'bunco_stickers' } @@ -8396,13 +8828,24 @@ SMODS.Stake{ -- Cyan prefix_config = {above_stake = {mod = false}, applied_stakes = {mod = false}}, modifiers = function() - G.GAME.modifiers.enable_scattering_in_shop = true + G.GAME.modifiers.enable_bunc_scattering = true + end, + + loc_vars = function(self) + local sticker_desc = localize{type="raw_descriptions", key="bunc_scattering", set="Other", vars={}} + local sticker_desc_string = "" + for i, v in ipairs(sticker_desc) do + sticker_desc_string = sticker_desc_string .. v .. " " + end + sticker_desc_string = string.sub(sticker_desc_string, 1, -2) + + return {vars = { sticker_desc_string } } end, colour = HEX('3cd0c8'), - pos = coordinate(1), - sticker_pos = coordinate(1), + pos = coordinate_from_atlas_index(1), + sticker_pos = coordinate_from_atlas_index(1), atlas = 'bunco_stakes', sticker_atlas = 'bunco_stake_stickers' } @@ -8415,13 +8858,24 @@ SMODS.Stake{ -- Pink above_stake = 'bunc_cyan', modifiers = function() - G.GAME.modifiers.enable_hindered_in_shop = true + G.GAME.modifiers.enable_bunc_hindered = true + end, + + loc_vars = function(self) + local sticker_desc = localize{type="raw_descriptions", key="bunc_hindered", set="Other", vars={}} + local sticker_desc_string = "" + for i, v in ipairs(sticker_desc) do + sticker_desc_string = sticker_desc_string .. v .. " " + end + sticker_desc_string = string.sub(sticker_desc_string, 1, -2) + + return {vars = { sticker_desc_string } } end, colour = HEX('ff8ea4'), - pos = coordinate(2), - sticker_pos = coordinate(2), + pos = coordinate_from_atlas_index(2), + sticker_pos = coordinate_from_atlas_index(2), atlas = 'bunco_stakes', sticker_atlas = 'bunco_stake_stickers' } @@ -8434,13 +8888,24 @@ SMODS.Stake{ -- Magenta above_stake = 'bunc_pink', modifiers = function() - G.GAME.modifiers.enable_reactive_in_shop = true + G.GAME.modifiers.enable_bunc_reactive = true + end, + + loc_vars = function(self) + local sticker_desc = localize{type="raw_descriptions", key="bunc_reactive", set="Other", vars={}} + local sticker_desc_string = "" + for i, v in ipairs(sticker_desc) do + sticker_desc_string = sticker_desc_string .. v .. " " + end + sticker_desc_string = string.sub(sticker_desc_string, 1, -2) + + return {vars = { sticker_desc_string } } end, colour = HEX('cd47ea'), - pos = coordinate(3), - sticker_pos = coordinate(3), + pos = coordinate_from_atlas_index(3), + sticker_pos = coordinate_from_atlas_index(3), atlas = 'bunco_stakes', sticker_atlas = 'bunco_stake_stickers' } @@ -8450,8 +8915,38 @@ SMODS.Stake:take_ownership('gold', { above_stake = 'bunc_magenta' }) + +-- Consumable editions in collection +-- These are only for the collection, not for any other in-game use +-- Should have a better way to organise this + +local consumable_editions ={ + {key="foil", tag="tag_bunc_chips"}, + {key="holo", tag="tag_bunc_mult"}, + {key="polychrome", tag="tag_bunc_xmult"}, + {key="bunc_glitter", tag="tag_bunc_xchips"} +} + +for i, v in ipairs(consumable_editions) do + SMODS.Edition { + key = 'e_bunc_consumable_edition_' .. v.key, + shader = v.key, + atlas = 'bunco_resprites_tarots', + pos = { x = 0, y = 0 }, + -- no_collection = true, + prefix_config = { key = false, shader = false }, + skip_debug = true, + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = {key = v.tag, set = 'Tag', specific_vars = G.P_TAGS[v.tag].loc_vars(self, info_queue).vars} + -- return {vars = {G.P_CENTERS["e_foil"].loc_vars(self, info_queue, card)}} + end, + dependencies = v.dependencies + } +end + + -- Mod compatibility if _G["JokerDisplay"] then filesystem.load(BUNCOMOD.content.path..'compat/jokerdisplay.lua')() -end \ No newline at end of file +end diff --git a/README.md b/README.md index 01301bb1..5d4ece14 100644 --- a/README.md +++ b/README.md @@ -1 +1,19 @@ A mod that aims to add more content in a way that'd seamlessly exist within the vanilla Balatro! + +# Youtube Trailer +[![Bunco Mod Trailer](https://github.com/user-attachments/assets/b8dea09b-b671-424b-a6f1-fa3f60aa787e)](https://youtu.be/RnH17Wx91no) + +# About this fork + +Bunco was originally lead by Firch with contributions across the community. Now that the original mod is finished, Firch has move on from Balatro and is no longer maintaining the original mod. This fork is implementing critical (and non-critical) bug fixes that arise as modding continues to evolve beyond Bunco's final release. + +This fork adds no additional gameplay content. + +# Previews + +![Trailer 1](https://github.com/user-attachments/assets/0ab38c79-c4b4-4f53-bbec-5136437cfbf6) +![Trailer 2](https://github.com/user-attachments/assets/95d8ab26-ca4c-4026-94b3-f59f134c96f6) +![Trailer 3](https://github.com/user-attachments/assets/9834f543-b386-40be-b7d0-fedd56d1a729) +![Trailer 4](https://github.com/user-attachments/assets/df959e83-851c-4f94-b4cc-8c48654b15be) +![Trailer 5](https://github.com/user-attachments/assets/d2e9aac9-f0a8-49eb-bf47-c8795647fc9b) +![Trailer 6](https://github.com/user-attachments/assets/f5d593ad-f87b-42a7-9f3f-1b8142730628) diff --git a/assets/1x/Blinds/Blinds.png b/assets/1x/Blinds/Blinds.png index ec590949..84ba4da2 100644 Binary files a/assets/1x/Blinds/Blinds.png and b/assets/1x/Blinds/Blinds.png differ diff --git a/assets/1x/Blinds/BlindsFinisher.png b/assets/1x/Blinds/BlindsFinisher.png index c49bab30..5c807a2f 100644 Binary files a/assets/1x/Blinds/BlindsFinisher.png and b/assets/1x/Blinds/BlindsFinisher.png differ diff --git a/assets/1x/Boosters/BoostersBlind.png b/assets/1x/Boosters/BoostersBlind.png index d4bcc08f..ab572bbf 100644 Binary files a/assets/1x/Boosters/BoostersBlind.png and b/assets/1x/Boosters/BoostersBlind.png differ diff --git a/assets/1x/Boosters/BoostersVirtual.png b/assets/1x/Boosters/BoostersVirtual.png index 0ed6ca96..5b340fa1 100644 Binary files a/assets/1x/Boosters/BoostersVirtual.png and b/assets/1x/Boosters/BoostersVirtual.png differ diff --git a/assets/1x/Consumables/Planets.png b/assets/1x/Consumables/Planets.png index 8a8d135b..809c27cd 100644 Binary files a/assets/1x/Consumables/Planets.png and b/assets/1x/Consumables/Planets.png differ diff --git a/assets/1x/Consumables/Polyminoes.png b/assets/1x/Consumables/Polyminoes.png index 21d69bd2..91400ab3 100644 Binary files a/assets/1x/Consumables/Polyminoes.png and b/assets/1x/Consumables/Polyminoes.png differ diff --git a/assets/1x/Consumables/PolyminoesUndiscovered.png b/assets/1x/Consumables/PolyminoesUndiscovered.png index f65cab7e..020ffde0 100644 Binary files a/assets/1x/Consumables/PolyminoesUndiscovered.png and b/assets/1x/Consumables/PolyminoesUndiscovered.png differ diff --git a/assets/1x/Consumables/Spectrals.png b/assets/1x/Consumables/Spectrals.png index 5ae430bc..5fa440d4 100644 Binary files a/assets/1x/Consumables/Spectrals.png and b/assets/1x/Consumables/Spectrals.png differ diff --git a/assets/1x/Consumables/Tarots.png b/assets/1x/Consumables/Tarots.png index dc9629b2..c3502af7 100644 Binary files a/assets/1x/Consumables/Tarots.png and b/assets/1x/Consumables/Tarots.png differ diff --git a/assets/1x/Consumables/TarotsExotic.png b/assets/1x/Consumables/TarotsExotic.png index 7f21cce6..633ca9f2 100644 Binary files a/assets/1x/Consumables/TarotsExotic.png and b/assets/1x/Consumables/TarotsExotic.png differ diff --git a/assets/1x/Consumables/TarotsWeird.png b/assets/1x/Consumables/TarotsWeird.png index da726ef6..0ddef278 100644 Binary files a/assets/1x/Consumables/TarotsWeird.png and b/assets/1x/Consumables/TarotsWeird.png differ diff --git a/assets/1x/Decks/Decks.png b/assets/1x/Decks/Decks.png index d0f06d5f..64bb5e29 100644 Binary files a/assets/1x/Decks/Decks.png and b/assets/1x/Decks/Decks.png differ diff --git a/assets/1x/Enhancements/Enhancements.png b/assets/1x/Enhancements/Enhancements.png index 6b69a1eb..6f82257c 100644 Binary files a/assets/1x/Enhancements/Enhancements.png and b/assets/1x/Enhancements/Enhancements.png differ diff --git a/assets/1x/Exotic/ExoticCards.png b/assets/1x/Exotic/ExoticCards.png index b3c0f5e3..baa57dc3 100644 Binary files a/assets/1x/Exotic/ExoticCards.png and b/assets/1x/Exotic/ExoticCards.png differ diff --git a/assets/1x/Exotic/ExoticCardsHC.png b/assets/1x/Exotic/ExoticCardsHC.png index fbc6f294..53915ea2 100644 Binary files a/assets/1x/Exotic/ExoticCardsHC.png and b/assets/1x/Exotic/ExoticCardsHC.png differ diff --git a/assets/1x/Exotic/ExoticSuits.png b/assets/1x/Exotic/ExoticSuits.png index 997ba575..1d1d45bb 100644 Binary files a/assets/1x/Exotic/ExoticSuits.png and b/assets/1x/Exotic/ExoticSuits.png differ diff --git a/assets/1x/Exotic/ExoticSuitsHC.png b/assets/1x/Exotic/ExoticSuitsHC.png index 29d342aa..b80eebfb 100644 Binary files a/assets/1x/Exotic/ExoticSuitsHC.png and b/assets/1x/Exotic/ExoticSuitsHC.png differ diff --git a/assets/1x/Icon/Icon.png b/assets/1x/Icon/Icon.png index 3d9a1926..7946ac11 100644 Binary files a/assets/1x/Icon/Icon.png and b/assets/1x/Icon/Icon.png differ diff --git a/assets/1x/Jokers/JokerBlind.png b/assets/1x/Jokers/JokerBlind.png index cb49c2d8..d58c5afe 100644 Binary files a/assets/1x/Jokers/JokerBlind.png and b/assets/1x/Jokers/JokerBlind.png differ diff --git a/assets/1x/Jokers/JokerBorder.png b/assets/1x/Jokers/JokerBorder.png index 2bb6b242..30811635 100644 Binary files a/assets/1x/Jokers/JokerBorder.png and b/assets/1x/Jokers/JokerBorder.png differ diff --git a/assets/1x/Jokers/JokerHeadache.png b/assets/1x/Jokers/JokerHeadache.png index e6e824e8..7bf1d611 100644 Binary files a/assets/1x/Jokers/JokerHeadache.png and b/assets/1x/Jokers/JokerHeadache.png differ diff --git a/assets/1x/Jokers/JokerTaped.png b/assets/1x/Jokers/JokerTaped.png index 0b21e2d6..42b80210 100644 Binary files a/assets/1x/Jokers/JokerTaped.png and b/assets/1x/Jokers/JokerTaped.png differ diff --git a/assets/1x/Jokers/JokerWinking.png b/assets/1x/Jokers/JokerWinking.png index 8b98caef..f5f997d4 100644 Binary files a/assets/1x/Jokers/JokerWinking.png and b/assets/1x/Jokers/JokerWinking.png differ diff --git a/assets/1x/Jokers/Jokers.png b/assets/1x/Jokers/Jokers.png index 0baa41d5..08ee7319 100644 Binary files a/assets/1x/Jokers/Jokers.png and b/assets/1x/Jokers/Jokers.png differ diff --git a/assets/1x/Jokers/JokersExotic.png b/assets/1x/Jokers/JokersExotic.png index 311d5e48..77b573f4 100644 Binary files a/assets/1x/Jokers/JokersExotic.png and b/assets/1x/Jokers/JokersExotic.png differ diff --git a/assets/1x/Jokers/JokersLegendary.png b/assets/1x/Jokers/JokersLegendary.png index 8ce84246..75227c97 100644 Binary files a/assets/1x/Jokers/JokersLegendary.png and b/assets/1x/Jokers/JokersLegendary.png differ diff --git a/assets/1x/Links/Link.png b/assets/1x/Links/Link.png index 1267f49c..e1539ca9 100644 Binary files a/assets/1x/Links/Link.png and b/assets/1x/Links/Link.png differ diff --git a/assets/1x/Resprites/Consumables.png b/assets/1x/Resprites/Consumables.png deleted file mode 100644 index 5530a4da..00000000 Binary files a/assets/1x/Resprites/Consumables.png and /dev/null differ diff --git a/assets/1x/Resprites/EnhancedContrast.png b/assets/1x/Resprites/EnhancedContrast.png index fcd1b56b..7226b808 100644 Binary files a/assets/1x/Resprites/EnhancedContrast.png and b/assets/1x/Resprites/EnhancedContrast.png differ diff --git a/assets/1x/Resprites/EnhancedContrastPaperback.png b/assets/1x/Resprites/EnhancedContrastPaperback.png new file mode 100644 index 00000000..c9dd503b Binary files /dev/null and b/assets/1x/Resprites/EnhancedContrastPaperback.png differ diff --git a/assets/1x/Resprites/EnhancedUIContrast.png b/assets/1x/Resprites/EnhancedUIContrast.png index b2bd0df8..3122878d 100644 Binary files a/assets/1x/Resprites/EnhancedUIContrast.png and b/assets/1x/Resprites/EnhancedUIContrast.png differ diff --git a/assets/1x/Resprites/Jokers.png b/assets/1x/Resprites/Jokers.png index 4856154c..9e79fb0c 100644 Binary files a/assets/1x/Resprites/Jokers.png and b/assets/1x/Resprites/Jokers.png differ diff --git a/assets/1x/Resprites/Planets.png b/assets/1x/Resprites/Planets.png new file mode 100644 index 00000000..ac7da4e8 Binary files /dev/null and b/assets/1x/Resprites/Planets.png differ diff --git a/assets/1x/Resprites/Spectrals.png b/assets/1x/Resprites/Spectrals.png new file mode 100644 index 00000000..1f0e9cf3 Binary files /dev/null and b/assets/1x/Resprites/Spectrals.png differ diff --git a/assets/1x/Resprites/Tarots.png b/assets/1x/Resprites/Tarots.png new file mode 100644 index 00000000..a9a50f53 Binary files /dev/null and b/assets/1x/Resprites/Tarots.png differ diff --git a/assets/1x/Resprites/collabs/collab_AC_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_AC_EnhancedContrast.png new file mode 100644 index 00000000..7389b11f Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_AC_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_AU_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_AU_EnhancedContrast.png new file mode 100644 index 00000000..1aad1fb6 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_AU_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_BUG_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_BUG_EnhancedContrast.png new file mode 100644 index 00000000..b42f465b Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_BUG_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_C7_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_C7_EnhancedContrast.png new file mode 100644 index 00000000..b7315b77 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_C7_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_CL_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_CL_EnhancedContrast.png new file mode 100644 index 00000000..4ce30132 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_CL_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_CR_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_CR_EnhancedContrast.png new file mode 100644 index 00000000..6f284bc7 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_CR_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_CYP_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_CYP_EnhancedContrast.png new file mode 100644 index 00000000..4841e041 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_CYP_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_D2_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_D2_EnhancedContrast.png new file mode 100644 index 00000000..cdaf5503 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_D2_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_DBD_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_DBD_EnhancedContrast.png new file mode 100644 index 00000000..c8353339 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_DBD_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_DS_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_DS_EnhancedContrast.png new file mode 100644 index 00000000..93d567a3 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_DS_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_DTD_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_DTD_EnhancedContrast.png new file mode 100644 index 00000000..b9b62e4d Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_DTD_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_EG_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_EG_EnhancedContrast.png new file mode 100644 index 00000000..7fe0eff6 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_EG_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_FO_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_FO_EnhancedContrast.png new file mode 100644 index 00000000..716c01d2 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_FO_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_PC_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_PC_EnhancedContrast.png new file mode 100644 index 00000000..653220bd Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_PC_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_R_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_R_EnhancedContrast.png new file mode 100644 index 00000000..dea9c338 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_R_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_SK_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_SK_EnhancedContrast.png new file mode 100644 index 00000000..efc7f706 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_SK_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_STP_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_STP_EnhancedContrast.png new file mode 100644 index 00000000..d32d67eb Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_STP_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_STS_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_STS_EnhancedContrast.png new file mode 100644 index 00000000..5c616592 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_STS_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_SV_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_SV_EnhancedContrast.png new file mode 100644 index 00000000..c118f257 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_SV_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_TBoI_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_TBoI_EnhancedContrast.png new file mode 100644 index 00000000..73347121 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_TBoI_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_TW_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_TW_EnhancedContrast.png new file mode 100644 index 00000000..523ca21a Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_TW_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_VS_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_VS_EnhancedContrast.png new file mode 100644 index 00000000..8718b238 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_VS_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_WF_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_WF_EnhancedContrast.png new file mode 100644 index 00000000..e33f2016 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_WF_EnhancedContrast.png differ diff --git a/assets/1x/Resprites/collabs/collab_XR_EnhancedContrast.png b/assets/1x/Resprites/collabs/collab_XR_EnhancedContrast.png new file mode 100644 index 00000000..d24d5874 Binary files /dev/null and b/assets/1x/Resprites/collabs/collab_XR_EnhancedContrast.png differ diff --git a/assets/1x/Skins/SkinDuckGameHC.png b/assets/1x/Skins/SkinDuckGameHC.png index 8147ed87..4092686e 100644 Binary files a/assets/1x/Skins/SkinDuckGameHC.png and b/assets/1x/Skins/SkinDuckGameHC.png differ diff --git a/assets/1x/Skins/SkinDuckGameLC.png b/assets/1x/Skins/SkinDuckGameLC.png index 6f28b205..41f15b3a 100644 Binary files a/assets/1x/Skins/SkinDuckGameLC.png and b/assets/1x/Skins/SkinDuckGameLC.png differ diff --git a/assets/1x/Skins/SkinFiendFolioHC.png b/assets/1x/Skins/SkinFiendFolioHC.png index 88ce6606..b22fef1d 100644 Binary files a/assets/1x/Skins/SkinFiendFolioHC.png and b/assets/1x/Skins/SkinFiendFolioHC.png differ diff --git a/assets/1x/Skins/SkinFiendFolioLC.png b/assets/1x/Skins/SkinFiendFolioLC.png index fba9e7dc..2d33d17d 100644 Binary files a/assets/1x/Skins/SkinFiendFolioLC.png and b/assets/1x/Skins/SkinFiendFolioLC.png differ diff --git a/assets/1x/Skins/SkinLISAThePainfulHC.png b/assets/1x/Skins/SkinLISAThePainfulHC.png index bdc5507a..2e523b00 100644 Binary files a/assets/1x/Skins/SkinLISAThePainfulHC.png and b/assets/1x/Skins/SkinLISAThePainfulHC.png differ diff --git a/assets/1x/Skins/SkinLISAThePainfulLC.png b/assets/1x/Skins/SkinLISAThePainfulLC.png index 822b3edf..e6e93c2f 100644 Binary files a/assets/1x/Skins/SkinLISAThePainfulLC.png and b/assets/1x/Skins/SkinLISAThePainfulLC.png differ diff --git a/assets/1x/Skins/SkinLISAThePointlessHC.png b/assets/1x/Skins/SkinLISAThePointlessHC.png index 227a088b..4a38a5ed 100644 Binary files a/assets/1x/Skins/SkinLISAThePointlessHC.png and b/assets/1x/Skins/SkinLISAThePointlessHC.png differ diff --git a/assets/1x/Skins/SkinLISAThePointlessLC.png b/assets/1x/Skins/SkinLISAThePointlessLC.png index 4de67bfe..ad9671ab 100644 Binary files a/assets/1x/Skins/SkinLISAThePointlessLC.png and b/assets/1x/Skins/SkinLISAThePointlessLC.png differ diff --git a/assets/1x/Stakes/Stakes.png b/assets/1x/Stakes/Stakes.png index bec04202..3eda1b4d 100644 Binary files a/assets/1x/Stakes/Stakes.png and b/assets/1x/Stakes/Stakes.png differ diff --git a/assets/1x/Stickers/Stickers.png b/assets/1x/Stickers/Stickers.png index d8fa27bd..d76745d2 100644 Binary files a/assets/1x/Stickers/Stickers.png and b/assets/1x/Stickers/Stickers.png differ diff --git a/assets/1x/Stickers/StickersStake.png b/assets/1x/Stickers/StickersStake.png index 6ed60955..927c92fc 100644 Binary files a/assets/1x/Stickers/StickersStake.png and b/assets/1x/Stickers/StickersStake.png differ diff --git a/assets/1x/Tags/Tags.png b/assets/1x/Tags/Tags.png index bc0fb098..f059dd6a 100644 Binary files a/assets/1x/Tags/Tags.png and b/assets/1x/Tags/Tags.png differ diff --git a/assets/1x/Tags/TagsEdition.png b/assets/1x/Tags/TagsEdition.png index 4458f376..a1e9555c 100644 Binary files a/assets/1x/Tags/TagsEdition.png and b/assets/1x/Tags/TagsEdition.png differ diff --git a/assets/1x/Tags/TagsExotic.png b/assets/1x/Tags/TagsExotic.png index 4102e5d2..41abbc14 100644 Binary files a/assets/1x/Tags/TagsExotic.png and b/assets/1x/Tags/TagsExotic.png differ diff --git a/assets/1x/Tags/TagsHand.png b/assets/1x/Tags/TagsHand.png index e9f960a1..ffeb2654 100644 Binary files a/assets/1x/Tags/TagsHand.png and b/assets/1x/Tags/TagsHand.png differ diff --git a/assets/1x/Tags/TagsSticker.png b/assets/1x/Tags/TagsSticker.png index b043bcd8..e687be06 100644 Binary files a/assets/1x/Tags/TagsSticker.png and b/assets/1x/Tags/TagsSticker.png differ diff --git a/assets/1x/Vouchers/Vouchers.png b/assets/1x/Vouchers/Vouchers.png index d095cd88..730f21d9 100644 Binary files a/assets/1x/Vouchers/Vouchers.png and b/assets/1x/Vouchers/Vouchers.png differ diff --git a/assets/1x/settings.png b/assets/1x/settings.png new file mode 100644 index 00000000..4dfed382 Binary files /dev/null and b/assets/1x/settings.png differ diff --git a/assets/2x/Blinds/Blinds.png b/assets/2x/Blinds/Blinds.png index 759857ff..f60628df 100644 Binary files a/assets/2x/Blinds/Blinds.png and b/assets/2x/Blinds/Blinds.png differ diff --git a/assets/2x/Blinds/BlindsFinisher.png b/assets/2x/Blinds/BlindsFinisher.png index dbb793b0..54a697ae 100644 Binary files a/assets/2x/Blinds/BlindsFinisher.png and b/assets/2x/Blinds/BlindsFinisher.png differ diff --git a/assets/2x/Boosters/BoostersBlind.png b/assets/2x/Boosters/BoostersBlind.png index 5b373855..36f4472d 100644 Binary files a/assets/2x/Boosters/BoostersBlind.png and b/assets/2x/Boosters/BoostersBlind.png differ diff --git a/assets/2x/Boosters/BoostersVirtual.png b/assets/2x/Boosters/BoostersVirtual.png index 99449916..d563432c 100644 Binary files a/assets/2x/Boosters/BoostersVirtual.png and b/assets/2x/Boosters/BoostersVirtual.png differ diff --git a/assets/2x/Consumables/Planets.png b/assets/2x/Consumables/Planets.png index 64b37134..ccc69347 100644 Binary files a/assets/2x/Consumables/Planets.png and b/assets/2x/Consumables/Planets.png differ diff --git a/assets/2x/Consumables/Polyminoes.png b/assets/2x/Consumables/Polyminoes.png index e340e219..ce8582c5 100644 Binary files a/assets/2x/Consumables/Polyminoes.png and b/assets/2x/Consumables/Polyminoes.png differ diff --git a/assets/2x/Consumables/PolyminoesUndiscovered.png b/assets/2x/Consumables/PolyminoesUndiscovered.png index 6b49f8ff..c96acaba 100644 Binary files a/assets/2x/Consumables/PolyminoesUndiscovered.png and b/assets/2x/Consumables/PolyminoesUndiscovered.png differ diff --git a/assets/2x/Consumables/Spectrals.png b/assets/2x/Consumables/Spectrals.png index 78c0d7f2..12f33c55 100644 Binary files a/assets/2x/Consumables/Spectrals.png and b/assets/2x/Consumables/Spectrals.png differ diff --git a/assets/2x/Consumables/Tarots.png b/assets/2x/Consumables/Tarots.png index 91d6ebb6..b31c7995 100644 Binary files a/assets/2x/Consumables/Tarots.png and b/assets/2x/Consumables/Tarots.png differ diff --git a/assets/2x/Consumables/TarotsExotic.png b/assets/2x/Consumables/TarotsExotic.png index 9207b638..ae1211ae 100644 Binary files a/assets/2x/Consumables/TarotsExotic.png and b/assets/2x/Consumables/TarotsExotic.png differ diff --git a/assets/2x/Consumables/TarotsWeird.png b/assets/2x/Consumables/TarotsWeird.png index 269ef85b..96b8cd4b 100644 Binary files a/assets/2x/Consumables/TarotsWeird.png and b/assets/2x/Consumables/TarotsWeird.png differ diff --git a/assets/2x/Decks/Decks.png b/assets/2x/Decks/Decks.png index e9335f22..ccf6bb0b 100644 Binary files a/assets/2x/Decks/Decks.png and b/assets/2x/Decks/Decks.png differ diff --git a/assets/2x/Enhancements/Enhancements.png b/assets/2x/Enhancements/Enhancements.png index 5c9fbb01..315664e2 100644 Binary files a/assets/2x/Enhancements/Enhancements.png and b/assets/2x/Enhancements/Enhancements.png differ diff --git a/assets/2x/Exotic/ExoticCards.png b/assets/2x/Exotic/ExoticCards.png index 75277392..8137caa6 100644 Binary files a/assets/2x/Exotic/ExoticCards.png and b/assets/2x/Exotic/ExoticCards.png differ diff --git a/assets/2x/Exotic/ExoticCardsHC.png b/assets/2x/Exotic/ExoticCardsHC.png index f435fd53..4ea3dde9 100644 Binary files a/assets/2x/Exotic/ExoticCardsHC.png and b/assets/2x/Exotic/ExoticCardsHC.png differ diff --git a/assets/2x/Exotic/ExoticSuits.png b/assets/2x/Exotic/ExoticSuits.png index c1e81606..f630eb6c 100644 Binary files a/assets/2x/Exotic/ExoticSuits.png and b/assets/2x/Exotic/ExoticSuits.png differ diff --git a/assets/2x/Exotic/ExoticSuitsHC.png b/assets/2x/Exotic/ExoticSuitsHC.png index 52ea521a..da75664f 100644 Binary files a/assets/2x/Exotic/ExoticSuitsHC.png and b/assets/2x/Exotic/ExoticSuitsHC.png differ diff --git a/assets/2x/Icon/Icon.png b/assets/2x/Icon/Icon.png index 67d2b54a..aa440a03 100644 Binary files a/assets/2x/Icon/Icon.png and b/assets/2x/Icon/Icon.png differ diff --git a/assets/2x/Jokers/JokerBlind.png b/assets/2x/Jokers/JokerBlind.png index 9c77e831..c2a20e8d 100644 Binary files a/assets/2x/Jokers/JokerBlind.png and b/assets/2x/Jokers/JokerBlind.png differ diff --git a/assets/2x/Jokers/JokerBorder.png b/assets/2x/Jokers/JokerBorder.png index 9b42fb9d..fb091ed3 100644 Binary files a/assets/2x/Jokers/JokerBorder.png and b/assets/2x/Jokers/JokerBorder.png differ diff --git a/assets/2x/Jokers/JokerHeadache.png b/assets/2x/Jokers/JokerHeadache.png index f976d3a4..c1068dae 100644 Binary files a/assets/2x/Jokers/JokerHeadache.png and b/assets/2x/Jokers/JokerHeadache.png differ diff --git a/assets/2x/Jokers/JokerTaped.png b/assets/2x/Jokers/JokerTaped.png index bf5655cd..799c4b4b 100644 Binary files a/assets/2x/Jokers/JokerTaped.png and b/assets/2x/Jokers/JokerTaped.png differ diff --git a/assets/2x/Jokers/JokerWinking.png b/assets/2x/Jokers/JokerWinking.png index 86622604..1cbc12a8 100644 Binary files a/assets/2x/Jokers/JokerWinking.png and b/assets/2x/Jokers/JokerWinking.png differ diff --git a/assets/2x/Jokers/Jokers.png b/assets/2x/Jokers/Jokers.png index 8f6b74bd..2d8aea39 100644 Binary files a/assets/2x/Jokers/Jokers.png and b/assets/2x/Jokers/Jokers.png differ diff --git a/assets/2x/Jokers/JokersExotic.png b/assets/2x/Jokers/JokersExotic.png index 38cd4fea..7bd58c7c 100644 Binary files a/assets/2x/Jokers/JokersExotic.png and b/assets/2x/Jokers/JokersExotic.png differ diff --git a/assets/2x/Jokers/JokersLegendary.png b/assets/2x/Jokers/JokersLegendary.png index 70e774a2..02269fa4 100644 Binary files a/assets/2x/Jokers/JokersLegendary.png and b/assets/2x/Jokers/JokersLegendary.png differ diff --git a/assets/2x/Links/Link.png b/assets/2x/Links/Link.png index 84cb0d71..4d935bc8 100644 Binary files a/assets/2x/Links/Link.png and b/assets/2x/Links/Link.png differ diff --git a/assets/2x/Resprites/Consumables.png b/assets/2x/Resprites/Consumables.png deleted file mode 100644 index f438a3e6..00000000 Binary files a/assets/2x/Resprites/Consumables.png and /dev/null differ diff --git a/assets/2x/Resprites/EnhancedContrast.png b/assets/2x/Resprites/EnhancedContrast.png index 468eea84..5eb62993 100644 Binary files a/assets/2x/Resprites/EnhancedContrast.png and b/assets/2x/Resprites/EnhancedContrast.png differ diff --git a/assets/2x/Resprites/EnhancedContrastPaperback.png b/assets/2x/Resprites/EnhancedContrastPaperback.png new file mode 100644 index 00000000..576305e7 Binary files /dev/null and b/assets/2x/Resprites/EnhancedContrastPaperback.png differ diff --git a/assets/2x/Resprites/EnhancedUIContrast.png b/assets/2x/Resprites/EnhancedUIContrast.png index bec176d8..16306c77 100644 Binary files a/assets/2x/Resprites/EnhancedUIContrast.png and b/assets/2x/Resprites/EnhancedUIContrast.png differ diff --git a/assets/2x/Resprites/Jokers.png b/assets/2x/Resprites/Jokers.png index 49db4381..1ec344e6 100644 Binary files a/assets/2x/Resprites/Jokers.png and b/assets/2x/Resprites/Jokers.png differ diff --git a/assets/2x/Resprites/Planets.png b/assets/2x/Resprites/Planets.png new file mode 100644 index 00000000..114abdf4 Binary files /dev/null and b/assets/2x/Resprites/Planets.png differ diff --git a/assets/2x/Resprites/Spectrals.png b/assets/2x/Resprites/Spectrals.png new file mode 100644 index 00000000..4a2aeb0d Binary files /dev/null and b/assets/2x/Resprites/Spectrals.png differ diff --git a/assets/2x/Resprites/Tarots.png b/assets/2x/Resprites/Tarots.png new file mode 100644 index 00000000..6b371aa4 Binary files /dev/null and b/assets/2x/Resprites/Tarots.png differ diff --git a/assets/2x/Resprites/collabs/collab_AC_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_AC_EnhancedContrast.png new file mode 100644 index 00000000..7eabab4c Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_AC_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_AU_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_AU_EnhancedContrast.png new file mode 100644 index 00000000..82c802fa Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_AU_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_BUG_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_BUG_EnhancedContrast.png new file mode 100644 index 00000000..69db121b Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_BUG_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_C7_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_C7_EnhancedContrast.png new file mode 100644 index 00000000..f19f734e Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_C7_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_CL_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_CL_EnhancedContrast.png new file mode 100644 index 00000000..912f3f79 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_CL_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_CR_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_CR_EnhancedContrast.png new file mode 100644 index 00000000..96ddbf87 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_CR_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_CYP_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_CYP_EnhancedContrast.png new file mode 100644 index 00000000..c404df12 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_CYP_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_D2_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_D2_EnhancedContrast.png new file mode 100644 index 00000000..8048eb69 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_D2_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_DBD_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_DBD_EnhancedContrast.png new file mode 100644 index 00000000..291a60aa Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_DBD_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_DS_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_DS_EnhancedContrast.png new file mode 100644 index 00000000..96db6413 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_DS_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_DTD_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_DTD_EnhancedContrast.png new file mode 100644 index 00000000..e69039a8 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_DTD_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_EG_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_EG_EnhancedContrast.png new file mode 100644 index 00000000..d51680d7 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_EG_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_FO_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_FO_EnhancedContrast.png new file mode 100644 index 00000000..0ff50bf3 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_FO_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_PC_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_PC_EnhancedContrast.png new file mode 100644 index 00000000..9acc57bf Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_PC_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_R_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_R_EnhancedContrast.png new file mode 100644 index 00000000..9b07800b Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_R_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_SK_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_SK_EnhancedContrast.png new file mode 100644 index 00000000..55fa0ea3 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_SK_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_STP_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_STP_EnhancedContrast.png new file mode 100644 index 00000000..48c8dd74 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_STP_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_STS_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_STS_EnhancedContrast.png new file mode 100644 index 00000000..a7db97f6 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_STS_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_SV_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_SV_EnhancedContrast.png new file mode 100644 index 00000000..76d9039e Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_SV_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_TBoI_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_TBoI_EnhancedContrast.png new file mode 100644 index 00000000..75a9b2ac Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_TBoI_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_TW_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_TW_EnhancedContrast.png new file mode 100644 index 00000000..bb43cfe3 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_TW_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_VS_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_VS_EnhancedContrast.png new file mode 100644 index 00000000..cf0cb650 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_VS_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_WF_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_WF_EnhancedContrast.png new file mode 100644 index 00000000..dd9da8df Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_WF_EnhancedContrast.png differ diff --git a/assets/2x/Resprites/collabs/collab_XR_EnhancedContrast.png b/assets/2x/Resprites/collabs/collab_XR_EnhancedContrast.png new file mode 100644 index 00000000..2e61ec78 Binary files /dev/null and b/assets/2x/Resprites/collabs/collab_XR_EnhancedContrast.png differ diff --git a/assets/2x/Skins/SkinDuckGameHC.png b/assets/2x/Skins/SkinDuckGameHC.png index 2b7c4a87..6aa839a6 100644 Binary files a/assets/2x/Skins/SkinDuckGameHC.png and b/assets/2x/Skins/SkinDuckGameHC.png differ diff --git a/assets/2x/Skins/SkinDuckGameLC.png b/assets/2x/Skins/SkinDuckGameLC.png index 99c3f644..45390dca 100644 Binary files a/assets/2x/Skins/SkinDuckGameLC.png and b/assets/2x/Skins/SkinDuckGameLC.png differ diff --git a/assets/2x/Skins/SkinFiendFolioHC.png b/assets/2x/Skins/SkinFiendFolioHC.png index abcf1852..db5856b3 100644 Binary files a/assets/2x/Skins/SkinFiendFolioHC.png and b/assets/2x/Skins/SkinFiendFolioHC.png differ diff --git a/assets/2x/Skins/SkinFiendFolioLC.png b/assets/2x/Skins/SkinFiendFolioLC.png index 106a5bca..f18e09b7 100644 Binary files a/assets/2x/Skins/SkinFiendFolioLC.png and b/assets/2x/Skins/SkinFiendFolioLC.png differ diff --git a/assets/2x/Skins/SkinLISAThePainfulHC.png b/assets/2x/Skins/SkinLISAThePainfulHC.png index 72d73525..d27d6b17 100644 Binary files a/assets/2x/Skins/SkinLISAThePainfulHC.png and b/assets/2x/Skins/SkinLISAThePainfulHC.png differ diff --git a/assets/2x/Skins/SkinLISAThePainfulLC.png b/assets/2x/Skins/SkinLISAThePainfulLC.png index ff1a0978..d6d33b5d 100644 Binary files a/assets/2x/Skins/SkinLISAThePainfulLC.png and b/assets/2x/Skins/SkinLISAThePainfulLC.png differ diff --git a/assets/2x/Skins/SkinLISAThePointlessHC.png b/assets/2x/Skins/SkinLISAThePointlessHC.png index a65cc30a..8d6de595 100644 Binary files a/assets/2x/Skins/SkinLISAThePointlessHC.png and b/assets/2x/Skins/SkinLISAThePointlessHC.png differ diff --git a/assets/2x/Skins/SkinLISAThePointlessLC.png b/assets/2x/Skins/SkinLISAThePointlessLC.png index 3794a03b..1808e8c1 100644 Binary files a/assets/2x/Skins/SkinLISAThePointlessLC.png and b/assets/2x/Skins/SkinLISAThePointlessLC.png differ diff --git a/assets/2x/Stakes/Stakes.png b/assets/2x/Stakes/Stakes.png index e68ed0e3..ea1ea22d 100644 Binary files a/assets/2x/Stakes/Stakes.png and b/assets/2x/Stakes/Stakes.png differ diff --git a/assets/2x/Stickers/Stickers.png b/assets/2x/Stickers/Stickers.png index 3683b71c..55ae9e3b 100644 Binary files a/assets/2x/Stickers/Stickers.png and b/assets/2x/Stickers/Stickers.png differ diff --git a/assets/2x/Stickers/StickersStake.png b/assets/2x/Stickers/StickersStake.png index c7a82b21..32b8042a 100644 Binary files a/assets/2x/Stickers/StickersStake.png and b/assets/2x/Stickers/StickersStake.png differ diff --git a/assets/2x/Tags/Tags.png b/assets/2x/Tags/Tags.png index 70e82f02..dd280979 100644 Binary files a/assets/2x/Tags/Tags.png and b/assets/2x/Tags/Tags.png differ diff --git a/assets/2x/Tags/TagsEdition.png b/assets/2x/Tags/TagsEdition.png index 3f9b6de2..03dea5ae 100644 Binary files a/assets/2x/Tags/TagsEdition.png and b/assets/2x/Tags/TagsEdition.png differ diff --git a/assets/2x/Tags/TagsExotic.png b/assets/2x/Tags/TagsExotic.png index 4dd575e8..f7c85650 100644 Binary files a/assets/2x/Tags/TagsExotic.png and b/assets/2x/Tags/TagsExotic.png differ diff --git a/assets/2x/Tags/TagsHand.png b/assets/2x/Tags/TagsHand.png index ad8370b1..0313cb96 100644 Binary files a/assets/2x/Tags/TagsHand.png and b/assets/2x/Tags/TagsHand.png differ diff --git a/assets/2x/Tags/TagsSticker.png b/assets/2x/Tags/TagsSticker.png index 3bbe817d..0e95f1a5 100644 Binary files a/assets/2x/Tags/TagsSticker.png and b/assets/2x/Tags/TagsSticker.png differ diff --git a/assets/2x/Vouchers/Vouchers.png b/assets/2x/Vouchers/Vouchers.png index 73e30820..360eff42 100644 Binary files a/assets/2x/Vouchers/Vouchers.png and b/assets/2x/Vouchers/Vouchers.png differ diff --git a/assets/2x/settings.png b/assets/2x/settings.png new file mode 100644 index 00000000..c3cabb10 Binary files /dev/null and b/assets/2x/settings.png differ diff --git a/assets/fonts/font - old.ttf b/assets/fonts/font - old.ttf new file mode 100644 index 00000000..f22eec8f Binary files /dev/null and b/assets/fonts/font - old.ttf differ diff --git a/assets/fonts/font.ttf b/assets/fonts/font.ttf index f22eec8f..aa377bdf 100644 Binary files a/assets/fonts/font.ttf and b/assets/fonts/font.ttf differ diff --git a/assets/shaders/background.fs b/assets/shaders/background.fs index 73b49e17..cf47d2af 100644 --- a/assets/shaders/background.fs +++ b/assets/shaders/background.fs @@ -1,30 +1,37 @@ -extern number time; -extern number spin_time; -extern vec4 colour_1; -extern vec4 colour_2; -extern vec4 colour_3; -extern number contrast; -extern number spin_amount; +#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH) + #define MY_HIGHP_OR_MEDIUMP highp +#else + #define MY_HIGHP_OR_MEDIUMP mediump +#endif + + +extern MY_HIGHP_OR_MEDIUMP number time; +extern MY_HIGHP_OR_MEDIUMP number spin_time; +extern MY_HIGHP_OR_MEDIUMP vec4 colour_1; +extern MY_HIGHP_OR_MEDIUMP vec4 colour_2; +extern MY_HIGHP_OR_MEDIUMP vec4 colour_3; +extern MY_HIGHP_OR_MEDIUMP number contrast; +extern MY_HIGHP_OR_MEDIUMP number spin_amount; #define SPIN_EASE 0.5 vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords ) { //Convert to UV coords (0-1) and floor for pixel effect - number pixel_size = 1.0; - vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy) - vec2(0.12, 0.); - number uv_len = length(uv); + MY_HIGHP_OR_MEDIUMP number pixel_size = 1.0; + MY_HIGHP_OR_MEDIUMP vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy) - vec2(0.12, 0.); + MY_HIGHP_OR_MEDIUMP number uv_len = length(uv); //Adding in a center swirl, changes with time. Only applies meaningfully if the 'spin amount' is a non-zero number - number speed = (spin_time*SPIN_EASE*0.2) + 302.2; - number new_pixel_angle = (atan(uv.y, uv.x)) + speed - SPIN_EASE*20.*(1.*spin_amount*uv_len + (1. - 1.*spin_amount)); - vec2 mid = (love_ScreenSize.xy/length(love_ScreenSize.xy))/2.; + MY_HIGHP_OR_MEDIUMP number speed = (spin_time*SPIN_EASE*0.2) + 302.2; + MY_HIGHP_OR_MEDIUMP number new_pixel_angle = (atan(uv.y, uv.x)) + speed - SPIN_EASE*20.*(1.*spin_amount*uv_len + (1. - 1.*spin_amount)); + MY_HIGHP_OR_MEDIUMP vec2 mid = (love_ScreenSize.xy/length(love_ScreenSize.xy))/2.; uv = (vec2((uv_len * cos(new_pixel_angle) + mid.x), (uv_len * sin(new_pixel_angle) + mid.y)) - mid); //Now add the paint effect to the swirled UV uv *= 30.; speed = time*(2.); - vec2 uv2 = vec2(uv.x+uv.y); + MY_HIGHP_OR_MEDIUMP vec2 uv2 = vec2(uv.x+uv.y); for(int i=0; i < 5; i++) { uv2 += sin(max(uv.x, uv.y)) + uv; @@ -33,13 +40,13 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords } //Make the paint amount range from 0 - 2 - number contrast_mod = (0.25*contrast + 0.5*spin_amount + 1.2); - number paint_res =min(2., max(0.,length(uv)*(0.035)*contrast_mod)); - number c1p = max(0.,1. - contrast_mod*abs(1.-paint_res)); - number c2p = max(0.,1. - contrast_mod*abs(paint_res)); - number c3p = 1. - min(1., c1p + c2p); + MY_HIGHP_OR_MEDIUMP number contrast_mod = (0.25*contrast + 0.5*spin_amount + 1.2); + MY_HIGHP_OR_MEDIUMP number paint_res = min(2., max(0.,length(uv)*(0.035)*contrast_mod)); + MY_HIGHP_OR_MEDIUMP number c1p = max(0.,1. - contrast_mod*abs(1.-paint_res)); + MY_HIGHP_OR_MEDIUMP number c2p = max(0.,1. - contrast_mod*abs(paint_res)); + MY_HIGHP_OR_MEDIUMP number c3p = 1. - min(1., c1p + c2p); - vec4 ret_col = (0.3/contrast)*colour_1 + (1. - 0.3/contrast)*(colour_1*c1p + colour_2*c2p + vec4(c3p*colour_3.rgb, c3p*colour_1.a)); + MY_HIGHP_OR_MEDIUMP vec4 ret_col = (0.3/contrast)*colour_1 + (1. - 0.3/contrast)*(colour_1*c1p + colour_2*c2p + vec4(c3p*colour_3.rgb, c3p*colour_1.a)); return ret_col; } \ No newline at end of file diff --git a/assets/shaders/flame.fs b/assets/shaders/flame.fs index 1d8a1a96..c1b5495b 100644 --- a/assets/shaders/flame.fs +++ b/assets/shaders/flame.fs @@ -25,26 +25,27 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords } //Convert to UV coords (0-1) and floor for pixel effect - vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba - 0.5; - vec2 floored_uv = (floor((uv*PIXEL_SIZE_FAC)))/PIXEL_SIZE_FAC; - vec2 uv_scaled_centered = (floored_uv); + MY_HIGHP_OR_MEDIUMP vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba - 0.5; + MY_HIGHP_OR_MEDIUMP vec2 floored_uv = (floor((uv*PIXEL_SIZE_FAC)))/PIXEL_SIZE_FAC; + MY_HIGHP_OR_MEDIUMP vec2 uv_scaled_centered = (floored_uv); uv_scaled_centered += uv_scaled_centered*0.01*(sin(-1.123*floored_uv.x + 0.2*time)*cos(5.3332*floored_uv.y + time*0.931)); - vec2 flame_up_vec = vec2(0., mod(4.*time, 10000.) - 5000. + mod(1.781*id, 1000.) ); + MY_HIGHP_OR_MEDIUMP vec2 flame_up_vec = vec2(0., mod(4.*time, 10000.) - 5000. + mod(1.781*id, 1000.) ); - float scale_fac = (7.5 + 3./(2. + 2.*intensity)); - vec2 sv = uv_scaled_centered*scale_fac + flame_up_vec; - float speed = mod(20.781*id, 100.) + 1.*sin(time+id)*cos(time*0.151+id); - vec2 sv2 = vec2(0.,0.); + MY_HIGHP_OR_MEDIUMP float scale_fac = (7.5 + 3./(2. + 2.*intensity)); + MY_HIGHP_OR_MEDIUMP vec2 sv = uv_scaled_centered*scale_fac + flame_up_vec; + MY_HIGHP_OR_MEDIUMP float speed = mod(20.781*id, 100.) + 1.*sin(time+id)*cos(time*0.151+id); + MY_HIGHP_OR_MEDIUMP vec2 sv2 = vec2(0.,0.); for(int i=0; i < 5; i++) { - sv2 += sv + 0.05*sv2.yx*(mod(float(i), 2.)>1.?-1.:1.) + 0.3*(cos(length(sv)*0.411) + 0.3344*sin(length(sv)) - 0.23*cos(length(sv))); - sv += 0.5*vec2( - cos(cos(sv2.y) + speed*0.0812)*sin(3.22 + (sv2.x) - speed*0.1531), - sin(-sv2.x*1.21222 + 0.113785*speed)*cos(sv2.y*0.91213 - 0.13582*speed)); - } + sv2 += sv + (0.05*sv2.yx*(mod(float(i), 2.)>1.?-1.:1.)) + (0.3*(cos(length(sv)*0.411) + 0.3344*sin(length(sv)) - 0.23*cos(length(sv)))); + sv += 0.5*vec2( + (cos(cos(sv2.y) + speed*0.0812)*sin(3.22 + (sv2.x) - speed*0.1531)), + (sin(-sv2.x*1.21222 + 0.113785*speed)*cos(sv2.y*0.91213 - 0.13582*speed)) + ); + } //Make the smoke amount range from 0 - 2 - float smoke_res = max(0.,((length((sv - flame_up_vec)/scale_fac*5.)+ 0.1*(length(uv_scaled_centered) - 0.5))*(2./(2.+ intensity*0.2)))) ; + MY_HIGHP_OR_MEDIUMP float smoke_res = (max(0.,((length((sv - flame_up_vec)/scale_fac*5.)+ 0.1*(length(uv_scaled_centered) - 0.5))*(2./(2.+ intensity*0.2))))); smoke_res = intensity < 0.1 ? 1.: smoke_res + max(0., 2. - 0.3*intensity)*max(0., 2.*(uv_scaled_centered.y - 0.5)*(uv_scaled_centered.y - 0.5)); if(abs(uv.x) > 0.4){ @@ -54,7 +55,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords smoke_res = smoke_res + min(8.5,intensity*10.)*(length((uv - vec2(0., 0.1))*vec2(0.19, 1.))-0.1); } - vec4 ret_col = colour_1; + MY_HIGHP_OR_MEDIUMP vec4 ret_col = colour_1; if(smoke_res > 1.){ ret_col.a = 0.; }else{ diff --git a/assets/shaders/fluorescent.fs b/assets/shaders/fluorescent.fs index 89151179..77932ca8 100644 --- a/assets/shaders/fluorescent.fs +++ b/assets/shaders/fluorescent.fs @@ -103,27 +103,26 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba; // Dummy, doesn't do anything but at least it makes the shader useable - if (uv.x > uv.x * 2){ + if (uv.x > uv.x * 2.0){ uv = fluorescent; } - vec3 targetColors[6] = vec3[6]( - vec3(1.0, 0.0, 0.0), // Red - vec3(0.0, 1.0, 0.0), // Green - vec3(0.0, 0.0, 1.0), // Blue - vec3(1.0, 1.0, 0.0), // Yellow - vec3(0.0, 1.0, 1.0), // Cyan - vec3(1.0, 0.0, 1.0) // Magenta - ); - - float sharpnessMultipliers[6] = float[6]( - 3.0, // Red - 3.0, // Green - 3.0, // Blue - 3.0, // Yellow - 3.0, // Cyan - 3.0 // Magenta - ); + // this form of array declaration is less elegant, but it fixes GLES compatibility issues on android + vec3 targetColors[6]; + targetColors[0] = vec3(1.0, 0.0, 0.0); // Red + targetColors[1] = vec3(0.0, 1.0, 0.0); // Green + targetColors[2] = vec3(0.0, 0.0, 1.0); // Blue + targetColors[3] = vec3(1.0, 1.0, 0.0); // Yellow + targetColors[4] = vec3(0.0, 1.0, 1.0); // Cyan + targetColors[5] = vec3(1.0, 0.0, 1.0); // Magenta + + float sharpnessMultipliers[6]; + sharpnessMultipliers[0] = 3.0; // Red + sharpnessMultipliers[1] = 3.0; // Green + sharpnessMultipliers[2] = 3.0; // Blue + sharpnessMultipliers[3] = 3.0; // Yellow + sharpnessMultipliers[4] = 3.0; // Cyan + sharpnessMultipliers[5] = 3.0; // Magenta float effect = 0.7 + (0.3 * clamp(cos(sin(uv.y * 8.24 + fluorescent.x * 6.0) + sin(uv.x * 6.12 + fluorescent.x * 2.0) * fluorescent.x * uv.y * 3.15), 0.0, 1.0)); @@ -188,6 +187,6 @@ vec4 position( mat4 transform_projection, vec4 vertex_position ) float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-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); } #endif \ No newline at end of file diff --git a/assets/shaders/glitter.fs b/assets/shaders/glitter.fs index c9a36463..876e3a45 100644 --- a/assets/shaders/glitter.fs +++ b/assets/shaders/glitter.fs @@ -208,7 +208,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba; // Dummy, doesn't do anything but at least it makes the shader useable - if (uv.x > uv.x * 2){ + if (uv.x > uv.x * 2.0){ uv = glitter; } @@ -261,6 +261,6 @@ vec4 position( mat4 transform_projection, vec4 vertex_position ) float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-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); } #endif \ No newline at end of file diff --git a/assets/shaders/headache.fs b/assets/shaders/headache.fs index a6173b5b..45ebdc7f 100644 --- a/assets/shaders/headache.fs +++ b/assets/shaders/headache.fs @@ -62,12 +62,12 @@ vec4 layerTexel( Image texture, vec2 uv, int frame, vec2 displace, float paralla vec4 col = vec4(0.0); if (tile) { duv = mod(duv + vec2(headache.z * 10.0) / image_details, vec2(69.0 / image_details.x, 69.0 / image_details.y)); - vec2 fuv = duv + (vec2((frame * 71.0) + 1.0, 1.0) / image_details); + vec2 fuv = duv + (vec2((float(frame) * 71.0) + 1.0, 1.0) / image_details); col = Texel(texture, fuv); } else { if ((duv.x >= 0.0) && (duv.x <= 71.0 / image_details.x) && (duv.y >= 0.0) && (duv.y <= 1.0)) { - vec2 fuv = duv + (vec2(frame * 71.0, 0.0) / image_details); + vec2 fuv = duv + (vec2(float(frame) * 71.0, 0.0) / image_details); col = Texel(texture, fuv); } } @@ -93,7 +93,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float mult = 5.0; float steps = 0.25; - for (float i = 0; i <= 1; i += steps) { + for (float i = 0.0; i <= 1.0; i += steps) { vec4 layerTex = layerTexel(texture, texture_coords, 4, headache.xy, 14.0 + mult - i * mult, true); layerTex.a *= maskTex.a; layerTex.a *= i * 0.3; @@ -101,7 +101,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords blendedTex = alphaBlend(layerTex, blendedTex); } - for (float i = 0; i <= 1; i += steps) { + for (float i = 0.0; i <= 1.0; i += steps) { vec4 layerTex = layerTexel(texture, texture_coords, 3, headache.xy, 5.0 + mult - i * mult, false); layerTex.a *= maskTex.a; layerTex.a *= i; @@ -109,7 +109,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords blendedTex = alphaBlend(layerTex, blendedTex); } - for (float i = 0; i <= 1; i += steps) { + for (float i = 0.0; i <= 1.0; i += steps) { vec4 layerTex = layerTexel(texture, texture_coords, 2, headache.xy, 2.5 + mult - i * mult, false); layerTex.a *= maskTex.a; layerTex.a *= i; @@ -119,7 +119,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords vec2 uv = (((texture_coords) * (image_details)) - texture_details.xy * texture_details.ba) / texture_details.ba; // Dummy, doesn't do anything but at least it makes the shader useable - if (uv.x > uv.x * 2){ + if (uv.x > uv.x * 2.0){ uv = headache.xy; } return dissolve_mask(blendedTex, texture_coords, uv); diff --git a/assets/shaders/splash.fs b/assets/shaders/splash.fs index 16e3dd03..0f0037bb 100644 --- a/assets/shaders/splash.fs +++ b/assets/shaders/splash.fs @@ -1,9 +1,15 @@ -extern number time; -extern number vort_speed; -extern vec4 colour_1; -extern vec4 colour_2; -extern number mid_flash; -extern number vort_offset; +#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH) + #define MY_HIGHP_OR_MEDIUMP highp +#else + #define MY_HIGHP_OR_MEDIUMP mediump +#endif + +extern MY_HIGHP_OR_MEDIUMP number time; +extern MY_HIGHP_OR_MEDIUMP number vort_speed; +extern MY_HIGHP_OR_MEDIUMP vec4 colour_1; +extern MY_HIGHP_OR_MEDIUMP vec4 colour_2; +extern MY_HIGHP_OR_MEDIUMP number mid_flash; +extern MY_HIGHP_OR_MEDIUMP number vort_offset; #define BLACK 0.6*vec4(79./255.,99./255., 103./255., 1./0.6) @@ -11,20 +17,20 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords { //Convert to UV coords (0-1) and floor for pixel effect number pixel_size = 1.0; - vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy); - number uv_len = length(uv); + MY_HIGHP_OR_MEDIUMP vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy); + MY_HIGHP_OR_MEDIUMP number uv_len = length(uv); //Adding in a center swirl, changes with time - number speed = time*vort_speed; - number new_pixel_angle = atan(uv.y, uv.x) + (2.2 + 0.4*min(6.,speed))*uv_len - 1. - speed*0.05 - min(6.,speed)*speed*0.02 + vort_offset; - vec2 mid = (love_ScreenSize.xy/length(love_ScreenSize.xy))/2.; - vec2 sv = vec2((uv_len * cos(new_pixel_angle) + mid.x), (uv_len * sin(new_pixel_angle) + mid.y)) - mid; + MY_HIGHP_OR_MEDIUMP number speed = time*vort_speed; + MY_HIGHP_OR_MEDIUMP number new_pixel_angle = atan(uv.y, uv.x) + (2.2 + 0.4*min(6.,speed))*uv_len - 1. - speed*0.05 - min(6.,speed)*speed*0.02 + vort_offset; + MY_HIGHP_OR_MEDIUMP vec2 mid = (love_ScreenSize.xy/length(love_ScreenSize.xy))/2.; + MY_HIGHP_OR_MEDIUMP vec2 sv = vec2((uv_len * cos(new_pixel_angle) + mid.x), (uv_len * sin(new_pixel_angle) + mid.y)) - mid; //Now add the smoke effect to the swirled UV sv *= 30.; speed = time*(6.)*vort_speed + vort_offset + 1033.; - vec2 uv2 = vec2(sv.x+sv.y); + MY_HIGHP_OR_MEDIUMP vec2 uv2 = vec2(sv.x+sv.y); for(int i=0; i < 5; i++) { uv2 += sin(max(sv.x, sv.y)) + sv; @@ -33,17 +39,17 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords } //Make the smoke amount range from 0 - 2 - number smoke_res =min(2., max(-2., 1.5 + length(sv)*0.12 - 0.17*(min(10.,time*1.2 - 4.)))); + MY_HIGHP_OR_MEDIUMP number smoke_res = min(2., max(-2., 1.5 + length(sv)*0.12 - 0.17*(min(10.,time*1.2 - 4.)))); if (smoke_res < 0.2) { smoke_res = (smoke_res - 0.2)*0.6 + 0.2; } - number c1p = max(0.,1. - 2.*abs(1.-smoke_res)); - number c2p = max(0.,1. - 2.*(smoke_res)); - number cb = 1. - min(1., c1p + c2p); + MY_HIGHP_OR_MEDIUMP number c1p = max(0.,1. - 2.*abs(1.-smoke_res)); + MY_HIGHP_OR_MEDIUMP number c2p = max(0.,1. - 2.*(smoke_res)); + MY_HIGHP_OR_MEDIUMP number cb = 1. - min(1., c1p + c2p); - vec4 ret_col = colour_1*c1p + colour_2*c2p + vec4(cb*BLACK.rgb, cb*colour_1.a); - number mod_flash = max(mid_flash*0.8, max(c1p, c2p)*5. - 4.4) + mid_flash*max(c1p, c2p); + MY_HIGHP_OR_MEDIUMP vec4 ret_col = colour_1*c1p + colour_2*c2p + vec4(cb*BLACK.rgb, cb*colour_1.a); + MY_HIGHP_OR_MEDIUMP number mod_flash = max(mid_flash*0.8, max(c1p, c2p)*5. - 4.4) + mid_flash*max(c1p, c2p); return ret_col*(1. - mod_flash) + mod_flash*vec4(1., 1., 1., 1.); -} \ No newline at end of file +} diff --git a/assets/sounds/crown.ogg b/assets/sounds/crown.ogg new file mode 100644 index 00000000..335aa210 Binary files /dev/null and b/assets/sounds/crown.ogg differ diff --git a/assets/sounds/meow3.wav b/assets/sounds/meow3.wav new file mode 100755 index 00000000..1495fdcd Binary files /dev/null and b/assets/sounds/meow3.wav differ diff --git a/assets/sounds/star.ogg b/assets/sounds/star.ogg new file mode 100644 index 00000000..9a7fdae9 Binary files /dev/null and b/assets/sounds/star.ogg differ diff --git a/compat/jokerdisplay.lua b/compat/jokerdisplay.lua index b492d1ea..2ebcb80c 100644 --- a/compat/jokerdisplay.lua +++ b/compat/jokerdisplay.lua @@ -98,38 +98,32 @@ jd_def["j_bunc_crop_circles"] = { -- Crop Circles }, text_config = { colour = G.C.MULT }, calc_function = function(card) - local mult = 0 + local rank_mult = 0 + local suit_mult = 0 local hand = next(G.play.cards) and G.play.cards or G.hand.highlighted local text, _, scoring_hand = JokerDisplay.evaluate_hand(hand) if text ~= "Unknown" then for _, scoring_card in pairs(scoring_hand) do - if scoring_card.config.center ~= G.P_CENTERS.m_stone then - local retriggers = JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand) - if scoring_card.base.suit == ('bunc_Fleurons') then - if scoring_card:get_id() == 8 then - mult = mult + 6 * retriggers - elseif scoring_card:get_id() == 12 or scoring_card:get_id() == 10 or scoring_card:get_id() == 9 or scoring_card:get_id() == 6 then - mult = mult + 5 * retriggers - else - mult = mult + 4 * retriggers - end - elseif scoring_card.base.suit == ('Clubs') then - if scoring_card:get_id() == 8 then - mult = mult + 5 * retriggers - elseif scoring_card:get_id() == 12 or scoring_card:get_id() == 10 or scoring_card:get_id() == 9 or scoring_card:get_id() == 6 then - mult = mult + 4 * retriggers - else - mult = mult + 3 * retriggers - end - elseif scoring_card:get_id() == 8 then - mult = mult + 2 * retriggers + local retriggers = JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand) + + if not SMODS.has_no_suit(scoring_card) then + if scoring_card.base.suit == "bunc_Fleurons" then + suit_mult = suit_mult + 4 * retriggers + elseif scoring_card.base.suit == "Clubs" then + suit_mult = suit_mult + 3 * retriggers + end + end + + if not SMODS.has_no_rank(scoring_card) then + if scoring_card:get_id() == 8 then + rank_mult = rank_mult + 2 * retriggers elseif scoring_card:get_id() == 12 or scoring_card:get_id() == 10 or scoring_card:get_id() == 9 or scoring_card:get_id() == 6 then - mult = mult + 1 * retriggers + rank_mult = rank_mult + 1 * retriggers end end end end - card.joker_display_values.mult = mult + card.joker_display_values.mult = rank_mult + suit_mult end } jd_def["j_bunc_xray"] = { -- X-Ray @@ -163,18 +157,36 @@ jd_def["j_bunc_prehistoric"] = { -- Prehistoric Joker local mult = 0 local hand = next(G.play.cards) and G.play.cards or G.hand.highlighted local text, _, scoring_hand = JokerDisplay.evaluate_hand(hand) + local card_list = {} if text ~= "Unknown" then + for _, previously_played_card in ipairs(card.ability.extra.card_list) do + local include = true + for _, scoring_card in ipairs(scoring_hand) do + if scoring_card.unique_val == previously_played_card.ID then + include = false + break + end + end + if include then + table.insert(card_list, previously_played_card) + end + end for _, scoring_card in pairs(scoring_hand) do - if scoring_card.config.center ~= G.P_CENTERS.m_stone then - for _, previously_played_card in pairs(card.ability.extra.card_list) do - if (previously_played_card:get_id() == scoring_card:get_id()) - and (previously_played_card:is_suit(scoring_card.base.suit) or scoring_card.config.center == G.P_CENTERS.m_wild) then + if not(SMODS.has_no_suit(scoring_card) or SMODS.has_no_rank(scoring_card)) then + for _, previously_played_card in pairs(card_list) do + if (aij_ids_op(scoring_card, '==', previously_played_card.rank)) + and (previously_played_card.has_any_suit or scoring_card:is_suit(previously_played_card.suit)) then mult = mult + card.ability.extra.mult * JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand) break end end + table.insert(card_list, { + rank = scoring_card:get_id(), + suit = scoring_card.base.suit, + has_any_suit = SMODS.has_any_suit(scoring_card) + }) end end end @@ -274,9 +286,12 @@ jd_def["j_bunc_dogs_playing_poker"] = { -- Dogs Playing Poker if #hand > 0 and text ~= "Unknown" then is_dogs_hand = true for _, scoring_card in pairs(scoring_hand) do - if scoring_card:get_id() >= 6 or - scoring_card:get_id() < 2 and - scoring_card.config.center ~= G.P_CENTERS.m_stone then + if not ( + scoring_card:get_id() == 2 or + scoring_card:get_id() == 3 or + scoring_card:get_id() == 4 or + scoring_card:get_id() == 5 + ) or SMODS.has_no_rank(scoring_card) then is_dogs_hand = false end end @@ -295,15 +310,15 @@ jd_def["j_bunc_fiendish"] = { -- Fiendish Joker extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_fiendish") end } jd_def["j_bunc_carnival"] = { -- Carnival @@ -360,51 +375,60 @@ jd_def["j_bunc_fingerprints"] = { -- Fingerprints } jd_def["j_bunc_zero_shapiro"] = { -- Zero Shapiro text = { + { text = "+" }, + { ref_table = "card.joker_display_values", ref_value = "count", retrigger_type = "mult" }, + }, + text_config = { colour = G.C.GREEN }, + extra = { { - border_nodes = { - { text = "X" }, - { ref_table = "card.ability.extra", ref_value = "amount" } - }, - border_colour = G.C.GREEN + { text = "(" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, + { text = " in " }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, + { text = ")" }, } }, -} -jd_def["j_bunc_nil_bill"] = { -- Nil Bill - text = { - { text = "+$" }, - { ref_table = "card.joker_display_values", ref_value = "dollars" }, - }, - text_config = { colour = G.C.GOLD }, - reminder_text = { - { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "localized_text", colour = G.C.ORANGE }, - { text = ")" }, - }, + extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - local dollars = 0 - local hand = next(G.play.cards) and G.play.cards or G.hand.highlighted - local text, _, scoring_hand = JokerDisplay.evaluate_hand(hand) + local count = 0 + local text, _, scoring_hand = JokerDisplay.evaluate_hand() if text ~= 'Unknown' then for _, scoring_card in pairs(scoring_hand) do - if scoring_card.debuff then - dollars = dollars + - card.ability.extra.bonus + if scoring_card:get_id() == 11 or scoring_card:get_id() == 12 or scoring_card:get_id() == 13 or SMODS.has_no_rank(scoring_card) then + count = count + JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand) end end end - card.joker_display_values.dollars = dollars - card.joker_display_values.localized_text = localize("k_debuffed") + card.joker_display_values.count = count + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_zero_shapiro") end } +jd_def["j_bunc_nil_bill"] = { -- Nil Bill + text = { + { text = "+$" }, + { ref_table = "card.ability.extra", ref_value = "bonus" }, + }, + text_config = { colour = G.C.GOLD }, +} jd_def["j_bunc_bierdeckel"] = { -- Bierdeckel } jd_def["j_bunc_registration_plate"] = { -- Registration Plate - reminder_text = { + text = { { text = "(" }, - { ref_table = "card.ability.extra", ref_value = "combination" }, + { ref_table = "card.joker_display_values", ref_value = "combination" }, { text = ")" }, }, + calc_function = function(card) + local vars = "" + for i = 1, #card.ability.extra.combination do + vars = vars .. localize(card.ability.extra.combination[i], 'ranks') + if i ~= #card.ability.extra.combination then + vars = vars .. " " + end + end + card.joker_display_values.combination = vars + end } jd_def["j_bunc_slothful"] = { -- Slothful Joker text = { @@ -438,14 +462,6 @@ jd_def["j_bunc_slothful"] = { -- Slothful Joker end } jd_def["j_bunc_neon"] = { -- Neon Joker - text = { - { - border_nodes = { - { text = "X" }, - { ref_table = "card.ability.extra", ref_value = "xmult" } - } - } - }, } jd_def["j_bunc_gameplan"] = { -- Gameplan mod_function = function(card, mod_joker) @@ -516,15 +532,15 @@ jd_def["j_bunc_head_in_the_clouds"] = { -- Head in the Clouds extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_head_in_the_clouds") end } jd_def["j_bunc_headshot"] = { -- Headshot @@ -562,36 +578,55 @@ jd_def["j_bunc_trigger_finger"] = { -- Trigger Finger extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_trigger_finger") end } jd_def["j_bunc_hopscotch"] = { -- Hopscotch } jd_def["j_bunc_pawn"] = { -- Pawn - + text = { + { text = "(" }, + { ref_table = "card.joker_display_values", ref_value = "lowest_rank" }, + { text = ")" }, + }, + calc_function = function(card) + local lowest_rank = "" + if G.playing_cards and #G.playing_cards > 0 then + local rank = math.huge + local display_rank = "" + for _, deck_card in ipairs(G.playing_cards) do + if deck_card:get_id() < rank and not SMODS.has_no_rank(deck_card) then + rank = deck_card:get_id() + display_rank = deck_card.base.value + end + end + lowest_rank = localize(tostring(display_rank), 'ranks') + end + card.joker_display_values.lowest_rank = lowest_rank or localize("2", 'ranks') + end, } jd_def["j_bunc_puzzle_board"] = { -- Puzzle Board extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_puzzle_board") end } jd_def["j_bunc_vandalism"] = { -- Vandalism @@ -599,15 +634,15 @@ jd_def["j_bunc_vandalism"] = { -- Vandalism extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_vandalism") end } jd_def["j_bunc_protester"] = { -- Protester @@ -760,35 +795,196 @@ jd_def["j_bunc_wino"] = { -- Wino end } jd_def["j_bunc_bounty_hunter"] = { -- Bounty Hunter + text = { + { text = "+" }, + { ref_table = "card.ability.extra", ref_value = "mult" } + }, + text_config = { colour = G.C.MULT }, +} +jd_def["j_bunc_mousetrap"] = { -- Mousetrap + text = { + { text = "+" }, + { ref_table = "card.ability.extra", ref_value = "chips" } + }, + text_config = { colour = G.C.CHIPS }, + extra = { + { + { text = "(" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, + { text = " in " }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, + { text = ")" }, + } + }, + extra_config = { colour = G.C.GREEN, scale = 0.3 }, + calc_function = function(card) + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_mousetrap") + end +} +jd_def["j_bunc_the_joker"] = { -- The Joker + extra = { + { + { text = "(" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, + { text = " in " }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, + { text = ")" }, + } + }, + extra_config = { colour = G.C.GREEN, scale = 0.3 }, + calc_function = function(card) + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_the_joker") + end +} +jd_def["j_bunc_tangram"] = { -- Tangram text = { { text = "+" }, { ref_table = "card.joker_display_values", ref_value = "mult" } }, text_config = { colour = G.C.MULT }, + reminder_text = { + { text = "(7)" } + }, calc_function = function(card) - card.joker_display_values.mult = G.GAME.dollars < 0 and card.ability.extra.mult * math.abs(G.GAME.dollars) or 0 + local mult = 0 + local hand = next(G.play.cards) and G.play.cards or G.hand.highlighted + local text, _, scoring_hand = JokerDisplay.evaluate_hand(hand) + if text ~= 'Unknown' then + local sevens_played = 0 + local sevens_scored = 0 + + for _, scoring_card in pairs(scoring_hand) do + if scoring_card:get_id() == 7 then + sevens_played = sevens_played + 1 + sevens_scored = sevens_scored + JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand) + end + end + + mult = card.ability.extra.mult * sevens_played * sevens_scored + end + card.joker_display_values.mult = mult + end, +} +jd_def["j_bunc_domino"] = { -- Domino +} +jd_def["j_bunc_glue_gun"] = { -- Glue Gun + reminder_text = { + { ref_table = "card.joker_display_values", ref_value = "active_text" }, + }, + calc_function = function(card) + local active = (G.hand and G.hand.highlighted and (#G.hand.highlighted > 1) and (#G.hand.highlighted <= card.ability.extra.amount)) or false + card.joker_display_values.active_text = localize(active and 'k_active' or 'bunc_inactive') + end, + style_function = function(card, text, reminder_text, extra) + if reminder_text and reminder_text.children[1] then + reminder_text.children[1].config.colour = card.joker_display_values.active and G.C.GREEN or G.C.RED + reminder_text.children[1].config.scale = card.joker_display_values.active and 0.35 or 0.3 + return true + end + return false end } -jd_def["j_bunc_mousetrap"] = { -- Mousetrap +jd_def["j_bunc_taped"] = { -- Taped Jokers + reminder_text = { + { ref_table = "card.joker_display_values", ref_value = "active_text" }, + }, + calc_function = function(card) + local is_boss_blind = G.GAME and G.GAME.blind and G.GAME.blind.get_type and + ((not G.GAME.blind.disabled) and (G.GAME.blind:get_type() == 'Boss')) + local first_hand = G.GAME and G.GAME.current_round.hands_played == 0 + card.joker_display_values.active = is_boss_blind and first_hand + card.joker_display_values.active_text = localize(is_boss_blind and first_hand and 'k_active' or is_boss_blind and 'k_inactive' or 'ph_no_boss_active') + end, + style_function = function(card, text, reminder_text, extra) + if reminder_text and reminder_text.children[1] then + reminder_text.children[1].config.colour = card.joker_display_values.active and G.C.GREEN or G.C.RED + reminder_text.children[1].config.scale = card.joker_display_values.active and 0.35 or 0.3 + return true + end + return false + end +} +jd_def["j_bunc_rubber_band_ball"] = { -- Rubber Band Ball + text = { + { + border_nodes = { + { text = "X" }, + { ref_table = "card.ability.extra", ref_value = "xmult" } + } + } + } +} +jd_def["j_bunc_headache"] = { -- Headache + text = { + }, + reminder_text = { + { text = "(" }, + { ref_table = "card.ability.extra", ref_value = "destroyed" }, + { text = "/" }, + { ref_table = "card.ability.extra", ref_value = "amount" }, + { text = ")" }, + } +} +jd_def["j_bunc_games_collector"] = { -- Games Collector text = { { text = "+" }, { ref_table = "card.ability.extra", ref_value = "chips" } }, text_config = { colour = G.C.CHIPS }, +} +jd_def["j_bunc_jumper"] = { -- Jumper + text = { + { text = "+" }, + { ref_table = "card.ability.extra", ref_value = "chips" } + }, + text_config = { colour = G.C.CHIPS }, +} +jd_def["j_bunc_stylophone"] = { -- Stylophone + text = { + { text = "+" }, + { ref_table = "card.joker_display_values", ref_value = "mult" } + }, + text_config = { colour = G.C.MULT }, + calc_function = function(card) + local mult = 0 + local hand = next(G.play.cards) and G.play.cards or G.hand.highlighted + local text, _, scoring_hand = JokerDisplay.evaluate_hand(hand) + if text ~= 'Unknown' then + for _, scoring_card in pairs(scoring_hand) do + if not SMODS.has_no_rank(scoring_card) then + mult = mult + scoring_card:get_id() * card.ability.extra.x * JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand) + end + end + end + card.joker_display_values.mult = mult + end, +} +jd_def["j_bunc_kite_experiment"] = { -- Kite Experiment extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, extra_config = { colour = G.C.GREEN, scale = 0.3 }, calc_function = function(card) - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_kite_experiment") end } +jd_def["j_bunc_robot"] = { -- Robot + text = { + { text = "+" }, + { ref_table = "card.ability.extra", ref_value = "mult" } + }, + text_config = { colour = G.C.MULT }, +} +jd_def["j_bunc_hardtack"] = { -- Hardtack +} +jd_def["j_bunc_pica_joker"] = { -- Pica Joker +} -- Exotic Jokers @@ -927,9 +1123,9 @@ jd_def["j_bunc_wishalloy"] = { -- Wishalloy extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, @@ -947,7 +1143,7 @@ jd_def["j_bunc_wishalloy"] = { -- Wishalloy end card.joker_display_values.count = count card.joker_display_values.localized_text = localize("bunc_Fleurons", 'suits_plural') - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_wishalloy") end, style_function = function(card, text, reminder_text, extra) if reminder_text and reminder_text.children[2] then @@ -1022,14 +1218,36 @@ jd_def["j_bunc_magic_wand"] = { -- Magic Wand text = { { border_nodes = { - { text = "X" }, - { ref_table = "card.ability.extra", ref_value = "xmult" } + { text = "+" }, + { ref_table = "card.ability.extra", ref_value = "mult" } } } }, } jd_def["j_bunc_starfruit"] = { -- Starfruit - + reminder_text = { + { text = "(" }, + { ref_table = "card.joker_display_values", ref_value = "active" }, + { text = ")" }, + }, + extra = { + { + { text = "(" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, + { text = " in " }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, + { text = ")" }, + } + }, + extra_config = { colour = G.C.GREEN, scale = 0.3 }, + calc_function = function(card) + local hand = next(G.play.cards) and G.play.cards or G.hand.highlighted + local _, poker_hands, _ = JokerDisplay.evaluate_hand(hand) + card.joker_display_values.active = poker_hands['h_bunc_Spectrum'] and next(poker_hands['h_bunc_Spectrum']) and + localize("k_active_ex") or "Inactive" + card.joker_display_values.localized_text = localize("h_bunc_Spectrum", 'poker_hands') + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_starfruit") + end, } jd_def["j_bunc_fondue"] = { -- Fondue reminder_text = { @@ -1059,9 +1277,9 @@ jd_def["j_bunc_roygbiv"] = { -- Roy G. Biv extra = { { { text = "(" }, - { ref_table = "card.joker_display_values", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "numerator" }, { text = " in " }, - { ref_table = "card.ability.extra", ref_value = "odds" }, + { ref_table = "card.joker_display_values", ref_value = "denominator" }, { text = ")" }, } }, @@ -1072,7 +1290,7 @@ jd_def["j_bunc_roygbiv"] = { -- Roy G. Biv card.joker_display_values.active = poker_hands['h_bunc_Spectrum'] and next(poker_hands['h_bunc_Spectrum']) and localize("k_active_ex") or "Inactive" card.joker_display_values.localized_text = localize("h_bunc_Spectrum", 'poker_hands') - card.joker_display_values.odds = G.GAME and G.GAME.probabilities.normal or 1 + card.joker_display_values.numerator, card.joker_display_values.denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "bunc_roygbiv") end, } diff --git a/config.lua b/config.lua index f1954849..6bfff2d6 100644 --- a/config.lua +++ b/config.lua @@ -1,21 +1,21 @@ return { - colorful_finishers = true; -- Makes the finisher blinds (such as Verdant Leaf) have their own colors + colorful_finishers = true, -- Makes the finisher blinds (such as Verdant Leaf) have their own colors -- Values: true/false (default: true) - high_quality_shaders = true; -- Makes some things like the background render at a higher quality + high_quality_shaders = true, -- Makes some things like the background render at a higher quality -- Values: true/false (default: true) - jokerlike_consumable_editions = false; -- Enabling this will revert vanilla behaviour of editions on consumables - they will always affect card calculation + jokerlike_consumable_editions = false, -- Enabling this will revert vanilla behaviour of editions on consumables - they will always affect card calculation -- Values: true/false (default: false) - fixed_badges = false; -- Changes how badges on the planets work - "Planet" for every non-hidden planet and "Planet?" for secret poker hand planets + fixed_badges = false, -- Changes how badges on the planets work - "Planet" for every non-hidden planet and "Planet?" for secret poker hand planets -- Values: true/false (default: false) - fixed_sprites = true; -- Fixes some stray pixels and various weirdness + fixed_sprites = true, -- Fixes some stray pixels and various weirdness -- Values: true/false (default: true) - gameplay_reworks = true; -- Reworks some of the vanilla features + gameplay_reworks = true, -- Reworks some of the vanilla features -- Values: true/false (default: true) } \ No newline at end of file diff --git a/localization/default.lua b/localization/default.lua index 217fcdbc..c76506dd 100644 --- a/localization/default.lua +++ b/localization/default.lua @@ -6,7 +6,7 @@ return { bunc_colorful_finishers = 'Colorful Final Blinds', bunc_colorful_finishers_desc = 'Enables colorful backgrounds for the final blinds', - bunc_colorful_finishers_desc_2 = 'and removes gray background in the Endless Mode', + bunc_colorful_finishers_desc_2 = 'and removes the gray background in Endless Mode', bunc_high_quality_shaders = 'High Quality Shaders', bunc_high_quality_shaders_desc = 'Makes some of the vanilla shaders', @@ -21,7 +21,7 @@ return { bunc_gameplay_reworks_desc_2 = 'to make the game more enjoyable', bunc_fixed_badges = 'Fixed Badges', - bunc_fixed_badges_desc = 'Changes the badges on consumables by replacing confusing', + bunc_fixed_badges_desc = 'Changes the badges on Planet Cards: replaces', bunc_fixed_badges_desc_2 = 'flavor text with indication of their way of obtaining', bunc_jokerlike_consumable_editions = 'Editions in Consumables Slot', @@ -60,6 +60,7 @@ return { bunc_exceeded_score = 'Exceeded the limit!', bunc_min_ante = 'Minimum Ante:', bunc_final_blind = 'Final Blind', + bunc_volume = 'Volume', -- Consumable types @@ -139,7 +140,31 @@ return { }, default_Diamonds = { ['3'] = 'Recast Contrast' - } + }, + collab_AU = { ['3'] = 'Recast Contrast' }, + collab_TBoI = { ['3'] = 'Recast Contrast' }, + collab_CL = { ['3'] = 'Recast Contrast' }, + collab_D2 = { ['3'] = 'Recast Contrast' }, + collab_BUG = { ['3'] = 'Recast Contrast' }, + collab_CR = { ['3'] = 'Recast Contrast' }, + collab_DTD = { ['3'] = 'Recast Contrast' }, + collab_SV = { ['3'] = 'Recast Contrast' }, + collab_EG = { ['3'] = 'Recast Contrast' }, + collab_XR = { ['3'] = 'Recast Contrast' }, + collab_C7 = { ['3'] = 'Recast Contrast' }, + collab_R = { ['3'] = 'Recast Contrast' }, + collab_VS = { ['3'] = 'Recast Contrast' }, + collab_STS = { ['3'] = 'Recast Contrast' }, + collab_PC = { ['3'] = 'Recast Contrast' }, + collab_WF = { ['3'] = 'Recast Contrast' }, + collab_DBD = { ['3'] = 'Recast Contrast' }, + collab_FO = { ['3'] = 'Recast Contrast' }, + collab_TW = { ['3'] = 'Recast Contrast' }, + collab_CYP = { ['3'] = 'Recast Contrast' }, + collab_SK = { ['3'] = 'Recast Contrast' }, + collab_DS = { ['3'] = 'Recast Contrast' }, + collab_AC = { ['3'] = 'Recast Contrast' }, + collab_STP = { ['3'] = 'Recast Contrast' }, }, collabs = { bunc_Fleurons = { @@ -152,6 +177,28 @@ return { ['2'] = 'Fiend Folio', ['3'] = 'LISA: The Pointless' } + }, + + quips = { + pnr_bunc_voxel_1 = { + "Ow!" + }, + pnr_bunc_voxel_2 = { + "Ouch!" + }, + pnr_bunc_voxel_3 = { + "Youch!" + }, + pnr_bunc_voxel_4 = { + "Hey, can you...", + "not?" + }, + pnr_bunc_voxel_5 = { + "Oof!" + }, + pnr_bunc_voxel_6 = { + "..." + } } }, descriptions = { @@ -200,30 +247,6 @@ return { [2] = '{C:bunc_fleurons}Fleuron{} or {C:bunc_halberds}Halberd{} suit' } }, - bunc_consumable_edition_foil = { - ['name'] = 'Foil', - ['text'] = { - [1] = 'Create a {C:attention}Chips Tag' - } - }, - bunc_consumable_edition_holo = { - ['name'] = 'Holographic', - ['text'] = { - [1] = 'Create a {C:attention}Mult Tag' - } - }, - bunc_consumable_edition_polychrome = { - ['name'] = 'Polychrome', - ['text'] = { - [1] = 'Create a {C:attention}Megamult Tag' - } - }, - bunc_consumable_edition_bunc_glitter = { - ['name'] = 'Glitter', - ['text'] = { - [1] = 'Create a {C:attention}Ultrachips Tag' - } - }, -- Undiscovered @@ -243,8 +266,8 @@ return { ['name'] = 'Blind Pack', ['text'] = { [1] = 'Choose one of up to', - [2] = '{C:attention}#1# Boss Blinds{} to', - [3] = 'replace on this Ante' + [2] = '{C:attention}#1# Boss Blinds{} to replace', + [3] = '{C:attention}this Ante\'s Boss Blind{}' } }, p_bunc_virtual_normal = { @@ -296,8 +319,9 @@ return { bunc_reactive = { ['name'] = 'Reactive', ['text'] = { - [1] = 'Debuffed if no blinds', - [2] = 'are skipped this Ante' + [1] = 'Each Ante,', + [2] = 'debuffed until you', + [3] = 'skip a blind' } }, @@ -354,11 +378,6 @@ return { [2] = 'selected cards to', [3] = '{C:attention}#2#s' }, - ['unlock'] = { - [1] = 'Discover at least', - [2] = '{C:attention}#1#{} items from', - [3] = 'your collection' - } }, c_bunc_art = { ['name'] = 'The Art', @@ -367,11 +386,6 @@ return { [2] = 'selected cards to', [3] = '{C:attention}#2#s' }, - ['unlock'] = { - [1] = 'Discover at least', - [2] = '{C:attention}#1#{} items from', - [3] = 'your collection' - } }, c_bunc_universe = { ['name'] = 'The Universe', @@ -381,11 +395,6 @@ return { [3] = 'and seal of up to {C:attention}#1#{}', [4] = 'selected cards' }, - ['unlock'] = { - [1] = 'Discover at least', - [2] = '{C:attention}#1#{} items from', - [3] = 'your collection' - } }, c_bunc_lust = { ['name'] = 'Lust', @@ -395,11 +404,6 @@ return { [3] = 'in hand {C:inactive}(Max of {C:money}$#2#{C:inactive})', [4] = '{C:inactive}(Currently {C:money}$#3#{C:inactive})' }, - ['unlock'] = { - [1] = 'Discover at least', - [2] = '{C:attention}#1#{} items from', - [3] = 'your collection' - } }, c_bunc_sky = { ['name'] = 'The Sky', @@ -457,8 +461,8 @@ return { c_bunc_the_8 = { ['name'] = 'The 8', ['text'] = { - [1] = '{C:attention}Link together{} any', - [2] = 'amount of selected', + [1] = '{C:attention}Link together{}', + [2] = '{C:legendary,E:1}any number{} of selected', [3] = 'unlinked cards in hand', [4] = '{C:inactive,s:0.6}(Unlimited selection while The 8 is selected)' } @@ -553,9 +557,9 @@ return { j_bunc_red_card = { ['name'] = 'Red Card', ['text'] = { - [1] = 'This Joker gains {C:red}+#1#{} Mult', - [2] = 'per skipped choice', - [3] = 'in {C:attention}Booster Pack{}', + [1] = 'When any {C:attention}Booster Pack{}', + [2] = 'is skipped, gain {C:red}+#1#{} Mult', + [3] = 'per unused choice', [4] = '{C:inactive}(Currently {C:red}+#2#{C:inactive} Mult)' } }, @@ -565,14 +569,14 @@ return { j_bunc_cassette_a = { ['name'] = 'Cassette (A Side)', ['text'] = { - [1] = 'Cards with {C:attention}light suit', + [1] = 'Cards with a {C:attention}light suit', [2] = 'give {C:chips}+#1#{} Chips when scored' } }, j_bunc_cassette_b = { ['name'] = 'Cassette (B Side)', ['text'] = { - [1] = 'Cards with {C:attention}dark suit', + [1] = 'Cards with a {C:attention}dark suit', [2] = 'give {C:mult}+#2#{} Mult when scored' } }, @@ -639,8 +643,8 @@ return { j_bunc_dread = { ['name'] = 'Dread', ['text'] = { - [1] = 'After scoring your {C:attention}last{} hand,', - [2] = 'upgrade it by {C:attention}#1# levels{}', + [1] = 'After scoring {C:attention}final{} hand of', + [2] = 'round, upgrade it by {C:attention}#1# levels{}', [3] = 'and {C:attention}destroy{} scored cards', [4] = '{C:inactive,s:0.8}All levels gained by this Joker', [5] = '{C:inactive,s:0.8}are lost on its removal' @@ -679,7 +683,7 @@ return { ['name'] = 'Ghost Print', ['text'] = { [1] = 'Gives Chips and Mult', - [2] = 'from last {C:attention}hand type{} played', + [2] = 'of last {C:attention}hand type{} played', [3] = '{C:inactive}(Last poker hand: #1#)' } }, @@ -825,8 +829,8 @@ return { ['text'] = { [1] = 'Scored {C:attention}Ks{}, {C:attention}Qs{}, {C:attention}Js{},', [2] = 'or {C:attention}Rankless cards', - [3] = 'have {C:green}#1# in #2#{} chance to', - [4] = 'create a {C:attention}D6 Tag', + [3] = 'have a {C:green}#1# in #2#{} chance', + [4] = 'to create a {C:attention}D6 Tag', } }, j_bunc_nil_bill = { @@ -848,7 +852,7 @@ return { j_bunc_registration_plate = { ['name'] = 'Registration Plate', ['text'] = { - [1] = '#1#', + [1] = '#1#, #2#, #3#, #4#, and #5#', [2] = 'has the Chips and Mult of all', [3] = '{C:attention}poker hands{} played this game', [4] = '{s:0.8}Combination changes every round' @@ -938,8 +942,8 @@ return { }, ['unlock'] = { [1] = 'Win a run without', - [2] = 'ever opening', - [3] = '{C:attention,E:1}Booster Packs' + [2] = 'ever opening a', + [3] = '{C:attention,E:1}Booster Pack' } }, j_bunc_metallurgist = { @@ -972,8 +976,8 @@ return { }, ['unlock'] = { [1] = 'Win a run with', - [2] = '{C:attention,E:1}High Card{} being the', - [3] = 'most leveled poker hand' + [2] = '{C:attention,E:1}High Card{} as the', + [3] = 'highest level poker hand' } }, j_bunc_headshot = { @@ -1051,8 +1055,8 @@ return { j_bunc_doodle = { ['name'] = 'Doodle', ['text'] = { - [1] = '{C:attention}Copy{} first {C:tarot}Tarot{} or {C:planet}Planet{}', - [2] = 'card used this round', + [1] = '{C:attention}Copy{} the first {C:tarot}Tarot{} or', + [2] = '{C:planet}Planet{} card used each round', [3] = '{C:inactive}(Must have room)' }, ['unlock'] = { @@ -1123,7 +1127,7 @@ return { ['name'] = 'Bounty Hunter', ['text'] = { [1] = 'All sources of money', - [2] = 'give {C:money}1${} less and this Joker', + [2] = 'give {C:money}#1#${} less and this Joker', [3] = 'gains {C:mult}+#1#{} Mult each time', [4] = 'you earn money', [5] = '{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)' @@ -1145,7 +1149,7 @@ return { ['name'] = 'The Joker', ['text'] = { [1] = 'After play, each scored', - [2] = 'card without an enhancement has', + [2] = 'card without an enhancement has a', [3] = '{C:green}#1# in #2#{} chance to be destroyed', }, ['unlock'] = { @@ -1164,9 +1168,9 @@ return { j_bunc_domino = { ['name'] = 'Domino', ['text'] = { - [1] = 'Upon {C:attention}acquiring{} or {C:attention}using', - [2] = 'a card from shop or', - [3] = 'Booster Pack, acquire {C:attention}2', + [1] = 'When you {C:attention}acquire{} or {C:attention}use{}', + [2] = 'a card from {C:attention}the shop{} or', + [3] = 'a {C:attention}Booster Pack{}, acquire {C:attention}2', [4] = 'adjacent cards if possible' } }, @@ -1199,7 +1203,7 @@ return { ['name'] = 'Headache', ['text'] = { [1] = 'Create an {C:bunco_virtual_dark}Arcade Tag', - [2] = 'for each {C:attention}#1#{} playing', + [2] = 'for every {C:attention}#1#{} playing', [3] = 'cards destroyed', [4] = '{C:inactive}({C:attention}#2#{C:inactive}/#1# cards destroyed)' } @@ -1225,9 +1229,9 @@ return { j_bunc_stylophone = { ['name'] = 'Stylophone', ['text'] = { - [1] = 'Cards give {C:attention}X#1#{} Mult', - [2] = 'of the {C:attention}rank{}', - [3] = 'when scored' + [1] = 'Cards give {C:attention}x#1#{}', + [2] = 'their {C:attention}rank{} in', + [3] = '{C:mult}Mult{} when scored' } }, j_bunc_kite_experiment = { @@ -1472,8 +1476,9 @@ return { bl_bunc_blade = { ['name'] = 'The Blade', ['text'] = { - [1] = 'First time score exceeds #1#', - [2] = 'makes played hand score 0' + [1] = 'The first hand that', + [2] = 'scores over #1#', + [3] = 'scores 0 instead' } }, bl_bunc_claw = { @@ -1514,15 +1519,17 @@ return { bl_bunc_depths = { ['name'] = 'The Depths', ['text'] = { - [1] = 'After Play, gain Eternal,', - [2] = 'Perishable, or Scattering tag' + [1] = 'After Play, gain an', + [2] = 'Eternal, Perishable,', + [3] = 'or Scattering tag' } }, bl_bunc_chasm = { ['name'] = 'The Chasm', ['text'] = { - [1] = 'After Play, gain Hindered,', - [2] = 'Reactive, or Rental tag' + [1] = 'After Play, gain a', + [2] = 'Hindered, Reactive,', + [3] = 'or Rental tag' } }, @@ -1531,36 +1538,41 @@ return { bl_bunc_final_crown = { ['name'] = 'Chartreuse Crown', ['text'] = { - [1] = 'All Spade, Heart, Club, and Diamond', - [2] = 'base suit cards are debuffed' + [1] = 'All Spade, Heart,', + [2] = 'Club, and Diamond', + [3] = 'cards are debuffed' } }, bl_bunc_final_trident = { ['name'] = 'Vermilion Trident', ['text'] = { [1] = '+1X Base score for', - [2] = 'every purchase this Ante' + [2] = 'every purchase', + [3] = 'this Ante', } }, bl_bunc_final_tower = { ['name'] = 'Indigo Tower', ['text'] = { - [1] = 'Cards not played previously', - [2] = 'this Ante are debuffed' + [1] = 'Cards not played', + [2] = 'previously this', + [3] = 'Ante are debuffed' } }, bl_bunc_final_dagger = { ['name'] = 'Magenta Dagger', ['text'] = { - [1] = 'Discarding cards plays them', - [2] = 'and subtracts scored value' + [1] = 'Discarding cards', + [2] = 'instead plays them and', + [3] = 'subtracts scored value' } }, bl_bunc_final_shield = { ['name'] = 'Turquoise Shield', ['text'] = { - [1] = 'Excess score this Ante adds', - [2] = "to this blind's required score" + [1] = 'Excess score this', + [2] = 'Ante adds to this', + [3] = "blind's required score" } } }, @@ -1638,13 +1650,6 @@ return { [3] = '{s:0.8,C:attention}Triple Tag{s:0.8} excluded' } }, - tag_bunc_shopping = { - ['name'] = 'Shopping Tag', - ['text'] = { - [1] = 'Gives {C:attention}1{} free', - [2] = 'shop {C:green}Reroll' - } - }, -- Edition tags @@ -1760,7 +1765,37 @@ return { [1] = 'Cannot be flipped, debuffed', [2] = 'or forced to be selected' } - } + }, + + + e_bunc_consumable_edition_foil = { + name = 'Foil', + ['text'] = { + [1] = 'Create a {C:attention}Chips Tag', + [2] = 'on use' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = 'Holographic', + ['text'] = { + [1] = 'Create a {C:attention}Mult Tag', + [2] = 'on use' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = 'Polychrome', + ['text'] = { + [1] = 'Create a {C:attention}Megamult Tag', + [2] = 'on use' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = 'Glitter', + ['text'] = { + [1] = 'Create an {C:attention}Ultrachips Tag', + [2] = 'on use' + } + }, }, Voucher = { v_bunc_lamination = { @@ -1787,7 +1822,7 @@ return { v_bunc_hedge_trimmer = { ['name'] = 'Hedge Trimmer', ['text'] = { - [1] = "Reduce blind's score", + [1] = "Reduce blind's score requirement", [2] = 'by {C:attention}#1#%{} every hand played' } }, @@ -1798,7 +1833,7 @@ return { [2] = 'reduced by {C:attention}#1#%{}' }, ['unlock'] = { - [1] = "Reduce blind's score using", + [1] = "Reduce score requirement using", [2] = 'Hedge Trimmer', [3] = 'a total of {C:attention,E:1}#1#{} times', [4] = '{C:inactive}(#2#)' @@ -1856,7 +1891,7 @@ return { v_bunc_pin_collector = { ['name'] = 'Pin Collector', ['text'] = { - [1] = 'All new {C:attention}Double Tags', + [1] = 'All future {C:attention}Double Tags', [2] = 'appear as {C:attention}Triple Tags' }, ['unlock'] = { @@ -1869,14 +1904,15 @@ return { ['name'] = 'Arcade Machine', ['text'] = { [1] = '{C:bunco_virtual_dark}Virtual Packs', - [2] = 'appear {C:attention}4X{} more often' + [2] = 'appear in the shop', + [3] = '{C:attention}4X{} more often' } }, v_bunc_polybius = { ['name'] = 'Polybius', ['text'] = { - [1] = '{C:bunco_virtual_dark}Polymino{} cards allow to', - [2] = 'link {C:attention}one more{} card', + [1] = '{C:bunco_virtual_dark}Polymino{} cards can', + [2] = 'link {C:attention}one additional{} card', [3] = '{s:0.6,C:inactive}Extra card can be of any property' }, ['unlock'] = { @@ -1890,16 +1926,16 @@ return { m_bunc_copper = { ['name'] = 'Copper Card', ['text'] = { - [1] = 'Rescores if played', - [2] = '{C:attention}adjacent{} to other', - [3] = 'scored Copper Card' + [1] = '{C:attention}Rescores{} if played', + [2] = '{C:attention}adjacent{} to another', + [3] = 'scoring Copper Card' }, }, m_bunc_cracker = { ['name'] = 'Cracker Card', ['text'] = { - [1] = '{C:attention}On discard{} the card is', - [2] = 'played and then destroyed', + [1] = 'Is played when {C:attention}discarded{},', + [2] = 'then {C:attention}destroyed{}', }, }, }, @@ -1908,7 +1944,7 @@ return { ['name'] = 'Cyan Stake', ['text'] = { [1] = 'Shop can have {C:attention}Scattering{} Jokers', - [2] = '{C:inactive,s:0.8}(Destroys random adjacent Joker when removed)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Applies all previous Stakes' } }, @@ -1916,7 +1952,7 @@ return { ['name'] = 'Pink Stake', ['text'] = { [1] = 'Shop can have {C:attention}Hindered{} Jokers', - [2] = '{C:inactive,s:0.8}(Stays in place until the end of the round after being sold)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Applies all previous Stakes' } }, @@ -1924,10 +1960,85 @@ return { ['name'] = 'Magenta Stake', ['text'] = { [1] = 'Shop can have {C:attention}Reactive{} Jokers', - [2] = '{C:inactive,s:0.8}(Debuffed if no blinds are skipped this Ante)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Applies all previous Stakes' } } + }, + + Sleeve = { + sleeve_bunc_fairy = { + ['name'] = 'Fairy Sleeve', + ['text'] = { + [1] = 'After defeating each', + [2] = '{C:attention}Boss Blind{}, add #2#', + [3] = 'random {C:bunco_exotic,T:bunc_exotic_cards}#1#', + [4] = 'to your deck' + } + }, + sleeve_bunc_fairy_alt = { + ['name'] = 'Fairy Sleeve', + ['text'] = { + [1] = 'All {C:bunco_exotic,T:bunc_exotic_cards}#1#{}', + [2] = 'become {}Enhanced{}' + } + }, + + sleeve_bunc_digital = { + ['name'] = 'Digital Sleeve', + ['text'] = { + [1] = '{C:bunco_virtual_dark}Polymino{} cards may', + [2] = 'appear in the shop,', + [3] = "start with {C:bunco_virtual_dark,T:c_bunc_the_i}The I{}" + } + }, + sleeve_bunc_digital_alt = { + ['name'] = 'Digital Sleeve', + ['text'] = { + [1] = 'Start run with the', + [2] = '{C:tarot,T:v_bunc_arcade_machine}Arcade Machine{} and,', + [3] = "{C:tarot,T:v_bunc_polybius}Polybius{} vouchers" + } + } + }, + Partner = { + pnr_bunc_voxel = { + name = "Blox", + text = { + "{C:chips}+#1#{} Chips", + "{C:chips}-#2#{} Chips when", + "a card is enhanced", + }, + unlock={ + "Win a run with", + "{C:attention}#1#{} on", + "{V:1}#2#{} difficulty", + }, + }, + pnr_bunc_roygbiv = { + name = "Fitzroy", + text = { + "Click to pay {C:money}$#1#{} and", + "enhance {C:attention}#2#{} selected card", + "into a {C:dark_edition}Polychrome{} {C:attention}Wild Card{}" + }, + unlock={ + "Win a run with", + "{C:attention}#1#{} on", + "{V:1}#2#{} difficulty", + }, + }, + pnr_bunc_roygbiv_1 = { + name = "Fitzroy", + text = { + "Click to pay {C:money}$#1#{} and", + "enhance {C:attention}#2#{} selected cards", + "to {C:dark_edition}Polychrome{} {C:attention}Wild Cards{}" + }, + unlock={ + "SHOULD NOT SEE", + }, + } } } } \ No newline at end of file diff --git a/localization/es_419.lua b/localization/es_419.lua index 170c1e63..8c2762e7 100644 --- a/localization/es_419.lua +++ b/localization/es_419.lua @@ -1,4 +1,4 @@ -return { +return { -- Random line added BC I wrote the wrong repo name misc = { dictionary = { @@ -48,16 +48,17 @@ return { bunc_repeat = '¡Se repitió!', bunc_thoth_tarot = 'Tarot de Thoth', bunc_mysterious_tarot = '¿Tarot?', - bunc_mysterious_polymino = '¿Poliminó?', + bunc_mysterious_polymino = '¿Polimino?', bunc_most_played_rank = '(categoría mas jugada)', bunc_least_played_hand = '(mano menos jugada)', bunc_blade = '(1.5X puntuación de la ciega)', bunc_exceeded_score = '¡Excedió el límite!', + bunc_volume = 'Volumen', -- Consumable types - k_polymino = 'Poliminó', - b_polymino_cards = 'Cartas de poliminó', + k_polymino = 'Polimino', + b_polymino_cards = 'Cartas de polimino', -- Booster types @@ -80,31 +81,31 @@ return { poker_hands = { ['bunc_Spectrum'] = 'Espectro', - ['bunc_Straight Spectrum'] = 'Escalera espectral', - ['bunc_Straight Spectrum (Royal)'] = 'Espectro real', - ['bunc_Spectrum House'] = 'Full de espectro', - ['bunc_Spectrum Five'] = 'Cinco de espectro', - ['bunc_Deal'] = 'Trato' + ['bunc_Straight Spectrum'] = 'Escalera Espectral', + ['bunc_Straight Spectrum (Royal)'] = 'Espectro Real', + ['bunc_Spectrum House'] = 'Full Espectral', + ['bunc_Spectrum Five'] = 'Quintilla Espectral', + ['bunc_Deal'] = 'Matrícula' }, poker_hand_descriptions = { ['bunc_Spectrum'] = { - [1] = '5 cartas con palos diferentes' + [1] = "5 cartas de palo diferente" }, ['bunc_Straight Spectrum'] = { - [1] = '5 cartas seguidas (valores consecutivos),', - [2] = 'cada una con palo diferente' + [1] = "5 cartas seguidas", + [2] = "de palo diferente" }, ['bunc_Spectrum House'] = { - [1] = 'Una tercia y un par con', - [2] = 'cada carta de un palo diferente' + [1] = "Una Tercia y un Par con cada", + [2] = "carta de palo diferente" }, ['bunc_Spectrum Five'] = { - [1] = '5 cartas con la misma categoría,', - [2] = 'cada una con palo diferente' + [1] = "5 cartas de la misma categoría y", + [2] = "cada una de palo diferente" }, ['bunc_Deal'] = { - [1] = '5 categorías elegidas', - [2] = 'por Matrícula' + [1] = '5 Categorías elegidas', + [2] = 'por la Matrícula' } }, labels = { @@ -118,13 +119,21 @@ return { bunc_scattering = 'Dispersante', bunc_hindered = 'Estorbante', - bunc_reactive = 'Reactivo', + bunc_reactive = 'Reactiva', } }, descriptions = { Other = { bunc_temporary_extra_chips = {['text'] = {[1] = '{C:chips}+#1#{} fichas extra esta ronda'}}, bunc_linked_cards = {['text'] = {[1] = '{C:attention}Conectada{} en este grupo:'}}, + bunc_linked_group = { + ['name'] = 'Grupo Conectado', + ['text'] = { + [1] = 'Ls cartas conectadas en', + [2] = 'Grupo se sacan, seleccionan', + [3] = 'y destruyen {C:attention}juntas' + } + }, bunc_drawn_linked_cards = {['text'] = {[1] = '{C:attention}Conectada{} en grupo en mano'}}, bunc_exotic_cards = { ['name'] = 'Cartas exoticas', @@ -133,29 +142,22 @@ return { [2] = 'de {C:bunc_fleurons}Florón{} o {C:bunc_halberds}Alabarda{}' } }, - bunc_consumable_edition_foil = { - ['name'] = 'Laminada', - ['text'] = { - [1] = 'Crea una {C:attention}etiqueta de fichas' - } - }, - bunc_consumable_edition_holo = { - ['name'] = 'Holográfica', - ['text'] = { - [1] = 'Crea una {C:attention}etiqueta multi' - } - }, - bunc_consumable_edition_polychrome = { - ['name'] = 'Polícroma', - ['text'] = { - [1] = 'Crea una {C:attention}etiqueta megamulti' - } - }, - bunc_consumable_edition_bunc_glitter = { - ['name'] = 'Brillantina', - ['text'] = { - [1] = 'Crea una {C:attention}etiqueta de ultrafichas' - } + Enhanced = { + m_bunc_copper = { + ['name'] = 'Carta de Cobre', + ['text'] = { + [1] = 'Anota de nuevo si', + [2] = 'está al {C:attention}lado{} de', + [3] = 'otra carta de cobre anotada' + }, + }, + m_bunc_cracker = { + ['name'] = 'Carta Galleta', + ['text'] = { + [1] = '{C:attention}Al descartarse{} la carta se', + [2] = 'juega y luego se destruye', + }, + }, }, -- Undiscovered @@ -175,9 +177,8 @@ return { p_bunc_blind = { ['name'] = 'Paquete de ciegas', ['text'] = { - [1] = 'Elige una de hasta', - [2] = '{C:attention}#1# ciegas jefe{} para', - [3] = 'reemplazar en esta apuesta inicial' + [1] = 'Elige {C:attention}1{} de hasta {C:attention}#1# Ciegas Jefe{}', + [2] = 'para cambiar la actual', } }, p_bunc_virtual_normal = { @@ -185,12 +186,12 @@ return { ['text'] = { [1] = 'Saca toda la baraja y', [2] = 'elige {C:attention}#1#{} de hasta', - [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} poliminó{} para', + [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} polimino{} para', [4] = 'usar de inmediato' } }, p_bunc_virtual_jumbo = { - ['name'] = 'Paquete virtual jumbo', + ['name'] = 'Paquete jumbo virtual', ['text'] = { [1] = 'Saca toda la baraja y', [2] = 'elige {C:attention}#1#{} de hasta', @@ -199,11 +200,11 @@ return { } }, p_bunc_virtual_mega = { - ['name'] = 'Paquete virtual mega', + ['name'] = 'Paquete mega virtual', ['text'] = { [1] = 'Saca toda la baraja y', [2] = 'elige {C:attention}#1#{} de hasta', - [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} poliminó{} para', + [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} polimino{} para', [4] = 'usar de inmediato' } }, @@ -214,7 +215,7 @@ return { ['name'] = 'Dispersante', ['text'] = { [1] = 'Destruye un', - [2] = 'comodín al azar', + [2] = 'comodín al cercano', [3] = 'al venderse o destruirse' } }, @@ -265,28 +266,68 @@ return { -- Consumables Tarot = { - c_bunc_art = { - ['name'] = 'El arte', + -- Reworked Tarots + + c_bunc_wheel_of_fortune = { + ['name'] = 'Rueda de la Fortuna', ['text'] = { - [1] = 'Mejora {C:attention}#1#{}', - [2] = 'cartas seleccionadas a', - [3] = '{C:attention}#2#' + [1] = '{C:green}#1# en #2#{} probabilidades de', + [2] = 'añadir {C:dark_edition}Laminado{}, {C:dark_edition}Holográfica{},', + [3] = '{C:dark_edition}Policroma{}, o {C:dark_edition}Brillantina{} a', + [4] = 'un {C:attention}Comodín{} al azar' } }, + + -- Main Tarots + + c_bunc_adjustment = { + ['name'] = 'El Ajuste', + ['text'] = { + [1] = 'Mejora hasta {C:attention}#1#{} cartas', + [2] = 'seleccionadas', + [3] = 'a {C:attention}Cartas Galletas' + }, + }, + c_bunc_art = { + ['name'] = 'El Arte', + ['text'] = { + [1] = 'Mejora {C:attention}#1#{} cartas', + [2] = 'seleccionadas', + [3] = 'a {C:attention}#2#' + }, + }, + c_bunc_universe = { + ['name'] = 'El Universo', + ['text'] = { + [1] = '{C:attention}Cambia al azar{} el palo,', + [2] = 'categoría, mejora, edición,', + [3] = 'y sello de hasta {C:attention}#1#{}', + [4] = 'cartas seleccionadas' + }, + }, + c_bunc_lust = { + ['name'] = 'La Lujuría', + ['text'] = { + [1] = 'Otorga {C:money}$#1#{} por cada', + [2] = 'carta en mano', + [3] = '{C:inactive}(Máximo de {C:money}$#2#{C:inactive})', + [4] = '{C:inactive}(Actualmente {C:money}$#3#{C:inactive})' + }, + }, c_bunc_sky = { - ['name'] = 'El cielo', + ['name'] = 'El Cielo', ['text'] = { - [1] = 'Convierte hasta', - [2] = '{C:attention}#1#{} cartas seleccionadas', + [1] = 'Convierte hasta {C:attention}#1#{}', + [2] = 'cartas seleccionadas', [3] = 'en {C:bunc_fleurons}Florones{}', } }, c_bunc_abyss = { - ['name'] = 'El abismo', + ['name'] = 'El Abismo', ['text'] = { - [1] = 'Convierte hasta', - [2] = '{C:attention}#1#{} cartas seleccionadas', - [3] = 'en {C:bunc_halberds}Alabardas{}', + [1] = 'Convierte hasta {C:attention}#1#{}', + [2] = 'cartas seleccionadas', + [3] = 'en {C:bunc_halberds}Alabardas{}' } }, }, @@ -305,18 +346,27 @@ return { }, }, Spectral = { + + c_bunc_aura = { + ['name'] = 'Aura', + ['text'] = { + [1] = 'Otorga edición {C:dark_edition}Laminada{}, {C:dark_edition}Holografica{},', + [2] = '{C:dark_edition}Policromo{}, o {C:dark_edition}Brillantina{}', + [3] = 'a {C:attention}1{} carta seleccionada' + } + }, c_bunc_cleanse = { ['name'] = 'Purificar', ['text'] = { - [1] = 'Agrega {C:dark_edition}fluorescencia{} a', - [2] = '{C:attention}#1#{} cartas seleccionadas de tu mano' + [1] = 'Agrega {C:dark_edition}fluorescencia{} a {C:attention}#1#{} cartas', + [2] = 'seleccionadas de tu mano' } }, c_bunc_the_8 = { ['name'] = 'El 8', ['text'] = { - [1] = '{C:attention}Conecta{} todas', - [2] = 'las cartas sin conectar de tu mano', + [1] = '{C:attention}Conecta{} todas las cartas', + [2] = 'sin conectar de tu mano', } } }, @@ -401,13 +451,12 @@ return { j_bunc_luchador = { ['name'] = 'Luchador', ['text'] = { - [1] = 'Vende esta carta', - [2] = 'para crear 1 {C:attention}Etiqueta rompeciegas', - [3] = 'gratis' + [1] = 'Vende este comodín para crear', + [2] = 'una {C:attention}Etiqueta quebradora', } }, j_bunc_red_card = { - ['name'] = 'Carta roja', + ['name'] = 'Tarjeta roja', ['text'] = { [1] = 'Este comodín obtiene {C:red}+#1#{} multi', [2] = 'por cada elección omitida', @@ -418,24 +467,30 @@ return { -- Main Jokers - j_bunc_cassette = { - ['name'] = 'Casete', + j_bunc_cassette_a = { + ['name'] = 'Cassette (Lado A)', + ['text'] = { + [1] = 'Las cartas de {C:attention}palo claro', + [2] = 'otorgan {C:chips}+#1#{} fichas al anotar' + } + }, + j_bunc_cassette_b = { + ['name'] = 'Cassette (Lado B)', + ['text'] = { + [1] = 'Las cartas de {C:attention}palo oscuro', + [2] = 'otorgan {C:mult}+#2#{} multi al anotar' + } + }, + j_bunc_cassette_extra = { ['text'] = { - [1] = 'Al descartar, da vuelta al comodín al otro lado', - [2] = '{C:attention}Lado A:{} Las cartas con palo claro', - [3] = 'otorgan {C:chips}+#1#{} fichas cuando anotan', - [4] = '{C:attention}Lado B:{} Las cartas con palo oscuro', - [5] = 'otorgan {C:mult}+#2#{} multi cuando anotan' - -- TODO would be good to have a line for the side - -- or colorize the active side + [1] = '{C:inactive}Al descartar, cambia de lado' } }, j_bunc_mosaic = { - ['name'] = 'Comodín mosaico', + ['name'] = 'Comodín de Mosaico', ['text'] = { - [1] = 'Las {C:attention}cartas de piedra{} jugadas', - [2] = 'otorgan {C:mult}+#1#{} multi', - [3] = 'cuando anotan' + [1] = 'Las {C:attention}cartas de piedra{} otorgan', + [2] = '{C:mult}+#1#{} Multi al anotar', }, ['unlock'] = { [1] = 'Juega una mano de 5 cartas', @@ -444,7 +499,7 @@ return { } }, j_bunc_voxel = { - ['name'] = 'Comodín de vóxeles', + ['name'] = 'Comodín de Vóxeles', ['text'] = { [1] = '{X:mult,C:white}X#1#{} multi, {X:mult,C:white}-X#2#{} multi por cada', [2] = '{C:attention}carta mejorada{} en tu {C:attention}baraja{}', @@ -459,26 +514,26 @@ return { j_bunc_crop_circles = { ['name'] = 'Agroglifos', ['text'] = { - [1] = 'El palo base de {C:clubs}Tréboles{} otorga {C:mult}+3{} multi,', - [2] = 'Los {C:attention}8s{} otorgan {C:mult}+2{} multi,', - [3] = 'Las {C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} otorgan {C:mult}+1{} multi' + [1] = 'Los {C:clubs}Tréboles{} otorgan {C:mult}+3{} Multi,', + [2] = 'Los {C:attention}8s{} otorgan {C:mult}+2{} Multi,', + [3] = 'Las {C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} otorgan {C:mult}+1{} Multi' } }, j_bunc_crop_circles_exotic = { ['name'] = 'Agroglifos', ['text'] = { - [1] = 'El palo base de {C:bunc_fleurons}Florones{} otorga {C:mult}+4{} multi,', - [2] = 'El palo base de {C:clubs}Tréboles{} otorga {C:mult}+3{} multi,', - [3] = 'Los {C:attention}8s{} otorgan {C:mult}+2{} multi,', - [4] = 'Las {C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} otorgan {C:mult}+1{} multi' + [1] = 'Los {C:bunc_fleurons}Florones{} otorgan {C:mult}+4{} Multi,', + [2] = 'Los {C:clubs}Tréboles{} otorgan {C:mult}+3{} Multi,', + [3] = 'Los {C:attention}8s{} otorgan {C:mult}+2{} Multi,', + [4] = 'Las {C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} otorgan {C:mult}+1{} Multi' } }, j_bunc_xray = { ['name'] = 'Rayos X', ['text'] = { - [1] = 'Este comodín obtiene {X:mult,C:white}X#1#{} multi', - [2] = 'por cada carta tomada boca abajo', - [3] = '{C:inactive}(Actual {X:mult,C:white}X#2#{C:inactive} multi)' + [1] = 'Este comodín obtiene {X:mult,C:white}X#1#{} Multi', + [2] = 'por cada carta volteada', + [3] = '{C:inactive}(Actualmente {X:mult,C:white}X#2#{C:inactive} Multi)' }, ['unlock'] = { [1] = 'Completa el desafio', @@ -488,10 +543,11 @@ return { j_bunc_dread = { ['name'] = 'Terror', ['text'] = { - [1] = 'Después de anotar tu {C:attention}última{} {C:blue}mano{},', - [2] = 'mejórala por {C:attention}2 niveles{}', - [3] = 'y {C:attention}destruye{} las cartas anotadas', - [4] = '{C:red}Pierde{} todos los {C:attention}niveles ganados{} si remueves este comodín' + 'Al jugar tu {C:attention}última{} {C:blue}mano{},', + 'ganas {C:attention}2{} {C:planet}niveles{} y {C:attention}destruyes{}', + 'Las cartas anotadas', + "{C:red,s:0.8}pierdes{} {C:inactive,s:0.8}todos los{} {C:attention,s:0.8}niveles ganados{}", + '{C:inactive,s:0.8}si pierdes este comodín' }, ['unlock'] = { [1] = 'Reduce tu baraja', @@ -502,10 +558,10 @@ return { j_bunc_prehistoric = { ['name'] = 'Comodín prehistorico', ['text'] = { - [1] = 'Cartas jugadas que comparten', - [2] = 'ambos {C:attention}categoría y palo{} con una', - [3] = '{C:attention}carta que ya anotó{} esta ronda', - [4] = 'otorgan {C:mult}+#1#{} multi' + [1] = 'Cartas anotadas que compartan', + [2] = '{C:attention}categoría{} y {C:attention}palo{} con una {C:attention}carta', + [3] = '{C:attention}que ya anotó{} esta ronda', + [4] = 'otorgan {C:mult}+#1#{} Multi' }, ['unlock'] = { [1] = 'Juega un', @@ -515,19 +571,19 @@ return { j_bunc_linocut = { ['name'] = 'Comodín linograbado', ['text'] = { - [1] = 'Cuando juegas exactamente {C:attention}2{} cartas', - [2] = 'que forman un {C:attention}Par{},', - [3] = "convierte el palo de la carta {C:attention}izquierda{}", - [4] = "en el palo de la carta {C:attention}derecha{}", - [5] = '{C:inactive}(Arrastra para acomodar)' + [1] = 'Al jugar exactamente {C:attention}2{}', + [2] = 'cartas que forman un {C:attention}Par{}', + [3] = "convierte la carta {C:attention}izquierda{}", + [4] = "al palo de la carta {C:attention}derecha{}", + [5] = '{C:inactive}(Arrastra para reordenar)' -- TODO this joker is a bit wordy } }, j_bunc_ghost_print = { ['name'] = 'Impresión fantasma', ['text'] = { - [1] = 'Otorga fichas y multi', - [2] = 'de el ultimo {C:attention}tipo de mano{} jugado', + [1] = 'Otorga {C:blue}fichas{} y {C:red}multi{} iguales al', + [2] = '{C:planet}valor base{} de la {C:attention}última mano{} jugada', [3] = '{C:inactive}(Ultima mano: #1#)' } }, @@ -545,14 +601,14 @@ return { j_bunc_loan_shark_full = { ['name'] = 'Usurero', ['text'] = { - [1] = 'Gana {C:money}$#1#{} al adquirirse,', - [2] = 'el precio de venta se vuelve {C:money}$-100' + [1] = 'Ganas {C:money}$#1#{} al obtenerlo,', + [2] = 'te cobra {C:money}$100{} para irse' } }, j_bunc_basement = { ['name'] = 'Comodín de sótano', ['text'] = { - [1] = 'Cuando la {C:attention}ciega jefe{} es derrotada,', + [1] = 'Al derrotar la {C:attention}ciega jefe{},', [2] = 'crea una carta {C:spectral}espectral{}', [3] = '{C:inactive}(Debe haber espacio)' } @@ -560,18 +616,18 @@ return { j_bunc_shepherd = { ['name'] = 'Comodín pastor', ['text'] = { - [1] = 'Este comodín obtiene {C:chips}+#1#{} fichas', - [2] = 'cuando la mano jugada contiene un {C:attention}Par', - [3] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} fichas)' + [1] = 'Este comodín obtiene {C:chips}+#1#{} Fichas', + [2] = 'si la mano jugada contiene un {C:attention}Par{}', + [3] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} Fichas)' } }, j_bunc_knight = { - ['name'] = 'Caballero comodín', + ['name'] = 'Caballero Comodín', ['text'] = { - [1] = 'Cuando la {C:attention}ciega{} es seleccionada, {C:attention}mezcla{} todos los comodines', - [2] = 'y este comodín obtiene {C:mult}+#1#{} multi,', - [3] = 'se {C:red}reinicia{} cuando cualquier comodín es reacomodado', - [4] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} multi)' + [1] = 'Al seleccionar la {C:attention}ciega{}, {C:attention}mezcla{} todos', + [2] = 'los comodines y obtiene {C:mult}+#1#{} Multi se', + [3] = '{C:red}reinicia{} si reacomodas un comodín', + [4] = '{C:inactive}(Actualmente {C:mult}+#2#{C:inactive} Multi)' }, ['unlock'] = { [1] = 'Derrota a la {E:1,C:attention}Bellota Ambarina', @@ -579,10 +635,10 @@ return { } }, j_bunc_jmjb = { - ['name'] = 'Tarjeta coleccionable de Comodín Man y el Chico Bufón Núm. 54', + ['name'] = 'Tarjeta Coleccionable de Comodín Man y el Chico Bufón Núm. 54', ['text'] = { [1] = 'Los {C:attention}paquetes estándar{} contienen', - [2] = 'solo {C:attention}cartas mejoradas{}' + [2] = 'solo {C:dark_edition,E:1}cartas mejoradas{}' }, ['unlock'] = { [1] = 'Abre {E:1,C:attention}50', @@ -593,14 +649,14 @@ return { j_bunc_dogs_playing_poker = { ['name'] = 'Perros jugando póker', ['text'] = { - [1] = '{X:mult,C:white}X#1#{} multi si cada categoría', - [2] = 'anotada es {C:attention}2{}, {C:attention}3{}, {C:attention}4{}, o {C:attention}5' + [1] = '{X:mult,C:white}X#1#{} multi si sólo anotas', + [2] = '{C:attention}2{}, {C:attention}3{}, {C:attention}4{}, o {C:attention}5' } }, j_bunc_righthook = { ['name'] = 'Gancho derecho', ['text'] = { - [1] = 'Reactiva la carta más derecha anotada', + [1] = '{C:attention}Reactiva{} la carta del extremo derecho', [2] = 'una vez por cada {C:blue}mano{} restante', }, ['unlock'] = { @@ -610,11 +666,11 @@ return { } }, j_bunc_fiendish = { - ['name'] = 'Comodín diabólico', + ['name'] = 'Comodín Embustero', ['text'] = { - [1] = 'Duplica todas las fuentes de dinero,', - [2] = '{C:green}#1# en #2#{} probabilidades de en vez', - [3] = 'ganar {C:money}$1{}' + [1] = 'Duplica todas las fuentes de dinero.', + [2] = 'Prob. de {C:green}#1# en #2#{} de otorgar', + [3] = '{C:money}$1{} de cualquier ingreso' }, ['unlock'] = { [1] = 'Completa el desafio', @@ -624,22 +680,22 @@ return { j_bunc_carnival = { ['name'] = 'Carnaval', ['text'] = { - [1] = 'Después de derrotar a la {C:attention}ciega jefe{},', - [2] = '{C:attention}destruye{} un comodín al azar para', - [3] = 'regresar a una apuesta inicial anterior, la proxima vez', - [4] = 'solo funciona en una apuesta inicial mayor' - -- TODO needs a line for whether it's active / ante it will be active + [1] = 'Al derrotar la {C:attention}Ciega Jefe{},', + [2] = '{C:red}destruyes{} un comodín al azar y', + [3] = 'retrocedes 1 apuesta, la próxima vez', + [4] = 'solo funciona en una apuesta mayor' }, ['unlock'] = { - [1] = 'Alcanza un nivel de', - [2] = 'apuesta inicial {E:1,C:attention}0' + [1] = 'Retrocede a la', + [2] = 'apuesta {E:1,C:attention}0' } }, j_bunc_sledgehammer = { ['name'] = 'Martillo', ['text'] = { - [1] = 'Las {C:attention}cartas de vidrio{} otorgan +{X:mult,C:white}X#1#{} multi', - [2] = 'pero siempre se rompen' + [1] = 'Las {C:attention}Cartas de Vidrio{}', + [2] = 'otorgan {X:mult,C:white}X#1#{} Multi adicional', + [3] = 'pero siempre se rompen' }, ['unlock'] = { [1] = 'Juega una mano de 5 cartas', @@ -651,7 +707,7 @@ return { ['name'] = 'Colgante de puerta', ['text'] = { [1] = 'Los comodines {C:blue}comunes{} no aparecen', - [2] = '{s:0.8}Aparecen diferentes rarezas en vez' + [2] = '{C:inactive,s:0.8}Los otros comodines son más comunes{}' }, ['unlock'] = { [1] = 'Gana una partida sin', @@ -662,44 +718,43 @@ return { j_bunc_fingerprints = { ['name'] = 'Huellas dactilares', ['text'] = { - [1] = 'Las cartas anotadas en la {C:attention}mano ganadora{}', - [2] = 'obtienen {C:chips}+#1#{} fichas solo', - [3] = 'por la siguiente ronda', + [1] = 'Las cartas anotadas en la {C:blue}mano{}', + [2] = '{C:attention}ganadora{} otorgan {C:chips}+#1#{} fichas en', + [3] = 'la siguiente ronda', } }, j_bunc_zero_shapiro = { - ['name'] = 'El cero', + ['name'] = 'Cero Shapiro', ['text'] = { - [1] = 'Este comodín obtiene {C:attention}#1#X{} a', - [2] = 'las {C:green,E:1,S:1.1}probabilidades{} {C:attention}esta ronda{} cuando una', - [3] = 'carta con categoría {C:attention}ninguna{}, {C:attention}de cero{}, o {C:attention}no-contable{}', - [4] = 'anota {C:inactive}(K, Q, J, 0, sin categoria)', - [5] = '{C:inactive}(Actual {C:attention}X#2#{C:inactive} a las {C:green,E:1,S:1.1}probabilidades{C:inactive})' - -- TODO not sure how to word non-countable + [1] = 'Al anotar {C:attention}Ks{}, {C:attention}Qs{}, {C:attention}Js{}, o', + [2] = '{C:attention}cartas sin categoria', + [3] = 'tienes una prob. {C:green}#1# en #2#{} de', + [4] = 'crear una {C:attention}Etiqueta D6', } }, j_bunc_nil_bill = { ['name'] = 'El nulo', ['text'] = { - [1] = 'Las cartas {C:attention}debilitadas{} ganan', - [2] = '{C:money}$#1#{} cuando anotan' + [1] = 'Las cartas {C:attention}debilitadas{}', + [2] = 'ganan {C:money}$#1#{} cuando anotan' } }, j_bunc_bierdeckel = { ['name'] = 'Posavasos', ['text'] = { - [1] = 'Las cartas en la mano obtienen', - [2] = '{C:chips}+#1#{} fichas esta ronda', - [3] = 'al jugar o descartar' + [1] = 'Las Cartas en {C:attention}mano', + [2] = 'ganan {C:chips}+#1#{} Fichas esta', + [3] = 'ronda al jugar o descartar' } }, j_bunc_registration_plate = { ['name'] = 'Matrícula', ['text'] = { - [1] = '#1#', - [2] = 'tiene las fichas y el multi de todas', - [3] = 'las {C:attention}manos de póker{} jugadas esta partida', - [4] = '{s:0.8}La combinación cambia cada ronda' + [1] = 'Jugar #1#, #2#, #3#, #4# y #5#', + [2] = 'Anota las {C:blue}Fichas{} y el {C:red}Multi{} de las', + [3] = 'las {C:attention}manos{} jugadas esta ronda', + [4] = '{C:inactive,s:0.8}La combinación cambia cada ronda{}', + [5] = "{C:inactive,s:0.8}Se deben jugar las 5 cartas{}" }, ['unlock'] = { [1] = 'Completa el desafio', @@ -707,9 +762,9 @@ return { } }, j_bunc_slothful = { - ['name'] = 'Comodín perezoso', + ['name'] = 'Comodín Perezoso', ['text'] = { - [1] = 'Las {C:attention}cartas versátiles{}', + [1] = 'Las {C:attention}Cartas Versátiles{}', [2] = 'otorgan {C:mult}+#1#{} multi', [3] = 'cuando anotan' }, @@ -720,11 +775,10 @@ return { } }, j_bunc_neon = { - ['name'] = 'Comodín de neón', + ['name'] = 'Comodín de Neón', ['text'] = { - [1] = 'Este comodín obtiene {X:mult,C:white}X#1#{} multi', - [2] = 'por cada carta {C:attention}debilitada{} anotada', - [3] = '{C:inactive}(Actual {X:mult,C:white}X#2#{C:inactive} multi)' + [1] = 'Las Cartas Mejoradas obtienen', + [2] = 'edición {C:dark_edition,E:1}Fluorescente{} al {C:attention}Anotar', }, ['unlock'] = { [1] = 'Juega una mano de 5 cartas', @@ -733,11 +787,11 @@ return { } }, j_bunc_gameplan = { - ['name'] = 'Plan de juego', + ['name'] = 'Plan de Juego', ['text'] = { - [1] = 'Los {C:attention}comodines{} a los lados de este comodín', - [2] = 'son {C:red}debilitados{} y', - [3] = 'otorgan {C:mult}+#1#{} multi' + [1] = 'Los {C:attention}comodines{} a los costados', + [2] = 'de este comodín son {C:red}debilitados{}', + [3] = 'y otorgan {C:mult}+#1#{} Multi' -- Could be common actually }, ['unlock'] = { [1] = 'Derrota a la {E:1,C:attention}Hoja Verde', @@ -748,8 +802,8 @@ return { ['name'] = 'Conquest', ['text'] = { [1] = '{C:chips}+#1#{} fichas,', - [2] = '{C:red}debilita{} un comodín al azar', - [3] = 'cuando la {C:attention}ciega{} es seleccionada' + [2] = '{C:red}Debilita{} un comodín al azar', + [3] = 'al seleccionar la {C:attention}Ciega{}' }, ['unlock'] = { [1] = 'Derrota al {E:1,C:attention}Corazón Carmesí', @@ -757,21 +811,20 @@ return { } }, j_bunc_hierarchy_of_needs = { - ['name'] = 'Jerarquía de necesidades', + ['name'] = 'Jerarquía Secuencial', ['text'] = { - [1] = '{C:mult}+#1#{} multi por cada', + [1] = '{C:mult}+#1#{} Multi por cada secuencia {C:attention}As-2{}', -- TODO do wilds count, or base suit only? - [2] = '{C:attention}2-As{} del mismo palo', - [3] = 'en tu {C:attention}baraja', - [4] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} multi)' + [2] = 'del mismo palo en tu {C:attention}baraja{}', + [3] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} Multi)', } }, j_bunc_dwarven = { - ['name'] = 'Comodín enano', + ['name'] = 'Comodín Enano', ['text'] = { - [1] = 'Las {C:attention}cartas de piedra{} en mano', - [2] = 'tienen las habilidades de', - [3] = 'las cartas de {C:attention}acero{} y {C:attention}oro' + [1] = 'Las {C:attention}Cartas de Piedra{} en', + [2] = 'mano cuentan como cartas', + [3] = "de {C:attention}Acero{} y {C:attention}Oro" }, ['unlock'] = { [1] = 'Juega una mano que', @@ -780,10 +833,10 @@ return { } }, j_bunc_aristocrat = { - ['name'] = 'Aristócrata', + ['name'] = 'Comodín Aristócrata', ['text'] = { - [1] = 'Elige una carta extra', - [2] = 'de los {C:attention}paquetes potenciadores' + [1] = 'Elige una carta extra de los', + [2] = '{C:attention}paquetes potenciadores' }, ['unlock'] = { [1] = 'Gana una partida sin', @@ -792,19 +845,19 @@ return { } }, j_bunc_metallurgist = { - ['name'] = 'Metalúrgico', + ['name'] = 'Comodín Metalúrgico', ['text'] = { - [1] = 'Las {C:attention}cartas de oro{} otorgan {C:mult}+#1#{} multi', - [2] = 'mientras están en la mano' + [1] = 'Las {C:attention}cartas de oro{} otorgan {C:mult}+#1#{}', + [2] = 'Multi mientras al estar en mano' } }, j_bunc_juggalo = { ['name'] = 'Juggalo', ['text'] = { - [1] = 'Agrega efectos de edición {C:dark_edition}laminada{}, {C:dark_edition}holográfica{},', - [2] = '{C:dark_edition}polícroma{}, o {C:dark_edition}brillantina{}', - [3] = 'a un {C:attention}consumible{} al azar', - [4] = 'cuando la {C:attention}ciega{} es seleccionada' + [1] = 'Otorga edición {C:dark_edition}laminada{},', + [2] = '{C:dark_edition}holográfica{}, {C:dark_edition}polícroma{}', + [3] = 'o {C:dark_edition}brillantina{} a un {C:attention}consumible{}', + [4] = 'al azar al seleccionar una {C:attention}Ciega{}' }, ['unlock'] = { [1] = 'Usa {C:attention,E:1}10{} consumibles', @@ -814,9 +867,9 @@ return { j_bunc_head_in_the_clouds = { ['name'] = 'Cabeza en las nubes', ['text'] = { - [1] = '{C:green}#1# en #2#{} probabilidades de mejorar', - [2] = '{C:attention}carta más alta{} cuando', - [3] = 'mejoras cualquier {C:attention}mano de póker' + [1] = 'Prob. de {C:green}#1# en #2#{} de subir de {C:planet}nivel', + [2] = '{C:attention}Carta más Alta{} cuando subes', + [3] = 'de {C:planet}nivel{} otra {C:attention}mano' }, ['unlock'] = { [1] = 'Gana una partida con', @@ -825,20 +878,19 @@ return { } }, j_bunc_headshot = { - ['name'] = 'Tiro a la cabeza', + ['name'] = 'Disparo a la cabeza', ['text'] = { - [1] = '{X:mult,C:white}X#1#{} multi si la mano jugada', - [2] = 'contiene solamente una sola', - [3] = '{C:attention}carta de figura{} anotante' + [1] = '{X:mult,C:white}X#1#{} Multi si la mano anota', + [2] = 'una sola {C:attention}carta de figura{}', } }, j_bunc_trigger_finger = { ['name'] = 'Gatillazo', ['text'] = { - [1] = '{X:mult,C:white}X#1#{} multi,', - [2] = '{C:attention}seleccionar{} una carta tiene', - [3] = '{C:green}#2# en #3#{} probabilidades de', - [4] = 'jugar las cartas seleccionadas' + [1] = '{X:mult,C:white}X#1#{} Multi.', + [2] = '{C:attention}Seleccionar{} una carta tiene', + [3] = 'una prob. de {C:green}#2# en #3#{} de jugar', + [4] = 'las cartas seleccionadas' }, ['unlock'] = { [1] = 'Derrota a la {E:1,C:attention}Campana Cerúlea', @@ -848,7 +900,7 @@ return { j_bunc_hopscotch = { ['name'] = 'Rayuela', ['text'] = { - [1] = 'Gana {C:red}+#1#{} descarte', + [1] = 'Ganas {C:red}+#1#{} descarte', [2] = 'si la mano jugada', [3] = 'contiene una {C:attention}Escalera{}' } @@ -856,30 +908,29 @@ return { j_bunc_pawn = { ['name'] = 'Peón', ['text'] = { - [1] = 'Cartas de la categoría', - [2] = ' {C:attention}mas baja{} en tu baraja', - [3] = '{C:attention}incrementan en categoría{} cuando anotan' - -- TODO "when scored" is only accurate - -- if the card's rank changes during scoring + [1] = 'Las cartas con la categoría', + [2] = 'más {C:attention}baja{} tu baraja', + [3] = '{C:attention}suben de categoría{} al anotar', + [4] = '{C:inactive}(Categoría más baja: #1#)' } }, j_bunc_puzzle_board = { - ['name'] = 'Panel de adivinanzas', + ['name'] = 'Panel de Adivinanzas', ['text'] = { - [1] = 'Cuando se usa una carta de {C:tarot}tarot{},', - [2] = '{C:green}#1# en #2#{} probabilidades de agregar', - [3] = 'edición {C:dark_edition}laminada{}, {C:dark_edition}holográfica{}, o', - [4] = '{C:dark_edition}polícroma{} al azar', - [5] = ' a una carta seleccionada' + [1] = 'Al usar cartas del {C:tarot}Tarot{}, hay', + [2] = 'una prob. de {C:green}#1# en #2#{} de otorgar', + [3] = 'edición {C:dark_edition}Laminada{}, {C:dark_edition}Holográfica{}, o', + [4] = '{C:dark_edition}Polícroma{} a una carta', + [5] = 'seleccionada' } }, j_bunc_vandalism = { ['name'] = 'Vandalismo', ['text'] = { - [1] = '{C:green}#1# en #2#{} probabilidades de', - [2] = 'sacar cartas boca abajo', - [3] = 'Las cartas boca abajo obtienen', - [4] = '{X:mult,C:white}X#3#{} multi cuando anotan' + [1] = 'Prob. de {C:green}#1# en #2#{} de sacar', + [2] = 'las cartas boca abajo.', + [3] = 'Las cartas boca abajo', + [4] = 'otorgan {X:mult,C:white}X#3#{} Multi al anotan' }, ['unlock'] = { [1] = 'Juega una mano de 5 cartas', @@ -890,17 +941,19 @@ return { j_bunc_protester = { ['name'] = 'Protestante', ['text'] = { - [1] = 'Agrega {C:attention}#1#X{} la categoría mas alta', - [2] = 'descartada esta ronda a las fichas', - [3] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} fichas)' + [1] = 'Agrega {C:attention}#1#X{} el valor la', + [2] = 'categoría más alta descartada', + [3] = 'esta ronda como {C:blue}fichas', + [4] = '{C:inactive}(Actualmente {C:chips}+#2#{C:inactive} Fichas)' } }, j_bunc_doodle = { ['name'] = 'Garabato', ['text'] = { - [1] = '{C:attention}Copia{} el primer consumible', - [2] = 'usado esta ronda', - [3] = '{C:inactive}(Debe haber espacio)' + [1] = '{C:attention}Copia{} la primera carta del', + [2] = '{C:tarot}Tarot{} o de {C:planet}Planeta{} usada', + [3] = 'esta ronda', + [4] = '{C:inactive}(Debe haber espacio)' }, ['unlock'] = { [1] = 'Gana {C:attention,E:1}10{} partidas', @@ -908,32 +961,32 @@ return { } }, j_bunc_disproportionality = { - ['name'] = 'Desproporcionalidad', + ['name'] = '{s:0.9}Desproporcionalidad{}', ['text'] = { [1] = '' } }, j_bunc_running_joke = { - ['name'] = 'Chiste repetido', + ['name'] = 'Chiste recurrente', ['text'] = { [1] = 'Crea un "{C:attention}Comodín{}"', - [2] = '{C:dark_edition}negativo{} al', - [3] = 'principio de cada tienda' + [2] = '{C:dark_edition}negativo{} al principio', + [3] = 'de cada tienda' } }, j_bunc_on_broadway = { ['name'] = 'En Broadway', ['text'] = { - [1] = '{C:chips}+#1#{} fichas y {C:mult}+#2#{} multi si', - [2] = 'la mano jugada contiene una {C:attention}Escalera{}', - [3] = 'con una {C:attention}carta de figura{} anotante' + [1] = '{C:chips}+#1#{} fichas y {C:mult}+#2#{} multi si la mano', + [2] = 'jugada contiene una {C:attention}Escalera{} y', + [3] = 'anota una {C:attention}carta de figura{}' } }, j_bunc_rasta = { ['name'] = 'Rasta', ['text'] = { - [1] = '{C:mult}+#1#{} multi si', - [2] = 'ninguna {C:attention}carta mejorada{}', + [1] = '{C:mult}+#1#{} multi si ninguna', + [2] = '{C:attention}carta mejorada{}', [3] = 'anota' }, ['unlock'] = { @@ -944,10 +997,10 @@ return { j_bunc_critic = { ['name'] = 'Critico', ['text'] = { - [1] = "{X:mult,C:white}X#1#{} multi si la puntuación", + [1] = "{X:mult,C:white}X#1#{} Multi si la puntuación", [2] = 'actual de la mano jugada es', - [3] = '{C:attention}menos que 1/#2#{} de la', - [4] = "puntuación requerida de la ciega" + [3] = '{C:attention}menos{} de la {C:attention}1/#2#{} de la', + [4] = "puntuación requerida" } }, j_bunc_cellphone = { @@ -955,23 +1008,24 @@ return { ['text'] = { [1] = '{C:attention}Regresa{} las cartas anotadas a la mano', [2] = 'después de la primera jugada de la ronda', - [3] = 'si no se usó ningun descarte' + [3] = 'si no se usó ningún {C:red}descarte' } }, j_bunc_wino = { ['name'] = 'Borrachín', ['text'] = { - [1] = 'Cartas jugadas con', - [2] = 'palo de {C:hearts}Corazón{} y {C:diamonds}Diamante{}', - [3] = 'otorgan {C:chips}+#1#{} fichas cuando anotan' + [1] = 'Los con {C:hearts}Corazones{} y {C:diamonds}Diamantes{}', + [2] = 'otorgan {C:chips}+#1#{} Fichas al anotar', } }, j_bunc_bounty_hunter = { ['name'] = 'Cazarrecompensas', ['text'] = { - [1] = '{C:mult}+#1#{} multi por', - [2] = 'cada {C:money}$1{} debajo de {C:money}$0', - [3] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} multi)' + [1] = 'Todas las fuentes de {C:money}dinero', + [2] = 'otorgan {C:money}#1#${} menos y', + [3] = 'gana {C:mult}+#1#{} Multi por cada', + [4] = 'vez que ganas {C:money}dinero', + [5] = '{C:inactive}(Actualmente {C:mult}+#2#{C:inactive} Multi)' }, ['unlock'] = { [1] = 'Ten menos de {E:1,C:attention}$#1#', @@ -981,17 +1035,17 @@ return { j_bunc_mousetrap = { ['name'] = 'Ratonera', ['text'] = { - [1] = '{C:chips}+#1#{} fichas,', - [2] = '{C:green}#2# en #3#{} probabilidades de', - [3] = '{C:attention}perder{} una mano en vez' + [1] = '{C:chips}+#1#{} Fichas,', + [2] = 'Prob. de {C:green}#2# en #3#{} de', + [3] = '{C:red,E:1}anular{} la mano' } }, j_bunc_the_joker = { ['name'] = 'El Comodín', ['text'] = { - [1] = 'Después de la jugada, cada carta', - [2] = 'anotada sin una mejora tiene', - [3] = '{C:green}#1# en #2#{} probabilidades de ser destruida', + [1] = 'Después de cada mano, cada carta', + [2] = 'anotada sin una mejora tiene una', + [3] = 'Prob. de {C:green}#1# en #2#{} ser {C:red}destruida', }, ['unlock'] = { [1] = 'Descubre todas las', @@ -1002,38 +1056,38 @@ return { ['name'] = 'Tangram', ['text'] = { [1] = 'Cuando un {C:attention}7{} es anotado,', - [2] = '{C:mult}+#1#{} multi multiplicado', - [3] = 'por la cantidad de {C:attention}7s{} anotados' + [2] = '{C:mult}+#1#{} multi multiplicado por', + [3] = 'la cantidad de {C:attention}7s{} anotados' } }, j_bunc_domino = { ['name'] = 'Dominó', ['text'] = { - [1] = 'Al {C:attention}adquirir{} o {C:attention}usar', - [2] = 'una carta de la tienda o', - [3] = 'paquete potenciador, adquiere {C:attention}2', - [4] = 'cartas adyacentes si es posible' + [1] = 'Al {C:attention}Adquirir{} o {C:attention}Usar{} una carta de la', + [2] = 'tienda o paquete potenciador', + [3] = 'se adquieren las cartas', + [4] = 'adyacentes si es posible' } }, j_bunc_glue_gun = { ['name'] = 'Pistola de pegamento', ['text'] = { - [1] = 'Vende esta carta para', - [2] = '{C:attention}conectar{} #1# cartas', - [3] = 'seleccionadas' + [1] = 'Vende esta carta', + [2] = 'para {C:attention}unir{} hasta #1#', + [3] = 'cartas seleccionadas' } }, j_bunc_taped = { ['name'] = 'Comodines pegados', ['text'] = { - [1] = '{C:attention}Conecta{} todas', - [2] = 'las cartas jugadas en la primera', + [1] = '{C:attention}Conecta{} todas las cartas', + [2] = 'jugadas en la primera', [3] = 'mano anotada durante', - [4] = 'una {C:attention}ciega jefe{}' + [4] = 'la {C:attention}ciega jefe{}' } }, j_bunc_rubber_band_ball = { - ['name'] = 'Bola de gomas elásticas', + ['name'] = 'Bola de Ligas', ['text'] = { [1] = '{X:mult,C:white}X#1#{} multi por cada {C:attention}conexión{}', [2] = 'creada esta partida', @@ -1043,23 +1097,22 @@ return { j_bunc_headache = { ['name'] = 'Dolor de cabeza', ['text'] = { - [1] = 'Crea una carta de {C:bunco_virtual_dark}poliminó{}', - [2] = 'por cada {C:attention}#1#{} cartas de juego', - [3] = 'destruidas {C:inactive}(Debe haber espacio)', - [4] = '{C:inactive}({C:attention}#2#{C:inactive}/#1# cartas destruidas)' + [1] = 'Crea una etiqueta de {C:bunco_virtual_dark}Arcade{} por', + [2] = 'cada {C:attention}#1#{} {C:inactive}({C:attention}#2#{C:inactive}/#1#){} cartas de juego', + [3] = 'destruidas', + [4] = '{C:inactive}(Debe haber espacio)' } }, j_bunc_games_collector = { ['name'] = 'Coleccionista de juegos', ['text'] = { - [1] = 'Gana {C:chips}+#1#{} fichas', - [2] = 'cuando un grupo conectado', - [3] = 'se {C:attention}saca{} a la mano', - [4] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} fichas)' + [1] = 'Gana {C:chips}+#1#{} Fichas cuando un {C:bunco_virtual_dark}grupo{}', + [2] = 'conectado se {C:attention}saca{} a la mano', + [3] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} fichas)' } }, j_bunc_jumper = { - ['name'] = 'Saltarín', + ['name'] = 'Comodín Saltarín', ['text'] = { [1] = 'Gana {C:chips}+#1#{} fichas', [2] = 'si la mano jugada', @@ -1070,33 +1123,49 @@ return { j_bunc_stylophone = { ['name'] = 'Estilófono', ['text'] = { - [1] = 'Las cartas otorgan {C:attention}X#1#{} multi', - [2] = 'de la {C:attention}categoría{}', + [1] = 'Las cartas otorgan un {C:attention}#1#{}', + [2] = 'de su {C:attention}categoría{} como {C:red}multi', [3] = 'cuando anotan' } }, j_bunc_kite_experiment = { - ['name'] = 'Experimento con cometa', + ['name'] = 'Experimento con Cometa', ['text'] = { - [1] = '{C:green}#1# en #2#{} probabilidades de {C:attention}reanotar', - [2] = 'las {C:attention}cartas de cobre{} reanotadas', - [3] = 'una vez más' + [1] = 'Prob. de {C:green}#1# en #2#{} de {C:attention}reanotar', + [2] = 'las {C:attention}cartas de cobre{}', + [3] = 'reanotadas una vez más' } }, j_bunc_robot = { ['name'] = 'Robot', ['text'] = { [1] = 'Este comodín gana {C:mult}+#1#{} multi', - [2] = 'cada vez que una {C:attention}carta de cobre', - [3] = 'es reanotada', + [2] = 'cada vez que una {C:attention}carta de', + [3] = '{C:attention}cobre{} es reanotada', [4] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} multi)' } }, + j_bunc_hardtack = { + ['name'] = 'Galleta Dura', + ['text'] = { + [1] = 'Las{C:attention} Cartas Galleta{}', + [2] = 'no se destruyen', + [3] = 'al descartarse' + } + }, + j_bunc_pica = { + ['name'] = 'Comodín Picador', + ['text'] = { + [1] = 'Cuando una {C:attention}Carta Galleta{}', + [2] = 'se descarta, {C:attention}juega{} todas', + [3] = 'las cartas descartadas' + } + }, -- Exotic Jokers j_bunc_zealous = { - ['name'] = 'Comodín fanático', + ['name'] = 'Comodín Ferviente', ['text'] = { [1] = '{C:mult}+#1#{} multi si la mano', [2] = 'jugada contiene', @@ -1104,7 +1173,7 @@ return { } }, j_bunc_lurid = { - ['name'] = 'Comodín chillón', + ['name'] = 'Comodín Tenebroso', ['text'] = { [1] = '{C:chips}+#1#{} fichas si la mano', [2] = 'jugada contiene', @@ -1112,7 +1181,7 @@ return { } }, j_bunc_envious = { - ['name'] = 'Comodín envidioso', + ['name'] = 'Comodín Envidioso', ['text'] = { [1] = 'Las cartas jugadas', [2] = 'del palo {C:bunc_fleurons}Florón{} otorgan', @@ -1120,7 +1189,7 @@ return { } }, j_bunc_proud = { - ['name'] = 'Comodín orgulloso', + ['name'] = 'Comodín Orgulloso', ['text'] = { [1] = 'Las cartas jugadas', [2] = 'del palo {C:bunc_halberds}Alabarda{} otorgan', @@ -1128,25 +1197,24 @@ return { } }, j_bunc_wishalloy = { - ['name'] = 'Metál de los deseos', + ['name'] = 'Deseoaleación', ['text'] = { - [1] = '{C:green}#1# en #2#{} probabilidades para', - [2] = 'los {C:bunc_fleurons}Florones{} jugados de', - [3] = 'ganar {C:money}${} igual a las', - [4] = "fichas anotadas de la carta" + [1] = 'Prob. en {C:green}#1# en #2#{} de que los', + [2] = 'los {C:bunc_fleurons}Florones{} jugados', + [3] = 'otorguen sus {C:blue}Fichas{} como', + [4] = "{C:money}Dinero{} al anotar" } }, j_bunc_unobtanium = { - ['name'] = 'Inobtanio', + ['name'] = 'Unobtainio', ['text'] = { - [1] = 'Las cartas jugadas de', - [2] = '{C:bunc_halberds}Alabarda{} otorgan', - [3] = '{C:chips}+#1#{} fichas y {C:mult}+#2#{} multi', - [4] = "cuando anotan" + [1] = 'Las cartas de {C:bunc_halberds}Alabarda{}', + [2] = 'otorgan {C:chips}+#1#{} fichas y {C:mult}+#2#{} multi', + [3] = 'cuando anotan' } }, j_bunc_dynasty = { - ['name'] = 'La dinastía', + ['name'] = 'La Dinastía', ['text'] = { [1] = '{X:mult,C:white}X#1#{} multi si la mano', [2] = 'jugada contiene', @@ -1156,27 +1224,26 @@ return { j_bunc_magic_wand = { ['name'] = 'Varita mágica', ['text'] = { - [1] = 'Este comodín obtiene {X:mult,C:white}X#1#{} multi', - [2] = 'por cada mano {C:attention}consecutiva{} jugada', - [3] = 'que contiene un {C:attention}Espectro{}', - [4] = '{C:inactive}(Actual {X:mult,C:white}X#2#{C:inactive} multi)' + [1] = 'Obtiene {C:mult}+#1#{} Multi si la mano', + [2] = 'jugada contiene {C:attention}Espectro{}', + [3] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} Multi)', + [4] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} Multi)' } }, j_bunc_starfruit = { ['name'] = 'Carambola', ['text'] = { - [1] = '{C:green}#1# en #2#{} probabilidades de mejorar el nivel de la', - [2] = '{C:attention}mano de póker{} jugada si contiene un {C:attention}Espectro', - [3] = '{C:green}#1# en #3#{} probabilidades de destruir este comodín al final de la ronda', - [4] = 'si se jugó una mano que contiene un {C:attention}Espectro{} esta ronda' - -- TODO this joker is way too long + [1] = 'Sube de {C:planet}Nivel{} la mano jugada', + [2] = 'si contiene un {C:attention}Espectro{}.', + [3] = 'Prob. de {C:green}#1# en #2#{} de {C:red}destruirse', + [4] = 'al final de la ronda' } }, j_bunc_fondue = { ['name'] = 'Fondue', ['text'] = { - [1] = 'Las cartas anotadas en la', - [2] = '{C:attention}primera mano{} de la ronda son', + [1] = 'Las cartas anotadas en', + [2] = 'la {C:attention}primera mano{} son', [3] = 'convertidas a {C:bunc_fleurons}Florones' } }, @@ -1197,17 +1264,17 @@ return { j_bunc_roygbiv = { ['name'] = 'Roy G. Biv', ['text'] = { - [1] = '{C:green}#1# en #2#{} probabilidades de agregar', - [2] = 'edición {C:dark_edition}polícroma{}', - [3] = 'a una carta anotada al azar si', - [4] = 'la mano contiene un {C:attention}Espectro' + [1] = 'Prob. de {C:green}#1# en #2#{} de agregar', + [2] = 'edición {C:dark_edition}polícroma{} a una carta', + [3] = 'anotada al azar si la mano', + [4] = 'contiene un {C:attention}Espectro' } }, j_bunc_rigoletto = { ['name'] = 'Rigoletto', ['text'] = { - [1] = '{X:mult,C:white}X#1#{} multi por cada {C:bunco_exotic}carta exotica{}', - [2] = 'en tu {C:attention}baraja', + [1] = '{X:mult,C:white}X#1#{} multi por cada {C:bunco_exotic}carta{}', + [2] = '{C:bunco_exotic}exotica{} en tu {C:attention}baraja', [3] = '{C:inactive}(Actual {X:mult,C:white}X#2#{C:inactive} multi)' }, ['unlock'] = { @@ -1219,8 +1286,8 @@ return { bl_bunc_paling = { ['name'] = 'La cerca', ['text'] = { - [1] = 'Jugar o descartar cuesta', - [2] = 'ambos mano y descarte' + [1] = 'Pierde $1 por', + [2] = 'carta descartada' } }, bl_bunc_umbrella = { @@ -1233,7 +1300,8 @@ return { bl_bunc_tine = { ['name'] = 'La punta', ['text'] = { - [1] = 'Cada #1# es debilitado' + [1] = 'Cada #1#', + [2] = 'es debilitada' } }, bl_bunc_swing = { @@ -1324,14 +1392,15 @@ return { bl_bunc_cadaver = { ['name'] = 'El cadáver', ['text'] = { - [1] = 'No se deben jugar cartas de figuras' + [1] = 'Se debe jugar al menos una', + [2] = 'carta de figura para anotar' } }, bl_bunc_wind = { ['name'] = 'El viento', ['text'] = { - [1] = 'El comodín más izquierdo', - [2] = 'se debilita' + [1] = 'El comodín más a la', + [2] = 'izquierda se debilita' } }, bl_bunc_prince = { @@ -1359,47 +1428,49 @@ return { -- Final bl_bunc_final_crown = { - ['name'] = 'Corona cartujo', + ['name'] = 'Corona Cartuja', ['text'] = { - [1] = 'Todas las cartas de palo base', - [2] = 'de Espadas, Corazón, Trébol y Diamante', + [1] = 'Todas las cartas de los palos', + [2] = 'Espada, Corazón, Trébol y Diamante', [3] = 'se debilitan' } }, bl_bunc_final_trident = { - ['name'] = 'Tridente bermellón', + ['name'] = 'Tridente Bermellón', ['text'] = { - [1] = 'Sin tiendas esta apuesta inicial' + [1] = '+1X a la puntuación por', + [2] = 'cada compra antes de esta ciega' } }, bl_bunc_final_tower = { - ['name'] = 'Torre índigo', + ['name'] = 'Torre de Índigo', ['text'] = { - [1] = 'Las cartas no jugadas previamente', - [2] = 'esta apuesta inicial se debilitan' + [1] = 'Las cartas no jugadas', + [2] = 'esta apuesta se debilitan' } }, bl_bunc_final_dagger = { - ['name'] = 'Daga magenta', + ['name'] = 'Daga Magenta', ['text'] = { [1] = 'Descartar cartas las juega', - [2] = 'y subtrae el valor de la puntuación' + [2] = 'y subtrae el valor a la puntuación' } }, bl_bunc_final_shield = { - ['name'] = 'Escudo turquesa', + ['name'] = 'Escudo Turquesa', ['text'] = { - [1] = 'La puntuación excediente en esta apuesta inicial', - [2] = "se agrega a la puntuación requerida de esta ciega" + [1] = 'La puntuación excedente en esta', + [2] = "apuesta inicial se agrega a la", + [3] = "puntuación requerida de esta ciega" } } }, Back = { b_bunc_fairy = { - ['name'] = 'Baraja hada', + ['name'] = 'Baraja de Hadas', ['text'] = { - [1] = 'Despues de derrotar cada', - [2] = '{C:attention}ciega jefe{}, agrega #1#', + [1] = 'Después de derrotar a la', + [2] = '{C:attention}Ciega Jefe{}, agrega #1#', [3] = "{C:bunco_exotic,T:bunc_exotic_cards}#2#", [4] = " al azar a tu baraja" }, @@ -1409,11 +1480,11 @@ return { } }, b_bunc_digital = { - ['name'] = 'Baraja digital', + ['name'] = 'Baraja Digital', ['text'] = { - [1] = 'Las cartas de {C:bunco_virtual_dark}poliminó{} pueden', + [1] = 'Las cartas de {C:bunco_virtual_dark,E:1}Polimino{} pueden', [2] = 'aparecer en la tienda,', - [3] = "comienza con {C:bunco_virtual_dark,T:c_bunc_the_i}La I{}" + [3] = "comienza con la{C:bunco_virtual_dark,T:c_bunc_the_i} I{}" } } }, @@ -1432,15 +1503,22 @@ return { ['name'] = 'Etiqueta doble', ['text'] = { [1] = 'Otorga una copia de', - [2] = 'la {C:attention}etiqueta{} siguiente seleccionada', + [2] = 'la siguiente {C:attention}etiqueta{} seleccionada', [3] = 'a excepción de {s:0.6,C:attention}Etiquetas doble y triple{s:0.8}' } }, + tag_bunc_d_six = { + ['name'] = 'Etiqueta D6', + ['text'] = { + [1] = 'Agrega un {C:green}Cambio{} gratis', + [2] = 'en la siguiente tienda' + } + }, -- Main Tags tag_bunc_breaking = { - ['name'] = 'Etiqueta rompeciegas', + ['name'] = 'Etiqueta quebradora', ['text'] = { [1] = 'Deshabilita la', [2] = '{C:attention}ciega jefe{}' @@ -1468,15 +1546,15 @@ return { ['name'] = 'Etiqueta brillantina', ['text'] = { [1] = 'El próximo comodín de la', - [2] = 'tienda de la edición base es gratis y', - [3] = 'se vuelve {C:dark_edition}brillantino' + [2] = 'tienda es gratis y tiene', + [3] = 'edición {C:dark_edition}brillantina' } }, tag_bunc_fluorescent = { ['name'] = 'Etiqueta fluorescente', ['text'] = { [1] = 'El próximo comodín de la', - [2] = 'tienda de la edición base es gratis y', + [2] = 'tienda es gratis y', [3] = 'se vuelve {C:dark_edition}fluorescente' } }, @@ -1576,7 +1654,36 @@ return { [1] = 'No puede voltearse, debilitarse', [2] = 'o ser forzado a seleccionarse' } - } + }, + -- Consumible Editions + e_bunc_consumable_edition_foil = { + name = 'Laminada', + ['text'] = { + [1] = 'Crea una etiqueta de', + [2] = '{C:attention}Fichas{} al usarse' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = 'Holográfica', + ['text'] = { + [1] = 'Crea una etiqueta', + [2] = '{C:attention}Multi{} al usarse' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = 'Policroma', + ['text'] = { + [1] = 'Crea una etiqueta', + [2] = '{C:attention}Megamulti{} al usarse' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = 'Brillantina', + ['text'] = { + [1] = 'Crea una etiqueta de', + [2] = '{C:attention}Ultrafichas{} al usarse' + } + }, }, Voucher = { v_bunc_lamination = { @@ -1623,7 +1730,7 @@ return { v_bunc_cups_n_balls = { ['name'] = "Vasos y bolas", ['text'] = { - [1] = '{C:attention}+1{} ranura de paquete potenciador', + [1] = '{C:attention}+1{} paquete potenciador', [2] = 'disponible en la tienda' } }, @@ -1632,7 +1739,7 @@ return { ['text'] = { [1] = 'Renueva los {C:attention}contenidos', [2] = 'de los paquetes potenciadores', - [3] = '{C:attention}1{} vez por paquete' + [3] = '{C:attention}1{} vez' }, ['unlock'] = { [1] = 'Abre {E:1,C:attention}#1#', @@ -1691,7 +1798,7 @@ return { v_bunc_polybius = { ['name'] = 'Polybius', ['text'] = { - [1] = 'Las cartas de {C:bunco_virtual_dark}poliminó{} permiten', + [1] = 'Las cartas de {C:bunco_virtual_dark}polimino{} permiten', [2] = 'conectar {C:attention}una carta{} más', [3] = '{s:0.6,C:inactive}La carta extra puede ser de cualquier propiedad' }, @@ -1711,27 +1818,34 @@ return { [3] = 'carta de cobre anotada' }, }, + m_bunc_cracker = { + ['name'] = 'Carta Galleta', + ['text'] = { + [1] = '{C:attention}Al descartarse{} la carta se', + [2] = 'juega y luego se destruye', + }, + }, }, Stake = { stake_bunc_cyan = { ['name'] = 'Pozo cian', ['text'] = { [1] = 'La tienda puede tener comodines {C:attention}dispersantes{}', - [2] = '{C:inactive,s:0.8}(Destruye un comodín al azar al venderse o destruirse)' + [2] = '{C:inactive,s:0.8}(#1#)', } }, stake_bunc_pink = { ['name'] = 'Pozo rosa', ['text'] = { [1] = 'La tienda puede tener comodines {C:attention}estorbantes{}', - [2] = '{C:inactive,s:0.8}(Se queda en su lugar hasta el fin de la ronda despues de ser vendido)' + [2] = '{C:inactive,s:0.8}(#1#)', } }, stake_bunc_magenta = { ['name'] = 'Pozo magenta', ['text'] = { [1] = 'La tienda puede tener comodines {C:attention}reactivos{}', - [2] = '{C:inactive,s:0.8}(Se debilita si no se omite ninguna ciega esta apuesta inicial)' + [2] = '{C:inactive,s:0.8}(#1#)', } } } diff --git a/localization/es_ES.lua b/localization/es_ES.lua new file mode 100644 index 00000000..487012dd --- /dev/null +++ b/localization/es_ES.lua @@ -0,0 +1,1853 @@ +return { + misc = { + dictionary = { + + -- Config values + + bunc_colorful_finishers = 'Ciegas Finales Coloridas', + bunc_colorful_finishers_desc = 'Habilita fondos coloridos para las ciegas finales', + bunc_colorful_finishers_desc_2 = 'y remueve el fondo gris del modo infinito', + + bunc_high_quality_shaders = 'Sombreadores de Alta Definición', + bunc_high_quality_shaders_desc = 'Hace que algunos de los sombreadores', + bunc_high_quality_shaders_desc_2 = 'se muestren en alta definición (puede causar lag)', + + bunc_fixed_sprites = 'Sprites Reparados', + bunc_fixed_sprites_desc = 'Cambia algunos sprites de manera menor, removiendo', + bunc_fixed_sprites_desc_2 = 'pixeles sueltos, mejorando la consistencia y el alto contraste', + + bunc_gameplay_reworks = 'Cambios de Jugabilidad', + bunc_gameplay_reworks_desc = 'Rehace algunas de las mecánicas originales', + bunc_gameplay_reworks_desc_2 = 'para hacer el juego más agradable', + + bunc_fixed_badges = 'Placas Reparadas', + bunc_fixed_badges_desc = 'Cambia las placas en los consumibles, reemplazando texto', + bunc_fixed_badges_desc_2 = 'confuso con indicaciones de su manera de obtener', + + bunc_jokerlike_consumable_editions = 'Ediciones en Ranura de Consumibles', + bunc_jokerlike_consumable_editions_desc = 'Revierte al comportamiento original de los consumibles con', + bunc_jokerlike_consumable_editions_desc_2 = 'ediciones actuando como comodines (para otros mods con conflictos)', + + bunc_default_true = 'Habilitado por defecto', + bunc_default_false = 'Deshabilitado por defecto', + bunc_requires_restart = 'Requiere un reinicio del juego', + + -- Miscellaneous + + bunc_copied = '¡Se copió!', + bunc_nothing = 'Nada', + bunc_chips = 'Fichas', + bunc_loop = '¡Repetido!', + bunc_chance = 'Probabilidades', + bunc_word_and = 'y', + bunc_debuffed = '¡Debilitado!', + bunc_pew = 'Pew!', + bunc_declined = 'Rechazado...', + bunc_accepted = '¡Aceptado!', + bunc_ouch = '¡OUCH!', + bunc_repeat = '¡Se repitió!', + bunc_thoth_tarot = 'Tarot de Thoth', + bunc_mysterious_tarot = '¿Tarot?', + bunc_mysterious_polymino = '¿Polimino?', + bunc_most_played_rank = '(categoría mas jugada)', + bunc_least_played_hand = '(mano menos jugada)', + bunc_blade = '(1.5X puntuación de la ciega)', + bunc_exceeded_score = '¡Excedió el límite!', + bunc_volume = 'Volumen', + + -- Consumable types + + k_polymino = 'Polimino', + b_polymino_cards = 'Cartas de polimino', + + -- Booster types + + k_bunc_blind_pack = 'Paquete de ciegas', + k_bunc_virtual_pack = 'Paquete virtual', + }, + + -- Suits + + suits_singular = { + bunc_Fleurons = 'Florón', + bunc_Halberds = 'Alabarda', + }, + suits_plural = { + bunc_Fleurons = 'Florones', + bunc_Halberds = 'Alabardas', + }, + + -- Poker hands + + poker_hands = { + ['bunc_Spectrum'] = 'Espectro', + ['bunc_Straight Spectrum'] = 'Escalera Espectral', + ['bunc_Straight Spectrum (Royal)'] = 'Espectro Real', + ['bunc_Spectrum House'] = 'Full Espectral', + ['bunc_Spectrum Five'] = 'Quintilla Espectral', + ['bunc_Deal'] = 'Matrícula' + }, + poker_hand_descriptions = { + ['bunc_Spectrum'] = { + [1] = "5 cartas de palo diferente" + }, + ['bunc_Straight Spectrum'] = { + [1] = "5 cartas seguidas", + [2] = "de palo diferente" + }, + ['bunc_Spectrum House'] = { + [1] = "Una Tercia y un Par con cada", + [2] = "carta de palo diferente" + }, + ['bunc_Spectrum Five'] = { + [1] = "5 cartas de la misma categoría y", + [2] = "cada una de palo diferente" + }, + ['bunc_Deal'] = { + [1] = '5 Categorías elegidas', + [2] = 'por la Matrícula' + } + }, + labels = { + + -- Editions + + bunc_glitter = 'Brillantina', + bunc_fluorescent = 'Fluorescente', + + -- Stickers + + bunc_scattering = 'Dispersante', + bunc_hindered = 'Estorbante', + bunc_reactive = 'Reactiva', + } + }, + descriptions = { + Other = { + bunc_temporary_extra_chips = {['text'] = {[1] = '{C:chips}+#1#{} fichas extra esta ronda'}}, + bunc_linked_cards = {['text'] = {[1] = '{C:attention}Conectada{} en este grupo:'}}, + bunc_linked_group = { + ['name'] = 'Grupo Conectado', + ['text'] = { + [1] = 'Ls cartas conectadas en', + [2] = 'Grupo se sacan, seleccionan', + [3] = 'y destruyen {C:attention}juntas' + } + }, + bunc_drawn_linked_cards = {['text'] = {[1] = '{C:attention}Conectada{} en grupo en mano'}}, + bunc_exotic_cards = { + ['name'] = 'Cartas exoticas', + ['text'] = { + [1] = 'Cartas con palo', + [2] = 'de {C:bunc_fleurons}Florón{} o {C:bunc_halberds}Alabarda{}' + } + }, + Enhanced = { + m_bunc_copper = { + ['name'] = 'Carta de Cobre', + ['text'] = { + [1] = 'Anota de nuevo si', + [2] = 'está al {C:attention}lado{} de', + [3] = 'otra carta de cobre anotada' + }, + }, + m_bunc_cracker = { + ['name'] = 'Carta Galleta', + ['text'] = { + [1] = '{C:attention}Al descartarse{} la carta se', + [2] = 'juega y luego se destruye', + }, + }, + }, + + -- Undiscovered + + undiscovered_polymino = { + ['name'] = 'No se descubrió', + ['text'] = { + [1] = 'Compra o usa', + [2] = 'esta carta', + [3] = 'en una partida sin códigos', + [4] = 'para saber lo que hace' + } + }, + + -- Booster Packs + + p_bunc_blind = { + ['name'] = 'Paquete de ciegas', + ['text'] = { + [1] = 'Elige {C:attention}1{} de hasta {C:attention}#1# Ciegas Jefe{}', + [2] = 'para cambiar la actual', + } + }, + p_bunc_virtual_normal = { + ['name'] = 'Paquete virtual', + ['text'] = { + [1] = 'Saca toda la baraja y', + [2] = 'elige {C:attention}#1#{} de hasta', + [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} polimino{} para', + [4] = 'usar de inmediato' + } + }, + p_bunc_virtual_jumbo = { + ['name'] = 'Paquete jumbo virtual', + ['text'] = { + [1] = 'Saca toda la baraja y', + [2] = 'elige {C:attention}#1#{} de hasta', + [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} poliminó{} para', + [4] = 'usar de inmediato' + } + }, + p_bunc_virtual_mega = { + ['name'] = 'Paquete mega virtual', + ['text'] = { + [1] = 'Saca toda la baraja y', + [2] = 'elige {C:attention}#1#{} de hasta', + [3] = '{C:attention}#2# cartas de{C:bunco_virtual_dark} polimino{} para', + [4] = 'usar de inmediato' + } + }, + + -- Stickers + + bunc_scattering = { + ['name'] = 'Dispersante', + ['text'] = { + [1] = 'Destruye un', + [2] = 'comodín al cercano', + [3] = 'al venderse o destruirse' + } + }, + bunc_hindered = { + ['name'] = 'Estorbante', + ['text'] = { + [1] = 'Se queda en su lugar hasta', + [2] = 'el fin de la ronda', + [3] = 'despues de ser vendido' + } + }, + bunc_reactive = { + ['name'] = 'Reactivo', + ['text'] = { + [1] = 'Se debilita si no se omite', + [2] = 'ninguna ciega esta apuesta inicial' + } + }, + + -- Stake stickers + + bunc_cyan_sticker = { + ['name'] = 'Sticker cian', + ['text'] = { + [1] = 'Usaste este comodín', + [2] = 'para ganar en la dificultad {C:attention}Pozo', + [3] = '{C:attention}cian{}' + } + }, + bunc_pink_sticker = { + ['name'] = 'Sticker rosa', + ['text'] = { + [1] = 'Usaste este comodín', + [2] = 'para ganar en la dificultad {C:attention}Pozo', + [3] = '{C:attention}rosa{}' + } + }, + bunc_magenta_sticker = { + ['name'] = 'Sticker magenta', + ['text'] = { + [1] = 'Usaste este comodín', + [2] = 'para ganar en la dificultad {C:attention}Pozo', + [3] = '{C:attention}magenta{}' + } + } + }, + + -- Consumables + + Tarot = { + -- Reworked Tarots + + c_bunc_wheel_of_fortune = { + ['name'] = 'Rueda de la Fortuna', + ['text'] = { + [1] = '{C:green}#1# en #2#{} probabilidades de', + [2] = 'añadir {C:dark_edition}Laminado{}, {C:dark_edition}Holográfica{},', + [3] = '{C:dark_edition}Policroma{}, o {C:dark_edition}Brillantina{} a', + [4] = 'un {C:attention}Comodín{} al azar' + } + }, + + -- Main Tarots + + c_bunc_adjustment = { + ['name'] = 'El Ajuste', + ['text'] = { + [1] = 'Mejora hasta {C:attention}#1#{} cartas', + [2] = 'seleccionadas', + [3] = 'a {C:attention}Cartas Galletas' + }, + }, + c_bunc_art = { + ['name'] = 'El Arte', + ['text'] = { + [1] = 'Mejora {C:attention}#1#{} cartas', + [2] = 'seleccionadas', + [3] = 'a {C:attention}#2#' + }, + }, + c_bunc_universe = { + ['name'] = 'El Universo', + ['text'] = { + [1] = '{C:attention}Cambia al azar{} el palo,', + [2] = 'categoría, mejora, edición,', + [3] = 'y sello de hasta {C:attention}#1#{}', + [4] = 'cartas seleccionadas' + }, + }, + c_bunc_lust = { + ['name'] = 'La Lujuría', + ['text'] = { + [1] = 'Otorga {C:money}$#1#{} por cada', + [2] = 'carta en mano', + [3] = '{C:inactive}(Máximo de {C:money}$#2#{C:inactive})', + [4] = '{C:inactive}(Actualmente {C:money}$#3#{C:inactive})' + }, + }, + c_bunc_sky = { + ['name'] = 'El Cielo', + ['text'] = { + [1] = 'Convierte hasta {C:attention}#1#{}', + [2] = 'cartas seleccionadas', + [3] = 'en {C:bunc_fleurons}Florones{}', + } + }, + c_bunc_abyss = { + ['name'] = 'El Abismo', + ['text'] = { + [1] = 'Convierte hasta {C:attention}#1#{}', + [2] = 'cartas seleccionadas', + [3] = 'en {C:bunc_halberds}Alabardas{}' + } + }, + }, + Planet = { + c_bunc_quaoar = { + ['name'] = 'Quaoar' + }, + c_bunc_haumea = { + ['name'] = 'Haumea' + }, + c_bunc_sedna = { + ['name'] = 'Sedna' + }, + c_bunc_makemake = { + ['name'] = 'Makemake' + }, + }, + Spectral = { + + c_bunc_aura = { + ['name'] = 'Aura', + ['text'] = { + [1] = 'Otorga edición {C:dark_edition}Laminada{}, {C:dark_edition}Holografica{},', + [2] = '{C:dark_edition}Policromo{}, o {C:dark_edition}Brillantina{}', + [3] = 'a {C:attention}1{} carta seleccionada' + } + }, + c_bunc_cleanse = { + ['name'] = 'Purificar', + ['text'] = { + [1] = 'Agrega {C:dark_edition}fluorescencia{} a {C:attention}#1#{} cartas', + [2] = 'seleccionadas de tu mano' + } + }, + c_bunc_the_8 = { + ['name'] = 'El 8', + ['text'] = { + [1] = '{C:attention}Conecta{} todas las cartas', + [2] = 'sin conectar de tu mano', + } + } + }, + Polymino = { + c_bunc_the_i = { + ['name'] = 'La I', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'que comparten el {C:attention}mismo palo o categoría' + } + }, + c_bunc_the_o = { + ['name'] = 'La O', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde 2 cartas comparten una {C:attention}misma propiedad', + [3] = '{C:inactive}(categoría o palo){} y las otras 2 cartas', + [4] = 'comparten {C:attention}un tipo diferente{} de la {C:attention}misma propiedad' + } + }, + c_bunc_the_t = { + ['name'] = 'La T', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde 3 cartas comparten la {C:attention}misma propiedad', + [3] = '{C:inactive}(categoría o palo){} y la otra carta', + [4] = '{C:attention}no comparte{} la {C:attention}misma propiedad{}', + [5] = 'con las otras cartas' + } + }, + c_bunc_the_s = { + ['name'] = 'La S', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde {C:attention}2 grupos{} de 2 cartas comparten', + [3] = 'la {C:attention}misma categoría{} dentro de cada grupo, con una', + [4] = 'carta de cada grupo que comparten un {C:attention}mismo palo' + } + }, + c_bunc_the_z = { + ['name'] = 'La Z', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde {C:attention}2 grupos{} de 2 cartas comparten', + [3] = 'el {C:attention}mismo palo{} dentro de cada grupo, con una', + [4] = 'carta de cada grupo que comparten una {C:attention}misma categoría' + } + }, + c_bunc_the_j = { + ['name'] = 'La J', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde 3 cartas comparten la {C:attention}misma categoría', + [3] = 'y la otra carta comparte', + [4] = 'un {C:attention}mismo palo{} sin', + [5] = 'compartir la misma categoria' + } + }, + c_bunc_the_l = { + ['name'] = 'La L', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde 3 cartas comparten el {C:attention}mismo palo', + [3] = 'y la otra carta comparte', + [4] = 'una {C:attention}misma categoría{} sin', + [5] = 'compartir el mismo palo' + } + }, + c_bunc_the_slash = { + ['name'] = 'El /', + ['text'] = { + [1] = '{C:attention}Conecta{} 4 cartas seleccionadas', + [2] = 'donde todas las cartas tienen una', + [3] = '{C:attention}propiedad diferente{} {C:inactive}(categoría o palo)' + } + } + }, + Joker = { + + -- Reworked Jokers + + j_bunc_luchador = { + ['name'] = 'Luchador', + ['text'] = { + [1] = 'Vende este comodín para crear', + [2] = 'una {C:attention}Etiqueta quebradora', + } + }, + j_bunc_red_card = { + ['name'] = 'Tarjeta roja', + ['text'] = { + [1] = 'Este comodín obtiene {C:red}+#1#{} multi', + [2] = 'por cada elección omitida', + [3] = 'en un {C:attention}paquete potenciador{}', + [4] = '{C:inactive}(Actual {C:red}+#2#{C:inactive} multi)' + } + }, + + -- Main Jokers + + j_bunc_cassette_a = { + ['name'] = 'Cassette (Lado A)', + ['text'] = { + [1] = 'Las cartas de {C:attention}palo claro', + [2] = 'otorgan {C:chips}+#1#{} fichas al anotar' + } + }, + j_bunc_cassette_b = { + ['name'] = 'Cassette (Lado B)', + ['text'] = { + [1] = 'Las cartas de {C:attention}palo oscuro', + [2] = 'otorgan {C:mult}+#2#{} multi al anotar' + } + }, + j_bunc_cassette_extra = { + ['text'] = { + [1] = '{C:inactive}Al descartar, cambia de lado' + } + }, + j_bunc_mosaic = { + ['name'] = 'Comodín de Mosaico', + ['text'] = { + [1] = 'Las {C:attention}cartas de piedra{} otorgan', + [2] = '{C:mult}+#1#{} Multi al anotar', + }, + ['unlock'] = { + [1] = 'Juega una mano de 5 cartas', + [2] = 'que solo contiene', + [3] = 'cartas de {C:attention,E:1}piedra{}' + } + }, + j_bunc_voxel = { + ['name'] = 'Comodín de Vóxeles', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} multi, {X:mult,C:white}-X#2#{} multi por cada', + [2] = '{C:attention}carta mejorada{} en tu {C:attention}baraja{}', + [3] = '{C:inactive}(Actual {X:mult,C:white}X#3#{C:inactive} multi)' + }, + ['unlock'] = { + [1] = 'Ten al menos {C:attention}10', + [2] = 'cartas {E:1,C:attention}mejoradas{} en', + [3] = 'tu baraja' + } + }, + j_bunc_crop_circles = { + ['name'] = 'Agroglifos', + ['text'] = { + [1] = 'Los {C:clubs}Tréboles{} otorgan {C:mult}+3{} Multi,', + [2] = 'Los {C:attention}8s{} otorgan {C:mult}+2{} Multi,', + [3] = 'Las {C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} otorgan {C:mult}+1{} Multi' + } + }, + j_bunc_crop_circles_exotic = { + ['name'] = 'Agroglifos', + ['text'] = { + [1] = 'Los {C:bunc_fleurons}Florones{} otorgan {C:mult}+4{} Multi,', + [2] = 'Los {C:clubs}Tréboles{} otorgan {C:mult}+3{} Multi,', + [3] = 'Los {C:attention}8s{} otorgan {C:mult}+2{} Multi,', + [4] = 'Las {C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} otorgan {C:mult}+1{} Multi' + } + }, + j_bunc_xray = { + ['name'] = 'Rayos X', + ['text'] = { + [1] = 'Este comodín obtiene {X:mult,C:white}X#1#{} Multi', + [2] = 'por cada carta volteada', + [3] = '{C:inactive}(Actualmente {X:mult,C:white}X#2#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = 'Completa el desafio', + [2] = '{E:1,C:attention}Visión de rayos X' + } + }, + j_bunc_dread = { + ['name'] = 'Terror', + ['text'] = { + 'Al jugar tu {C:attention}última{} {C:blue}mano{},', + 'ganas {C:attention}2{} {C:planet}niveles{} y {C:attention}destruyes{}', + 'Las cartas anotadas', + "{C:red,s:0.8}pierdes{} {C:inactive,s:0.8}todos los{} {C:attention,s:0.8}niveles ganados{}", + '{C:inactive,s:0.8}si pierdes este comodín' + }, + ['unlock'] = { + [1] = 'Reduce tu baraja', + [2] = 'por al menos {E:1,C:attention}10{} cartas', + [3] = 'en una ronda' + } + }, + j_bunc_prehistoric = { + ['name'] = 'Comodín prehistorico', + ['text'] = { + [1] = 'Cartas anotadas que compartan', + [2] = '{C:attention}categoría{} y {C:attention}palo{} con una {C:attention}carta', + [3] = '{C:attention}que ya anotó{} esta ronda', + [4] = 'otorgan {C:mult}+#1#{} Multi' + }, + ['unlock'] = { + [1] = 'Juega un', + [2] = '{E:1,C:attention}cinco de color' + } + }, + j_bunc_linocut = { + ['name'] = 'Comodín linograbado', + ['text'] = { + [1] = 'Al jugar exactamente {C:attention}2{}', + [2] = 'cartas que forman un {C:attention}Par{}', + [3] = "convierte la carta {C:attention}izquierda{}", + [4] = "al palo de la carta {C:attention}derecha{}", + [5] = '{C:inactive}(Arrastra para reordenar)' + -- TODO this joker is a bit wordy + } + }, + j_bunc_ghost_print = { + ['name'] = 'Impresión fantasma', + ['text'] = { + [1] = 'Otorga {C:blue}fichas{} y {C:red}multi{} iguales al', + [2] = '{C:planet}valor base{} de la {C:attention}última mano{} jugada', + [3] = '{C:inactive}(Ultima mano: #1#)' + } + }, + j_bunc_loan_shark = { + ['name'] = 'Usurero', + ['text'] = { + [1] = 'Gana {C:money}$#1#', + [2] = 'al adquirirse...' + }, + ['unlock'] = { + [1] = 'Gasta al menos {E:1,C:attention}$100', + [2] = 'durante una sola ronda' + } + }, + j_bunc_loan_shark_full = { + ['name'] = 'Usurero', + ['text'] = { + [1] = 'Ganas {C:money}$#1#{} al obtenerlo,', + [2] = 'te cobra {C:money}$100{} para irse' + } + }, + j_bunc_basement = { + ['name'] = 'Comodín de sótano', + ['text'] = { + [1] = 'Al derrotar la {C:attention}ciega jefe{},', + [2] = 'crea una carta {C:spectral}espectral{}', + [3] = '{C:inactive}(Debe haber espacio)' + } + }, + j_bunc_shepherd = { + ['name'] = 'Comodín pastor', + ['text'] = { + [1] = 'Este comodín obtiene {C:chips}+#1#{} Fichas', + [2] = 'si la mano jugada contiene un {C:attention}Par{}', + [3] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} Fichas)' + } + }, + j_bunc_knight = { + ['name'] = 'Caballero Comodín', + ['text'] = { + [1] = 'Al seleccionar la {C:attention}ciega{}, {C:attention}mezcla{} todos', + [2] = 'los comodines y obtiene {C:mult}+#1#{} Multi se', + [3] = '{C:red}reinicia{} si reacomodas un comodín', + [4] = '{C:inactive}(Actualmente {C:mult}+#2#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = 'Derrota a la {E:1,C:attention}Bellota Ambarina', + [2] = 'sin deshabilitarla' + } + }, + j_bunc_jmjb = { + ['name'] = 'Tarjeta Coleccionable de Comodín Man y el Chico Bufón Núm. 54', + ['text'] = { + [1] = 'Los {C:attention}paquetes estándar{} contienen', + [2] = 'solo {C:dark_edition,E:1}cartas mejoradas{}' + }, + ['unlock'] = { + [1] = 'Abre {E:1,C:attention}50', + [2] = 'paquetes potenciadores', + [3] = '{C:inactive}(#2#)' + } + }, + j_bunc_dogs_playing_poker = { + ['name'] = 'Perros jugando póker', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} multi si sólo anotas', + [2] = '{C:attention}2{}, {C:attention}3{}, {C:attention}4{}, o {C:attention}5' + } + }, + j_bunc_righthook = { + ['name'] = 'Gancho derecho', + ['text'] = { + [1] = '{C:attention}Reactiva{} la carta del extremo derecho', + [2] = 'una vez por cada {C:blue}mano{} restante', + }, + ['unlock'] = { + [1] = 'Reactiva una carta', + [2] = 'jugada al menos', + [3] = '{E:1,C:attention}5 veces{}' + } + }, + j_bunc_fiendish = { + ['name'] = 'Comodín Embustero', + ['text'] = { + [1] = 'Duplica todas las fuentes de dinero.', + [2] = 'Prob. de {C:green}#1# en #2#{} de otorgar', + [3] = '{C:money}$1{} de cualquier ingreso' + }, + ['unlock'] = { + [1] = 'Completa el desafio', + [2] = '{E:1,C:attention}Doble o nada' + } + }, + j_bunc_carnival = { + ['name'] = 'Carnaval', + ['text'] = { + [1] = 'Al derrotar la {C:attention}Ciega Jefe{},', + [2] = '{C:red}destruyes{} un comodín al azar y', + [3] = 'retrocedes 1 apuesta, la próxima vez', + [4] = 'solo funciona en una apuesta mayor' + }, + ['unlock'] = { + [1] = 'Retrocede a la', + [2] = 'apuesta {E:1,C:attention}0' + } + }, + j_bunc_sledgehammer = { + ['name'] = 'Martillo', + ['text'] = { + [1] = 'Las {C:attention}Cartas de Vidrio{}', + [2] = 'otorgan {X:mult,C:white}X#1#{} Multi adicional', + [3] = 'pero siempre se rompen' + }, + ['unlock'] = { + [1] = 'Juega una mano de 5 cartas', + [2] = 'que contiene solo', + [3] = 'cartas de {C:attention,E:1}vidrio{}' + } + }, + j_bunc_doorhanger = { + ['name'] = 'Colgante de puerta', + ['text'] = { + [1] = 'Los comodines {C:blue}comunes{} no aparecen', + [2] = '{C:inactive,s:0.8}Los otros comodines son más comunes{}' + }, + ['unlock'] = { + [1] = 'Gana una partida sin', + [2] = 'haber tenido', + [3] = 'comodines {C:attention}comunes{}' + } + }, + j_bunc_fingerprints = { + ['name'] = 'Huellas dactilares', + ['text'] = { + [1] = 'Las cartas anotadas en la {C:blue}mano{}', + [2] = '{C:attention}ganadora{} otorgan {C:chips}+#1#{} fichas en', + [3] = 'la siguiente ronda', + } + }, + j_bunc_zero_shapiro = { + ['name'] = 'Cero Shapiro', + ['text'] = { + [1] = 'Al anotar {C:attention}Ks{}, {C:attention}Qs{}, {C:attention}Js{}, o', + [2] = '{C:attention}cartas sin categoria', + [3] = 'tienes una prob. {C:green}#1# en #2#{} de', + [4] = 'crear una {C:attention}Etiqueta D6', + } + }, + j_bunc_nil_bill = { + ['name'] = 'El nulo', + ['text'] = { + [1] = 'Las cartas {C:attention}debilitadas{}', + [2] = 'ganan {C:money}$#1#{} cuando anotan' + } + }, + j_bunc_bierdeckel = { + ['name'] = 'Posavasos', + ['text'] = { + [1] = 'Las Cartas en {C:attention}mano', + [2] = 'ganan {C:chips}+#1#{} Fichas esta', + [3] = 'ronda al jugar o descartar' + } + }, + j_bunc_registration_plate = { + ['name'] = 'Matrícula', + ['text'] = { + [1] = 'Jugar #1#, #2#, #3#, #4# y #5#', + [2] = 'Anota las {C:blue}Fichas{} y el {C:red}Multi{} de las', + [3] = 'las {C:attention}manos{} jugadas esta ronda', + [4] = '{C:inactive,s:0.8}La combinación cambia cada ronda{}', + [5] = "{C:inactive,s:0.8}Se deben jugar las 5 cartas{}" + }, + ['unlock'] = { + [1] = 'Completa el desafio', + [2] = '{E:1,C:attention}Ciudad de los 15 minutos' + } + }, + j_bunc_slothful = { + ['name'] = 'Comodín Perezoso', + ['text'] = { + [1] = 'Las {C:attention}Cartas Versátiles{}', + [2] = 'otorgan {C:mult}+#1#{} multi', + [3] = 'cuando anotan' + }, + ['unlock'] = { + [1] = 'Juega una mano de 5 cartas', + [2] = 'que contiene solo', + [3] = 'cartas {C:attention,E:1}versátiles{}' + } + }, + j_bunc_neon = { + ['name'] = 'Comodín de Neón', + ['text'] = { + [1] = 'Las Cartas Mejoradas obtienen', + [2] = 'edición {C:dark_edition,E:1}Fluorescente{} al {C:attention}Anotar', + }, + ['unlock'] = { + [1] = 'Juega una mano de 5 cartas', + [2] = 'que contiene solo', + [3] = 'cartas {C:attention,E:1}debilitadas{}' + } + }, + j_bunc_gameplan = { + ['name'] = 'Plan de Juego', + ['text'] = { + [1] = 'Los {C:attention}comodines{} a los costados', + [2] = 'de este comodín son {C:red}debilitados{}', + [3] = 'y otorgan {C:mult}+#1#{} Multi' -- Could be common actually + }, + ['unlock'] = { + [1] = 'Derrota a la {E:1,C:attention}Hoja Verde', + [2] = 'sin deshabilitarla' + } + }, + j_bunc_conquest = { + ['name'] = 'Conquest', + ['text'] = { + [1] = '{C:chips}+#1#{} fichas,', + [2] = '{C:red}Debilita{} un comodín al azar', + [3] = 'al seleccionar la {C:attention}Ciega{}' + }, + ['unlock'] = { + [1] = 'Derrota al {E:1,C:attention}Corazón Carmesí', + [2] = 'sin deshabilitarlo' + } + }, + j_bunc_hierarchy_of_needs = { + ['name'] = 'Jerarquía Secuencial', + ['text'] = { + [1] = '{C:mult}+#1#{} Multi por cada secuencia {C:attention}As-2{}', + -- TODO do wilds count, or base suit only? + [2] = 'del mismo palo en tu {C:attention}baraja{}', + [3] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} Multi)', + } + }, + j_bunc_dwarven = { + ['name'] = 'Comodín Enano', + ['text'] = { + [1] = 'Las {C:attention}Cartas de Piedra{} en', + [2] = 'mano cuentan como cartas', + [3] = "de {C:attention}Acero{} y {C:attention}Oro" + }, + ['unlock'] = { + [1] = 'Juega una mano que', + [2] = 'contiene cartas de {E:1,C:attention}piedra{}, {E:1,C:attention}acero,', + [3] = 'y {E:1,C:attention}oro{}' + } + }, + j_bunc_aristocrat = { + ['name'] = 'Comodín Aristócrata', + ['text'] = { + [1] = 'Elige una carta extra de los', + [2] = '{C:attention}paquetes potenciadores' + }, + ['unlock'] = { + [1] = 'Gana una partida sin', + [2] = 'haber abierto', + [3] = '{C:attention,E:1}paquetes potenciadores' + } + }, + j_bunc_metallurgist = { + ['name'] = 'Comodín Metalúrgico', + ['text'] = { + [1] = 'Las {C:attention}cartas de oro{} otorgan {C:mult}+#1#{}', + [2] = 'Multi mientras al estar en mano' + } + }, + j_bunc_juggalo = { + ['name'] = 'Juggalo', + ['text'] = { + [1] = 'Otorga edición {C:dark_edition}laminada{},', + [2] = '{C:dark_edition}holográfica{}, {C:dark_edition}polícroma{}', + [3] = 'o {C:dark_edition}brillantina{} a un {C:attention}consumible{}', + [4] = 'al azar al seleccionar una {C:attention}Ciega{}' + }, + ['unlock'] = { + [1] = 'Usa {C:attention,E:1}10{} consumibles', + [2] = 'con {C:attention,E:1}ediciones' + } + }, + j_bunc_head_in_the_clouds = { + ['name'] = 'Cabeza en las nubes', + ['text'] = { + [1] = 'Prob. de {C:green}#1# en #2#{} de subir de {C:planet}nivel', + [2] = '{C:attention}Carta más Alta{} cuando subes', + [3] = 'de {C:planet}nivel{} otra {C:attention}mano' + }, + ['unlock'] = { + [1] = 'Gana una partida con', + [2] = '{C:attention,E:1}carta más alta{} siendo la', + [3] = 'mano de póker mas mejorada' + } + }, + j_bunc_headshot = { + ['name'] = 'Disparo a la cabeza', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi si la mano anota', + [2] = 'una sola {C:attention}carta de figura{}', + } + }, + j_bunc_trigger_finger = { + ['name'] = 'Gatillazo', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi.', + [2] = '{C:attention}Seleccionar{} una carta tiene', + [3] = 'una prob. de {C:green}#2# en #3#{} de jugar', + [4] = 'las cartas seleccionadas' + }, + ['unlock'] = { + [1] = 'Derrota a la {E:1,C:attention}Campana Cerúlea', + [2] = 'sin deshabilitarla' + } + }, + j_bunc_hopscotch = { + ['name'] = 'Rayuela', + ['text'] = { + [1] = 'Ganas {C:red}+#1#{} descarte', + [2] = 'si la mano jugada', + [3] = 'contiene una {C:attention}Escalera{}' + } + }, + j_bunc_pawn = { + ['name'] = 'Peón', + ['text'] = { + [1] = 'Las cartas con la categoría', + [2] = 'más {C:attention}baja{} tu baraja', + [3] = '{C:attention}suben de categoría{} al anotar', + [4] = '{C:inactive}(Categoría más baja: #1#)' + } + }, + j_bunc_puzzle_board = { + ['name'] = 'Panel de Adivinanzas', + ['text'] = { + [1] = 'Al usar cartas del {C:tarot}Tarot{}, hay', + [2] = 'una prob. de {C:green}#1# en #2#{} de otorgar', + [3] = 'edición {C:dark_edition}Laminada{}, {C:dark_edition}Holográfica{}, o', + [4] = '{C:dark_edition}Polícroma{} a una carta', + [5] = 'seleccionada' + } + }, + j_bunc_vandalism = { + ['name'] = 'Vandalismo', + ['text'] = { + [1] = 'Prob. de {C:green}#1# en #2#{} de sacar', + [2] = 'las cartas boca abajo.', + [3] = 'Las cartas boca abajo', + [4] = 'otorgan {X:mult,C:white}X#3#{} Multi al anotan' + }, + ['unlock'] = { + [1] = 'Juega una mano de 5 cartas', + [2] = 'que contiene solo', + [3] = 'cartas {C:attention,E:1}boca abajo{}' + } + }, + j_bunc_protester = { + ['name'] = 'Protestante', + ['text'] = { + [1] = 'Agrega {C:attention}#1#X{} el valor la', + [2] = 'categoría más alta descartada', + [3] = 'esta ronda como {C:blue}fichas', + [4] = '{C:inactive}(Actualmente {C:chips}+#2#{C:inactive} Fichas)' + } + }, + j_bunc_doodle = { + ['name'] = 'Garabato', + ['text'] = { + [1] = '{C:attention}Copia{} la primera carta del', + [2] = '{C:tarot}Tarot{} o de {C:planet}Planeta{} usada', + [3] = 'esta ronda', + [4] = '{C:inactive}(Debe haber espacio)' + }, + ['unlock'] = { + [1] = 'Gana {C:attention,E:1}10{} partidas', + [2] = '{C:inactive}(#2#)' + } + }, + j_bunc_disproportionality = { + ['name'] = '{s:0.9}Desproporcionalidad{}', + ['text'] = { + [1] = '' + } + }, + j_bunc_running_joke = { + ['name'] = 'Chiste recurrente', + ['text'] = { + [1] = 'Crea un "{C:attention}Comodín{}"', + [2] = '{C:dark_edition}negativo{} al principio', + [3] = 'de cada tienda' + } + }, + j_bunc_on_broadway = { + ['name'] = 'En Broadway', + ['text'] = { + [1] = '{C:chips}+#1#{} fichas y {C:mult}+#2#{} multi si la mano', + [2] = 'jugada contiene una {C:attention}Escalera{} y', + [3] = 'anota una {C:attention}carta de figura{}' + } + }, + j_bunc_rasta = { + ['name'] = 'Rasta', + ['text'] = { + [1] = '{C:mult}+#1#{} multi si ninguna', + [2] = '{C:attention}carta mejorada{}', + [3] = 'anota' + }, + ['unlock'] = { + [1] = 'Gana una partida sin', + [2] = 'haber tenido {C:attention,E:1}cartas mejoradas' + } + }, + j_bunc_critic = { + ['name'] = 'Critico', + ['text'] = { + [1] = "{X:mult,C:white}X#1#{} Multi si la puntuación", + [2] = 'actual de la mano jugada es', + [3] = '{C:attention}menos{} de la {C:attention}1/#2#{} de la', + [4] = "puntuación requerida" + } + }, + j_bunc_cellphone = { + ['name'] = 'Teléfono', + ['text'] = { + [1] = '{C:attention}Regresa{} las cartas anotadas a la mano', + [2] = 'después de la primera jugada de la ronda', + [3] = 'si no se usó ningún {C:red}descarte' + } + }, + j_bunc_wino = { + ['name'] = 'Borrachín', + ['text'] = { + [1] = 'Los con {C:hearts}Corazones{} y {C:diamonds}Diamantes{}', + [2] = 'otorgan {C:chips}+#1#{} Fichas al anotar', + } + }, + j_bunc_bounty_hunter = { + ['name'] = 'Cazarrecompensas', + ['text'] = { + [1] = 'Todas las fuentes de {C:money}dinero', + [2] = 'otorgan {C:money}#1#${} menos y', + [3] = 'gana {C:mult}+#1#{} Multi por cada', + [4] = 'vez que ganas {C:money}dinero', + [5] = '{C:inactive}(Actualmente {C:mult}+#2#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = 'Ten menos de {E:1,C:attention}$#1#', + [2] = 'durante una sola partida' + } + }, + j_bunc_mousetrap = { + ['name'] = 'Ratonera', + ['text'] = { + [1] = '{C:chips}+#1#{} Fichas,', + [2] = 'Prob. de {C:green}#2# en #3#{} de', + [3] = '{C:red,E:1}anular{} la mano' + } + }, + j_bunc_the_joker = { + ['name'] = 'El Comodín', + ['text'] = { + [1] = 'Después de cada mano, cada carta', + [2] = 'anotada sin una mejora tiene una', + [3] = 'Prob. de {C:green}#1# en #2#{} ser {C:red}destruida', + }, + ['unlock'] = { + [1] = 'Descubre todas las', + [2] = '{C:attention}ciegas jefe' + } + }, + j_bunc_tangram = { + ['name'] = 'Tangram', + ['text'] = { + [1] = 'Cuando un {C:attention}7{} es anotado,', + [2] = '{C:mult}+#1#{} multi multiplicado por', + [3] = 'la cantidad de {C:attention}7s{} anotados' + } + }, + j_bunc_domino = { + ['name'] = 'Dominó', + ['text'] = { + [1] = 'Al {C:attention}Adquirir{} o {C:attention}Usar{} una carta de la', + [2] = 'tienda o paquete potenciador', + [3] = 'se adquieren las cartas', + [4] = 'adyacentes si es posible' + } + }, + j_bunc_glue_gun = { + ['name'] = 'Pistola de pegamento', + ['text'] = { + [1] = 'Vende esta carta', + [2] = 'para {C:attention}unir{} hasta #1#', + [3] = 'cartas seleccionadas' + } + }, + j_bunc_taped = { + ['name'] = 'Comodines pegados', + ['text'] = { + [1] = '{C:attention}Conecta{} todas las cartas', + [2] = 'jugadas en la primera', + [3] = 'mano anotada durante', + [4] = 'la {C:attention}ciega jefe{}' + } + }, + j_bunc_rubber_band_ball = { + ['name'] = 'Bola de Ligas', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} multi por cada {C:attention}conexión{}', + [2] = 'creada esta partida', + [3] = '{C:inactive}(Actual {X:mult,C:white}X#2#{C:inactive} multi)' + } + }, + j_bunc_headache = { + ['name'] = 'Dolor de cabeza', + ['text'] = { + [1] = 'Crea una etiqueta de {C:bunco_virtual_dark}Arcade{} por', + [2] = 'cada {C:attention}#1#{} {C:inactive}({C:attention}#2#{C:inactive}/#1#){} cartas de juego', + [3] = 'destruidas', + [4] = '{C:inactive}(Debe haber espacio)' + } + }, + j_bunc_games_collector = { + ['name'] = 'Coleccionista de juegos', + ['text'] = { + [1] = 'Gana {C:chips}+#1#{} Fichas cuando un {C:bunco_virtual_dark}grupo{}', + [2] = 'conectado se {C:attention}saca{} a la mano', + [3] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} fichas)' + } + }, + j_bunc_jumper = { + ['name'] = 'Comodín Saltarín', + ['text'] = { + [1] = 'Gana {C:chips}+#1#{} fichas', + [2] = 'si la mano jugada', + [3] = 'contiene un {C:attention}Color{}', + [4] = '{C:inactive}(Actual {C:chips}+#2#{C:inactive} fichas)' + } + }, + j_bunc_stylophone = { + ['name'] = 'Estilófono', + ['text'] = { + [1] = 'Las cartas otorgan un {C:attention}#1#{}', + [2] = 'de su {C:attention}categoría{} como {C:red}multi', + [3] = 'cuando anotan' + } + }, + j_bunc_kite_experiment = { + ['name'] = 'Experimento con Cometa', + ['text'] = { + [1] = 'Prob. de {C:green}#1# en #2#{} de {C:attention}reanotar', + [2] = 'las {C:attention}cartas de cobre{}', + [3] = 'reanotadas una vez más' + } + }, + j_bunc_robot = { + ['name'] = 'Robot', + ['text'] = { + [1] = 'Este comodín gana {C:mult}+#1#{} multi', + [2] = 'cada vez que una {C:attention}carta de', + [3] = '{C:attention}cobre{} es reanotada', + [4] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} multi)' + } + }, + j_bunc_hardtack = { + ['name'] = 'Galleta Dura', + ['text'] = { + [1] = 'Las{C:attention} Cartas Galleta{}', + [2] = 'no se destruyen', + [3] = 'al descartarse' + } + }, + j_bunc_pica = { + ['name'] = 'Comodín Picador', + ['text'] = { + [1] = 'Cuando una {C:attention}Carta Galleta{}', + [2] = 'se descarta, {C:attention}juega{} todas', + [3] = 'las cartas descartadas' + } + }, + + -- Exotic Jokers + + j_bunc_zealous = { + ['name'] = 'Comodín Ferviente', + ['text'] = { + [1] = '{C:mult}+#1#{} multi si la mano', + [2] = 'jugada contiene', + [3] = 'un {C:attention}Espectro' + } + }, + j_bunc_lurid = { + ['name'] = 'Comodín Tenebroso', + ['text'] = { + [1] = '{C:chips}+#1#{} fichas si la mano', + [2] = 'jugada contiene', + [3] = 'un {C:attention}Espectro' + } + }, + j_bunc_envious = { + ['name'] = 'Comodín Envidioso', + ['text'] = { + [1] = 'Las cartas jugadas', + [2] = 'del palo {C:bunc_fleurons}Florón{} otorgan', + [3] = ' multi {C:mult}+#1#{} cuando anotan' + } + }, + j_bunc_proud = { + ['name'] = 'Comodín Orgulloso', + ['text'] = { + [1] = 'Las cartas jugadas', + [2] = 'del palo {C:bunc_halberds}Alabarda{} otorgan', + [3] = 'multi {C:mult}+#1#{} cuando anotan' + } + }, + j_bunc_wishalloy = { + ['name'] = 'Deseoaleación', + ['text'] = { + [1] = 'Prob. en {C:green}#1# en #2#{} de que los', + [2] = 'los {C:bunc_fleurons}Florones{} jugados', + [3] = 'otorguen sus {C:blue}Fichas{} como', + [4] = "{C:money}Dinero{} al anotar" + } + }, + j_bunc_unobtanium = { + ['name'] = 'Unobtainio', + ['text'] = { + [1] = 'Las cartas de {C:bunc_halberds}Alabarda{}', + [2] = 'otorgan {C:chips}+#1#{} fichas y {C:mult}+#2#{} multi', + [3] = 'cuando anotan' + } + }, + j_bunc_dynasty = { + ['name'] = 'La Dinastía', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} multi si la mano', + [2] = 'jugada contiene', + [3] = 'un {C:attention}Espectro' + } + }, + j_bunc_magic_wand = { + ['name'] = 'Varita mágica', + ['text'] = { + [1] = 'Obtiene {C:mult}+#1#{} Multi si la mano', + [2] = 'jugada contiene {C:attention}Espectro{}', + [3] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} Multi)', + [4] = '{C:inactive}(Actual {C:mult}+#2#{C:inactive} Multi)' + } + }, + j_bunc_starfruit = { + ['name'] = 'Carambola', + ['text'] = { + [1] = 'Sube de {C:planet}Nivel{} la mano jugada', + [2] = 'si contiene un {C:attention}Espectro{}.', + [3] = 'Prob. de {C:green}#1# en #2#{} de {C:red}destruirse', + [4] = 'al final de la ronda' + } + }, + j_bunc_fondue = { + ['name'] = 'Fondue', + ['text'] = { + [1] = 'Las cartas anotadas en', + [2] = 'la {C:attention}primera mano{} son', + [3] = 'convertidas a {C:bunc_fleurons}Florones' + } + }, + j_bunc_myopia = { + ['name'] = 'Miopía', + ['text'] = { + [1] = '{C:spades}Espadas{} y {C:clubs}Tréboles{}', + [2] = 'cuentan como {C:bunc_halberds}Alabardas' + } + }, + j_bunc_astigmatism = { + ['name'] = 'Astigmatismo', + ['text'] = { + [1] = '{C:hearts}Corazones{} y {C:diamonds}Diamantes{}', + [2] = 'cuentan como {C:bunc_fleurons}Florones' + } + }, + j_bunc_roygbiv = { + ['name'] = 'Roy G. Biv', + ['text'] = { + [1] = 'Prob. de {C:green}#1# en #2#{} de agregar', + [2] = 'edición {C:dark_edition}polícroma{} a una carta', + [3] = 'anotada al azar si la mano', + [4] = 'contiene un {C:attention}Espectro' + } + }, + j_bunc_rigoletto = { + ['name'] = 'Rigoletto', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} multi por cada {C:bunco_exotic}carta{}', + [2] = '{C:bunco_exotic}exotica{} en tu {C:attention}baraja', + [3] = '{C:inactive}(Actual {X:mult,C:white}X#2#{C:inactive} multi)' + }, + ['unlock'] = { + [1] = '{E:1,s:1.3}?????' + } + }, + }, + Blind = { + bl_bunc_paling = { + ['name'] = 'La cerca', + ['text'] = { + [1] = 'Pierde $1 por', + [2] = 'carta descartada' + } + }, + bl_bunc_umbrella = { + ['name'] = 'El paraguas', + ['text'] = { + [1] = 'Después de jugar, da vuelta todas', + [2] = 'las cartas en mano boca abajo' + } + }, + bl_bunc_tine = { + ['name'] = 'La punta', + ['text'] = { + [1] = 'Cada #1#', + [2] = 'es debilitada' + } + }, + bl_bunc_swing = { + ['name'] = 'El columpio', + ['text'] = { + [1] = 'Después de jugar o descartar,', + [2] = 'voltea todas las cartas' + } + }, + bl_bunc_miser = { + ['name'] = 'El tacaño', + ['text'] = { + [1] = 'Omite la tienda después', + [2] = 'de derrotar esta ciega' + } + }, + bl_bunc_gate = { + ['name'] = 'La puerta', + ['text'] = { + [1] = 'Las cartas no pueden', + [2] = 'ser deseleccionadas' + } + }, + bl_bunc_flame = { + ['name'] = 'La llama', + ['text'] = { + [1] = 'Todas las cartas mejoradas', + [2] = 'se debilitan' + } + }, + bl_bunc_mask = { + ['name'] = 'La máscara', + ['text'] = { + [1] = '#1# tiene las fichas', + [2] = 'y el multi base de #2#' + } + }, + bl_bunc_bulwark = { + ['name'] = 'El baluarte', + ['text'] = { + [1] = 'Jugar un(a) #1# descarta', + [2] = 'todas las cartas en mano' + } + }, + bl_bunc_knoll = { + ['name'] = 'El montículo', + ['text'] = { + [1] = 'Tener mas de $5', + [2] = 'debilita la primera mano sacada' + } + }, + bl_bunc_stone = { + ['name'] = 'La piedra', + ['text'] = { + [1] = '+1X puntuación base', + [2] = 'por cada $10 en posesión' + } + }, + bl_bunc_sand = { + ['name'] = 'La arena', + ['text'] = { + [1] = '+1X puntuación base', + [2] = 'por cada etiqueta en posesión' + } + }, + bl_bunc_blade = { + ['name'] = 'El filo', + ['text'] = { + [1] = 'La primera vez que la puntuación excede', + [2] = '#1#', + [3] = 'hace que la mano jugada anote 0' + } + }, + bl_bunc_claw = { + ['name'] = 'La garra', + ['text'] = { + [1] = 'Las cartas descartadas', + [2] = 'regresan a la baraja' + } + }, + bl_bunc_veil = { + ['name'] = 'El velo', + ['text'] = { + [1] = 'Las cartas seleccionadas', + [2] = 'se voltean boca abajo' + } + }, + bl_bunc_cadaver = { + ['name'] = 'El cadáver', + ['text'] = { + [1] = 'Se debe jugar al menos una', + [2] = 'carta de figura para anotar' + } + }, + bl_bunc_wind = { + ['name'] = 'El viento', + ['text'] = { + [1] = 'El comodín más a la', + [2] = 'izquierda se debilita' + } + }, + bl_bunc_prince = { + ['name'] = 'El príncipe', + ['text'] = { + [1] = 'Todos los comodínes se debilitan', + [2] = 'hasta jugar la primera mano' + } + }, + bl_bunc_depths = { + ['name'] = 'Las profundidades', + ['text'] = { + [1] = 'Después de jugar, gana una etiqueta', + [2] = 'eterna, perecedera, o dispersante' + } + }, + bl_bunc_chasm = { + ['name'] = 'El aberno', + ['text'] = { + [1] = 'Después de jugar, gana una etiqueta', + [2] = 'estorbante, reactiva o de alquiler' + } + }, + + -- Final + + bl_bunc_final_crown = { + ['name'] = 'Corona Cartuja', + ['text'] = { + [1] = 'Todas las cartas de los palos', + [2] = 'Espada, Corazón, Trébol y Diamante', + [3] = 'se debilitan' + } + }, + bl_bunc_final_trident = { + ['name'] = 'Tridente Bermellón', + ['text'] = { + [1] = '+1X a la puntuación por', + [2] = 'cada compra antes de esta ciega' + } + }, + bl_bunc_final_tower = { + ['name'] = 'Torre de Índigo', + ['text'] = { + [1] = 'Las cartas no jugadas', + [2] = 'esta apuesta se debilitan' + } + }, + bl_bunc_final_dagger = { + ['name'] = 'Daga Magenta', + ['text'] = { + [1] = 'Descartar cartas las juega', + [2] = 'y subtrae el valor a la puntuación' + } + }, + bl_bunc_final_shield = { + ['name'] = 'Escudo Turquesa', + ['text'] = { + [1] = 'La puntuación excedente en esta', + [2] = "apuesta inicial se agrega a la", + [3] = "puntuación requerida de esta ciega" + } + } + }, + Back = { + b_bunc_fairy = { + ['name'] = 'Baraja de Hadas', + ['text'] = { + [1] = 'Después de derrotar a la', + [2] = '{C:attention}Ciega Jefe{}, agrega #1#', + [3] = "{C:bunco_exotic,T:bunc_exotic_cards}#2#", + [4] = " al azar a tu baraja" + }, + ['unlock'] = { + [1] = 'Juega {E:1,C:attention}5 palos diferentes', + [2] = 'en una sola mano' + } + }, + b_bunc_digital = { + ['name'] = 'Baraja Digital', + ['text'] = { + [1] = 'Las cartas de {C:bunco_virtual_dark,E:1}Polimino{} pueden', + [2] = 'aparecer en la tienda,', + [3] = "comienza con la{C:bunco_virtual_dark,T:c_bunc_the_i} I{}" + } + } + }, + Tag = { + + -- Reworked + + tag_bunc_boss = { + ['name'] = 'Etiqueta de jefe', + ['text'] = { + [1] = 'Otorga gratis un', + [2] = '{C:attention}paquete de ciegas' + } + }, + tag_bunc_double = { + ['name'] = 'Etiqueta doble', + ['text'] = { + [1] = 'Otorga una copia de', + [2] = 'la siguiente {C:attention}etiqueta{} seleccionada', + [3] = 'a excepción de {s:0.6,C:attention}Etiquetas doble y triple{s:0.8}' + } + }, + tag_bunc_d_six = { + ['name'] = 'Etiqueta D6', + ['text'] = { + [1] = 'Agrega un {C:green}Cambio{} gratis', + [2] = 'en la siguiente tienda' + } + }, + + -- Main Tags + + tag_bunc_breaking = { + ['name'] = 'Etiqueta quebradora', + ['text'] = { + [1] = 'Deshabilita la', + [2] = '{C:attention}ciega jefe{}' + } + }, + tag_bunc_arcade = { + ['name'] = 'Etiqueta arcade', + ['text'] = { + [1] = 'Otorga gratis un', + [2] = '{C:bunco_virtual_dark}paquete virtual mega' + } + }, + tag_bunc_triple = { + ['name'] = 'Etiqueta triple', + ['text'] = { + [1] = 'Otorga dos copias de', + [2] = 'la {C:attention}etiqueta{} siguiente seleccionada', + [3] = 'a excepción de {s:0.8,C:attention}Etiqueta triple{s:0.8}' + } + }, + + -- Edition tags + + tag_bunc_glitter = { + ['name'] = 'Etiqueta brillantina', + ['text'] = { + [1] = 'El próximo comodín de la', + [2] = 'tienda es gratis y tiene', + [3] = 'edición {C:dark_edition}brillantina' + } + }, + tag_bunc_fluorescent = { + ['name'] = 'Etiqueta fluorescente', + ['text'] = { + [1] = 'El próximo comodín de la', + [2] = 'tienda es gratis y', + [3] = 'se vuelve {C:dark_edition}fluorescente' + } + }, + + -- Consumable edition tags + + tag_bunc_chips = { + ['name'] = 'Etiqueta de fichas', + ['text'] = { + [1] = '{C:chips}+#1#{} fichas en la siguiente mano' + } + }, + tag_bunc_mult = { + ['name'] = 'Etiqueta multi', + ['text'] = { + [1] = '{C:mult}+#1#{} multi en la siguiente mano', + } + }, + tag_bunc_xmult = { + ['name'] = 'Etiqueta megamulti', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} multi en la siguiente mano', + } + }, + tag_bunc_xchips = { + ['name'] = 'Etiqueta de ultrafichas', + ['text'] = { + [1] = '{X:chips,C:white}X#1#{} fichas en la siguiente mano' + } + }, + + -- Exotic tags + + tag_bunc_filigree = { + ['name'] = 'Etiqueta filigrana', + ['text'] = { + [1] = 'El proximo {C:attention}paquete estándar{} abierto', + [2] = 'tiene solo {C:bunco_exotic}cartas exoticas' + } + }, + + -- Anti-tags + + tag_bunc_eternal = { + ['name'] = 'Etiqueta eterna', + ['text'] = { + [1] = 'El próximo comodín de la tienda', + [2] = 'obtendrá un sticker {C:attention}eterno{}' + } + }, + tag_bunc_perishable = { + ['name'] = 'Etiqueta perecedera', + ['text'] = { + [1] = 'El próximo comodín de la tienda', + [2] = 'obtendrá un sticker {C:attention}perecedero{}' + } + }, + tag_bunc_scattering = { + ['name'] = 'Etiqueta dispersante', + ['text'] = { + [1] = 'El próximo comodín de la tienda', + [2] = 'obtendrá un sticker {C:attention}dispersante{}' + } + }, + tag_bunc_hindered = { + ['name'] = 'Etiqueta estorbante', + ['text'] = { + [1] = 'El próximo comodín de la tienda', + [2] = 'obtendrá un sticker {C:attention}estorbante{}' + } + }, + tag_bunc_reactive = { + ['name'] = 'Etiqueta reactiva', + ['text'] = { + [1] = 'El próximo comodín de la tienda', + [2] = 'obtendrá un sticker {C:attention}reactivo{}' + } + }, + tag_bunc_rental = { + ['name'] = 'Etiqueta de alquiler', + ['text'] = { + [1] = 'El próximo comodín de la tienda', + [2] = 'obtendrá un sticker de {C:attention}alquiler{}' + } + } + }, + Edition = { + e_bunc_glitter = { + ['name'] = 'Brillantina', + ['text'] = { + [1] = '{X:chips,C:white}X#1#{} fichas' + } + }, + e_bunc_fluorescent = { + ['name'] = 'Fluorescente', + ['text'] = { + [1] = 'No puede voltearse, debilitarse', + [2] = 'o ser forzado a seleccionarse' + } + }, + -- Consumible Editions + e_bunc_consumable_edition_foil = { + name = 'Laminada', + ['text'] = { + [1] = 'Crea una etiqueta de', + [2] = '{C:attention}Fichas{} al usarse' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = 'Holográfica', + ['text'] = { + [1] = 'Crea una etiqueta', + [2] = '{C:attention}Multi{} al usarse' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = 'Policroma', + ['text'] = { + [1] = 'Crea una etiqueta', + [2] = '{C:attention}Megamulti{} al usarse' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = 'Brillantina', + ['text'] = { + [1] = 'Crea una etiqueta de', + [2] = '{C:attention}Ultrafichas{} al usarse' + } + }, + }, + Voucher = { + v_bunc_lamination = { + ['name'] = 'Laminación', + ['text'] = { + [1] = 'Los consumibles en', + [2] = '{C:attention}paquetes potenciadores{} pueden', + [3] = 'aparecer con {C:dark_edition}edición' + } + }, + v_bunc_supercoating = { + ['name'] = 'Supercapa', + ['text'] = { + [1] = 'Todos los consumibles en', + [2] = '{C:attention}paquetes potenciadores{} aparecen', + [3] = 'con {C:dark_edition}ediciones' + }, + ['unlock'] = { + [1] = 'Usa {C:attention,E:1}#1#{} consumibles', + [2] = 'con {C:attention,E:1}ediciones', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_hedge_trimmer = { + ['name'] = 'Cortacerco', + ['text'] = { + [1] = "Reduce la puntuación de la ciega", + [2] = 'por {C:attention}#1#%{} con cada mano jugada' + } + }, + v_bunc_chainsaw = { + ['name'] = 'Motosierra', + ['text'] = { + [1] = 'Todas las puntuaciones requeridas', + [2] = 'son reducidas por {C:attention}#1#%{}' + }, + ['unlock'] = { + [1] = "Reduce la puntuacion de ciega usando", + [2] = 'Cortacerco', + [3] = 'un total de {C:attention,E:1}#1#{} veces', + [4] = '{C:inactive}(#2#)' + } + }, + v_bunc_cups_n_balls = { + ['name'] = "Vasos y bolas", + ['text'] = { + [1] = '{C:attention}+1{} paquete potenciador', + [2] = 'disponible en la tienda' + } + }, + v_bunc_shell_game = { + ['name'] = 'Juego de bolas', + ['text'] = { + [1] = 'Renueva los {C:attention}contenidos', + [2] = 'de los paquetes potenciadores', + [3] = '{C:attention}1{} vez' + }, + ['unlock'] = { + [1] = 'Abre {E:1,C:attention}#1#', + [2] = 'paquetes potenciadores', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_disguise = { + ['name'] = "Disfraz", + ['text'] = { + [1] = 'Los {C:attention}paquetes de ciegas{} pueden', + [2] = 'aparecer en la tienda' + } + }, + v_bunc_masquerade = { + ['name'] = 'Mascarada', + ['text'] = { + [1] = 'Todos los {C:attention}paquetes de ciegas{} en', + [2] = 'la tienda son gratis' + }, + ['unlock'] = { + [1] = 'Reemplaza {E:1,C:attention}#1#{}', + [2] = 'ciegas con ciegas', + [3] = 'de un paquete de ciegas', + [4] = '{C:inactive}(#2#)' + } + }, + v_bunc_fanny_pack = { + ['name'] = "Riñonera", + ['text'] = { + [1] = '{C:green}#1# en #2#{} probabilidades de', + [2] = 'obtener una {C:attention}etiqueta doble', + [3] = 'cada vez que una ciega', + [4] = 'es {C:attention}omitida' + } + }, + v_bunc_pin_collector = { + ['name'] = 'Coleccionista', + ['text'] = { + [1] = 'Todas las {C:attention}etiquetas doble{} nuevas', + [2] = 'aparecen como {C:attention}etiquetas triple' + }, + ['unlock'] = { + [1] = 'Omite un total de', + [2] = '{E:1,C:attention}#1#{} ciegas', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_arcade_machine = { + ['name'] = 'Máquina de arcade', + ['text'] = { + [1] = 'Los {C:bunco_virtual_dark}paquetes virtuales', + [2] = 'aparecen {C:attention}4X{} mas' + } + }, + v_bunc_polybius = { + ['name'] = 'Polybius', + ['text'] = { + [1] = 'Las cartas de {C:bunco_virtual_dark}polimino{} permiten', + [2] = 'conectar {C:attention}una carta{} más', + [3] = '{s:0.6,C:inactive}La carta extra puede ser de cualquier propiedad' + }, + ['unlock'] = { + [1] = 'Crea un total de', + [2] = '{E:1,C:attention}#1#{} grupos conectados', + [3] = '{C:inactive}(#2#)' + } + } + }, + Enhanced = { + m_bunc_copper = { + ['name'] = 'Carta de cobre', + ['text'] = { + [1] = 'Reanota si es jugada', + [2] = '{C:attention}adyacente{} a otra', + [3] = 'carta de cobre anotada' + }, + }, + m_bunc_cracker = { + ['name'] = 'Carta Galleta', + ['text'] = { + [1] = '{C:attention}Al descartarse{} la carta se', + [2] = 'juega y luego se destruye', + }, + }, + }, + Stake = { + stake_bunc_cyan = { + ['name'] = 'Pozo cian', + ['text'] = { + [1] = 'La tienda puede tener comodines {C:attention}dispersantes{}', + [2] = '{C:inactive,s:0.8}(#1#)', + } + }, + stake_bunc_pink = { + ['name'] = 'Pozo rosa', + ['text'] = { + [1] = 'La tienda puede tener comodines {C:attention}estorbantes{}', + [2] = '{C:inactive,s:0.8}(#1#)', + } + }, + stake_bunc_magenta = { + ['name'] = 'Pozo magenta', + ['text'] = { + [1] = 'La tienda puede tener comodines {C:attention}reactivos{}', + [2] = '{C:inactive,s:0.8}(#1#)', + } + } + } + } +} diff --git a/localization/fr.lua b/localization/fr.lua index 72ead6ad..1ec461fd 100644 --- a/localization/fr.lua +++ b/localization/fr.lua @@ -64,6 +64,7 @@ return { bunc_exceeded_score = 'Limite de score dépassée!', bunc_min_ante = 'Mise Minimale :', bunc_final_blind = 'Blinde Finale', + bunc_volume = 'Volume', -- Consumable types @@ -205,30 +206,6 @@ return { [2] = 'les couleurs {C:bunc_fleurons}Fleuron{} ou {C:bunc_halberds}Hallebarde{}' } }, - bunc_consumable_edition_foil = { - ['name'] = 'Brillante', - ['text'] = { - [1] = 'Crée un {C:attention}Badge jetons' - } - }, - bunc_consumable_edition_holo = { - ['name'] = 'Holographique', - ['text'] = { - [1] = 'Crée un {C:attention}Badge multi.' - } - }, - bunc_consumable_edition_polychrome = { - ['name'] = 'Polychrome', - ['text'] = { - [1] = 'Crée un {C:attention}Badge megamulti.' - } - }, - bunc_consumable_edition_bunc_glitter = { - ['name'] = 'Pailletée', - ['text'] = { - [1] = 'Crée un {C:attention}Badge ultrajetons' - } - }, -- Undiscovered @@ -359,11 +336,6 @@ return { [2] = 'cartes sélectionnées en', [3] = '{C:attention}#2#' }, - ['unlock'] = { - [1] = 'Découvrez au moins', - [2] = '{C:attention}#1#{} objets de', - [3] = 'votre collection' - } }, c_bunc_art = { ['name'] = "L'Art", @@ -372,11 +344,6 @@ return { [2] = 'cartes sélectionnées en', [3] = '{C:attention}#2#' }, - ['unlock'] = { - [1] = 'Découvrez au moins', - [2] = '{C:attention}#1#{} objets de', - [3] = 'votre collection' - } }, c_bunc_universe = { ['name'] = "L'Univers", @@ -386,11 +353,6 @@ return { [3] = "et sceau de jusqu'à {C:attention}#1#{}", [4] = 'cartes sélectionnées' }, - ['unlock'] = { - [1] = 'Découvrez au moins', - [2] = '{C:attention}#1#{} objets de', - [3] = 'votre collection' - } }, c_bunc_lust = { ['name'] = 'Luxure', @@ -400,11 +362,6 @@ return { [3] = ' {C:inactive}({C:money}$#2#{} {C:inactive}au maximum){}', [4] = '{C:inactive}(Actuellement {C:money}$#3#{C:inactive}){}' }, - ['unlock'] = { - [1] = 'Découvrez au moins', - [2] = '{C:attention}#1#{} objets de', - [3] = 'votre collection' - } }, c_bunc_sky = { ['name'] = 'Le Ciel', @@ -851,7 +808,7 @@ return { j_bunc_registration_plate = { ['name'] = "Plaque d'immatriculation", ['text'] = { - [1] = '#1#', + [1] = '#1#, #2#, #3#, #4# et #5#', [2] = 'ont les Jetons et le Multi. de toutes', [3] = 'les {C:attention}mains de poker{} jouée cette partie', [4] = '{s:0.8}La combination change chaque manche' @@ -1124,7 +1081,7 @@ return { ['name'] = 'Chasseur de prime', ['text'] = { [1] = "Toutes les sources d'argent", - [2] = "donnent {C:money}1${} de moins et ce Joker", + [2] = "donnent {C:money}#1#${} de moins et ce Joker", [3] = "gagne {C:mult}+#1#{} Multi. à chaque fois", [4] = "que vous gagnez de l'argent", [5] = "{C:inactive}(Actuellement {C:mult}+#2#{C:inactive} Multi.)" @@ -1754,7 +1711,32 @@ return { [1] = 'Ne peut pas être retourné, affaibli', [2] = 'ou forcé à être sélectionné' } - } + }, + + bunc_consumable_edition_foil = { + ['name'] = 'Brillante', + ['text'] = { + [1] = 'Crée un {C:attention}Badge jetons' + } + }, + bunc_consumable_edition_holo = { + ['name'] = 'Holographique', + ['text'] = { + [1] = 'Crée un {C:attention}Badge multi.' + } + }, + bunc_consumable_edition_polychrome = { + ['name'] = 'Polychrome', + ['text'] = { + [1] = 'Crée un {C:attention}Badge megamulti.' + } + }, + bunc_consumable_edition_bunc_glitter = { + ['name'] = 'Pailletée', + ['text'] = { + [1] = 'Crée un {C:attention}Badge ultrajetons' + } + }, }, Voucher = { v_bunc_lamination = { @@ -1900,7 +1882,7 @@ return { ['name'] = 'Mise cyan', ['text'] = { [1] = 'Les magasins peuvent posséder des Jokers {C:attention}diffus{}', - [2] = '{C:inactive,s:0.8}(Détruit un Joker adjacent quand retiré)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Applique toutes les mises précédentes' } }, @@ -1908,7 +1890,7 @@ return { ['name'] = 'Mise rose', ['text'] = { [1] = 'Les magasins peuvent posséder des Jokers {C:attention}entravé{}', - [2] = "{C:inactive,s:0.8}(Reste dans son emplacement jusqu'à la fin du tour où il a été vendu)", + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Applique toutes les mises précédentes' } }, @@ -1916,7 +1898,7 @@ return { ['name'] = 'Mise magenta', ['text'] = { [1] = 'Les magasins peuvent posséder des Jokers {C:attention}réactif{}', - [2] = "{C:inactive,s:0.8}(Affaibli si aucune blinde n'est passée durant cette Mise initiale)", + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Applique toutes les mises précédentes' } } diff --git a/localization/ko_KR.lua b/localization/ko_KR.lua new file mode 100644 index 00000000..43fe415c --- /dev/null +++ b/localization/ko_KR.lua @@ -0,0 +1,1887 @@ +-- Korean Translated By +-- JayJayDee - https://github.com/JayJayDee +-- Namssy - https://github.com/namssy +return { + misc = { + dictionary = { + -- Config values + bunc_colorful_finishers = '컬러풀한 마지막 보스 블라인드', + bunc_colorful_finishers_desc = '마지막 보스 블라인드에서 멋진 배경 색상을 추가했습니다.', + bunc_colorful_finishers_desc_2 = '그리고 무한 모드에서 회색 배경을 제거했습니다', + + bunc_high_quality_shaders = '고퀄리티 쉐이더', + bunc_high_quality_shaders_desc = '바닐라 쉐이더들을 더욱 고퀄리티로', + bunc_high_quality_shaders_desc_2 = '렌더링합니다 (랙이 발생할 수 있습니다)', + + bunc_fixed_sprites = '스프라이트 개선', + bunc_fixed_sprites_desc = '불필요한 픽셀들을 제거하여', + bunc_fixed_sprites_desc_2 = '일관성과 가시성을 향상시켰습니다', + + bunc_gameplay_reworks = '게임플레이 리워크', + bunc_gameplay_reworks_desc = '게임 플레이가 더욱 즐거워 지도록', + bunc_gameplay_reworks_desc_2 = '바닐라 발라트로의 일부 동작을 재설계했습니다', + + bunc_fixed_badges = '뱃지 시스템 개선', + bunc_fixed_badges_desc = '소모품의 뱃지를 얻는 방법을', + bunc_fixed_badges_desc_2 = '덜 혼란스럽게 표기하였습니다.', + + bunc_jokerlike_consumable_editions = '소모품 슬롯의 모드 충돌 개선', + bunc_jokerlike_consumable_editions_desc = '다른 모드에서 소모품이 조커처럼 동작하는 경우', + bunc_jokerlike_consumable_editions_desc_2 = '동작을 바닐라로 되돌립니다 (모드 충돌 방지)', + + bunc_default_true = '기본으로 활성화됨', + bunc_default_false = '기본으로 비활성화됨', + bunc_requires_restart = '게임 재시작이 필요합니다', + + -- Miscellaneous + + bunc_a_side = 'A 사이드', + bunc_b_side = 'B 사이드', + bunc_copied = '복사됨!', + bunc_nothing = '없습니다', + bunc_chips = '칩', + bunc_loop = '반복됨!', + bunc_chance = '기회', + bunc_word_and = ',', + bunc_debuffed = '디버프됨!', + bunc_pew = '휴!', + bunc_declined = '거부됨...', + bunc_accepted = '승인됨!', + bunc_robbed = '도둑맞음!', + bunc_ouch = '으악!', + bunc_inactive = '비활성화됨', + bunc_repeat = '반복!', + bunc_thoth_tarot = '토스 타로', + bunc_thoth_tarots = '토스 타로', + bunc_mysterious_tarot = '타로?', + bunc_mysterious_polymino = '폴리미노?', + bunc_most_played_rank = '(가장 많이 플레이된 핸드)', + bunc_least_played_hand = '(가장 적게 플레이된 핸드)', + bunc_blade = '(1.5X 점수)', + bunc_exceeded_score = '한도 초과!', + bunc_min_ante = '최소 앤티:', + bunc_final_blind = '마지막 블라인드', + bunc_volume = '볼륨', + + -- Consumable types + + k_polymino = '폴리미노', + b_polymino_cards = '폴리미노 카드', + + -- Booster types + + k_bunc_blind_pack = '블라인드 팩', + k_bunc_virtual_pack = '버츄얼 팩' + }, + + -- Suits + + suits_singular = { + bunc_Fleurons = '꽃무늬', + bunc_Halberds = '할버드' + }, + suits_plural = { + bunc_Fleurons = '꽃무늬', + bunc_Halberds = '할버드' + }, + + -- Poker hands + + poker_hands = { + ['bunc_Spectrum'] = '스펙트럼', + ['bunc_Straight Spectrum'] = '스트레이트 스펙트럼', + ['bunc_Straight Spectrum (Royal)'] = '로열 스트레이트 스펙트럼', + ['bunc_Spectrum House'] = '스펙트럼 하우스', + ['bunc_Spectrum Five'] = '스펙트럼 파이브', + ['bunc_Deal'] = '딜' + }, + poker_hand_descriptions = { + ['bunc_Spectrum'] = { + [1] = '다른 수트를 가진 5장의 카드' + }, + ['bunc_Straight Spectrum'] = { + [1] = '5장의 연속된 랭크를 가진 카드', + [2] = '각각의 카드는 다른 수트여야 합니다.' + }, + ['bunc_Spectrum House'] = { + [1] = '각각 다른 수트의 카드로', + [2] = '구성된 트리플과 페어' + }, + ['bunc_Spectrum Five'] = { + [1] = '같은 랭크를 가진 5장의 카드', + [2] = '각각의 카드는 다른 수트여야 합니다.' + }, + ['bunc_Deal'] = { + [1] = '번호판 조커에 의해', + [2] = '선택된 5개의 랭크' + } + }, + labels = { + -- Editions + bunc_glitter = '반짝반짝', + bunc_fluorescent = '형광', + + -- Stickers + bunc_scattering = '산산조각', + bunc_hindered = '방해', + bunc_reactive = '리액티브' + }, + collab_palettes = { + default_Spades = { + ['3'] = '재조정된 고대비' + }, + default_Hearts = { + ['3'] = '재조정된 고대비' + }, + default_Clubs = { + ['3'] = '재조정된 고대비' + }, + default_Diamonds = { + ['3'] = '재조정된 고대비' + } + }, + collabs = { + bunc_Fleurons = { + ['1'] = '기본', + ['2'] = '덕 게임', + ['3'] = '고통의 리사' + }, + bunc_Halberds = { + ['1'] = '기본', + ['2'] = '피엔드 폴리오', + ['3'] = '무의미한 리사' + } + } + }, + descriptions = { + Other = { + bunc_temporary_extra_chips = {['text'] = {[1] = '이번 라운드에서 {C:chips}+#1#{}개의 칩을 얻습니다.'}}, + bunc_linked_cards = {['text'] = {[1] = '{C:attention}연결됨{} 그룹:'}}, + bunc_linked_group = { + ['name'] = '연결된 그룹', + ['text'] = { + [1] = '그룹 내 연결된 카드들은', + [2] = '같이 드로 되고, 선택되며', + [3] = '같이 {C:attention}파괴{}됩니다.' + } + }, + bunc_drawn_linked_cards = {['text'] = {[1] = '뽑힌 카드 그룹에서 {C:attention}연결됨{}'}}, + bunc_light_suits = { + ['name'] = '라이트 수트', + ['text'] = { + [1] = '{C:hearts}하트{} 그리고 {C:diamonds}다이아몬드{} 카드' + } + }, + bunc_light_suits_exotic = { + ['name'] = '라이트 수트(엑조틱)', + ['text'] = { + [1] = '{C:hearts}하트{}, {C:diamonds}다이아몬드,', + [2] = '그리고 {C:bunc_fleurons}꽃무늬{} 수트의 카드' + } + }, + bunc_dark_suits = { + ['name'] = '다크 수트', + ['text'] = { + [1] = '{C:spades}스페이드{} 나 {C:clubs}클럽 카드' + } + }, + bunc_dark_suits_exotic = { + ['name'] = '다크 수트(엑조틱)', + ['text'] = { + [1] = '{C:spades}스페이드{}, {C:clubs}클럽', + [2] = '그리고 {C:bunc_halberds}할버드{} 수트의 카드' + } + }, + bunc_exotic_cards = { + ['name'] = '엑조틱 카드', + ['text'] = { + [1] = '{C:bunc_fleurons}꽃무늬{}나 ', + [2] = '{C:bunc_halberds}할버드{} 수트의 카드' + } + }, + + -- Undiscovered + + undiscovered_polymino = { + ['name'] = '발견되지 않음', + ['text'] = { + [1] = '시드를 사용하지 않은 런에서', + [2] = '이 카드를 사거나 사용해 보세요', + [3] = '무슨 일이 생길까요?' + } + }, + + -- Booster Packs + + p_bunc_blind = { + ['name'] = '블라인드 팩', + ['text'] = { + [1] = '이번 앤티에서 교체할', + [2] = '{C:attention}#1# 보스 블라인드{} 를', + [3] = '선택합니다' + } + }, + p_bunc_virtual_normal = { + ['name'] = '버츄얼 팩', + ['text'] = { + [1] = '전체 덱에서', + [2] = '{C:attention}#1#{}개 이상의 즉시 사용할', + [3] = '{C:attention}#2#{C:bunco_virtual_dark} 폴리미노{} 카드를', + [4] = '선택합니다' + } + }, + p_bunc_virtual_jumbo = { + ['name'] = '점보 버츄얼 팩', + ['text'] = { + [1] = '전체 덱에서', + [2] = '{C:attention}#1#{}개 이상의 즉시 사용할', + [3] = '{C:attention}#2# {C:bunco_virtual_dark}폴리미노{} 카드를', + [4] = '선택합니다' + } + }, + p_bunc_virtual_mega = { + ['name'] = '메가 버츄얼 팩', + ['text'] = { + [1] = '전체 덱에서', + [2] = '{C:attention}#1#{}개 이상의 즉시 사용할', + [3] = '{C:attention}#2#{} {C:bunco_virtual_dark}폴리미노{} 카드를', + [4] = '선택합니다' + } + }, + + -- Stickers + + bunc_scattering = { + ['name'] = '산산조각', + ['text'] = { + [1] = '조커가 제거될 때', + [2] = '인접한 임의의 조커가', + [3] = '파괴됩니다' + } + }, + bunc_hindered = { + ['name'] = '방해', + ['text'] = { + [1] = '판매 된 후', + [2] = '라운드가 끝날 때까지', + [3] = '원래 자리에 유지 됩니다' + } + }, + bunc_reactive = { + ['name'] = '리액티브', + ['text'] = { + [1] = '이번 앤티에서 블라인드가 스킵되지 않았다면 디버프됩니다' + } + }, + + -- Stake stickers + + bunc_cyan_sticker = { + ['name'] = '시안 스티커', + ['text'] = { + [1] = '이 조커를', + [2] = '{C:attention}시안{} {C:attention}스테이크{}', + [3] = '난이도에서 사용했습니다' + } + }, + bunc_pink_sticker = { + ['name'] = '핑크 스티커', + ['text'] = { + [1] = '이 조커를', + [2] = '{C:attention}핑크{} {C:attention}스테이크{}', + [3] = '난이도에서 사용했습니다' + } + }, + bunc_magenta_sticker = { + ['name'] = '마젠타 스티커', + ['text'] = { + [1] = '이 조커를', + [2] = '{C:attention}마젠타{} {C:attention}스테이크{}', + [3] = '난이도에서 사용했습니다' + } + } + }, + + -- Consumables + + Tarot = { + + -- Reworked Tarots + + c_bunc_wheel_of_fortune = { + ['name'] = '운명의 수레바퀴', + ['text'] = { + [1] = '{C:green}#1# / #2#{} 의 확률로', + [2] = '{C:dark_edition}포일{}, {C:dark_edition}홀로그래픽{},', + [3] = '{C:dark_edition}폴리크롬{}, or {C:dark_edition}반짝반짝{} 에디션을', + [4] = '무작위 {C:attention}Joker{}에 추가합니다' + } + }, + + -- Main Tarots + + c_bunc_adjustment = { + ['name'] = '조정', + ['text'] = { + [1] = '최대 {C:attention}#1#{}장의', + [2] = '선택된 카드를', + [3] = '{C:attention}#2#로 강화' + }, + }, + c_bunc_art = { + ['name'] = '예술', + ['text'] = { + [1] = 'Enhances up to {C:attention}#1#{}', + [2] = 'selected cards to', + [3] = '{C:attention}#2#s' + }, + }, + c_bunc_universe = { + ['name'] = '우주', + ['text'] = { + [1] = '수트, 랭크, 강화, 에디션을', + [2] = '{C:attention}랜덤하게{} 섞습니다', + [3] = 'and seal of up to {C:attention}#1#{}', + [4] = 'selected cards' + }, + }, + c_bunc_lust = { + ['name'] = '색욕', + ['text'] = { + [1] = '현재 핸드에 있는 모든 카드마다', + [2] = '{C:money}$#1#{} 를 지급합니다', + [3] = '(최대 {C:money}$#2#{C:inactive})', + [4] = '{C:inactive}(현재 {C:money}$#3#{C:inactive})' + }, + }, + c_bunc_sky = { + ['name'] = '창공', + ['text'] = { + [1] = '최대 {C:attention}#1#{} 장의', + [2] = '선택된 카드를', + [3] = '{C:bunc_halberds}꽃무늬{} 카드로 바꿉니다' + } + }, + c_bunc_abyss = { + ['name'] = '심연', + ['text'] = { + [1] = '최대 {C:attention}#1#{} 장의', + [2] = '선택된 카드를', + [3] = '{C:bunc_halberds}할버드{} 카드로 바꿉니다' + } + }, + }, + Planet = { + c_bunc_quaoar = { + ['name'] = '콰오아' + }, + c_bunc_haumea = { + ['name'] = '하우메아' + }, + c_bunc_sedna = { + ['name'] = '세드나' + }, + c_bunc_makemake = { + ['name'] = '마케마케' + }, + }, + Spectral = { + + -- Reworked Spectrals + + c_bunc_aura = { + ['name'] = '오오라', + ['text'] = { + [1] = '{C:dark_edition}포일{}, {C:dark_edition}홀로그래픽{},', + [2] = '{C:dark_edition}폴리크롬{}, {C:dark_edition}반짝반짝{} 중 하나를', + [3] = '핸드에 있는 {C:attention}1{}개의 선택된 카드에 적용합니다' + } + }, + + -- Main Spectrals + + c_bunc_cleanse = { + ['name'] = '정화', + ['text'] = { + [1] = '{C:dark_edition}형광{}을', + [2] = '핸드에 있는 선택된 카드{C:attention}#1#{}에 적용합니다' + } + }, + c_bunc_the_8 = { + ['name'] = '여덟', + ['text'] = { + [1] = '핸드에 연결되지 않은 카드들을', + [2] = '원하는 만큼 {C:attention}연결합니다{}', + [3] = '{C:inactive,s:0.6}(8이 선택될 때 까지 무제한으로 선택 가능)' + } + } + }, + Polymino = { + c_bunc_the_i = { + ['name'] = 'The I', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '각 카드는 {C:attention}랭크나 수트가 같아야 합니다' + } + }, + c_bunc_the_o = { + ['name'] = 'The O', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '이중 두 장은 {C:attention}같은 속성{}{C:inactive}(랭크나 수트){}을', + [3] = '공유해야 하고, 다른 두장은 {C:attention}다른 타입{}의', + [4] = '{C:attention}같은 속성{}을 공유합니다' + } + }, + c_bunc_the_t = { + ['name'] = 'The T', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '이중 세 장은 {C:attention}같은 속성{}{C:inactive}(랭크나 수트){}을', + [3] = '공유해야 하고, 다른 한 장은', + [4] = '다른 카드들과 {C:attention}같은 속성{}을', + [5] = '{C:attention}공유하면 안 됩니다{}' + } + }, + c_bunc_the_s = { + ['name'] = 'The S', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '{C:attention}2개 그룹{}의 2장씩의 카드가', + [3] = '각 그룹 내에서 {C:attention}같은 랭크{}를 공유하며, 각', + [4] = '그룹에서 한 장의 카드가 {C:attention}공통 수트{}를 공유합니다' + } + }, + c_bunc_the_z = { + ['name'] = 'The Z', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '{C:attention}2개 그룹{}의 2장씩 카드가', + [3] = '각 그룹 내에서 {C:attention}같은 수트{}를 공유하며, 각', + [4] = '그룹에서 한 장의 카드가 {C:attention}공통 랭크{}를 공유합니다' + } + }, + c_bunc_the_j = { + ['name'] = 'The J', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '3장의 카드가 {C:attention}같은 랭크{}를 공유하고', + [3] = '나머지 1장의 카드는 이중', + [4] = '{C:attention}공통 수트{}를 공유하지만', + [5] = '같은 랭크는 공유하지 않습니다' + } + }, + c_bunc_the_l = { + ['name'] = 'The L', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '3장의 카드가 {C:attention}같은 수트{}를 공유하고', + [3] = '나머지 1장의 카드는 이중', + [4] = '{C:attention}공통 랭크{}를 공유하지만', + [5] = '같은 수트는 공유하지 않습니다' + } + }, + c_bunc_the_slash = { + ['name'] = 'The /', + ['text'] = { + [1] = '4개의 선택된 카드를 {C:attention}연결합니다{}', + [2] = '모든 카드가 {C:attention}서로 다른 속성{}{C:inactive}(랭크와 수트){}을', + [3] = '가집니다' + } + } + }, + Joker = { + + -- Reworked Jokers + + j_bunc_luchador = { + ['name'] = '루차도르', + ['text'] = { + [1] = '이 카드를 팔아서', + [2] = '무료 {C:attention}브레이킹 태그{}를 얻습니다' + } + }, + j_bunc_red_card = { + ['name'] = '레드 카드', + ['text'] = { + [1] = '이 조커는 부스터 팩을 건너뛸 때 마다', + [2] = '{C:red}+#1#{} 배수를 얻습니다', + [3] = '{C:inactive}(현재 {C:red}+#2#{C:inactive} 배수)' + } + }, + + -- Main Jokers + + j_bunc_cassette_a = { + ['name'] = '카세트 (A사이드)', + ['text'] = { + [1] = '{C:attention}라이트 수트{}카드는', + [2] = '점수를 얻을 때 {C:chips}+#1#{}칩을 얻습니다' + } + }, + j_bunc_cassette_b = { + ['name'] = '카세트 (B사이드)', + ['text'] = { + [1] = '{C:attention}다크 수트{}카드는', + [2] = '점수를 얻을 때 {C:mult}+#2#{}배수를 얻습니다' + } + }, + j_bunc_cassette_extra = { + ['text'] = { + [1] = '{C:inactive}카드를 버릴 때, 이 조커를 뒤집습니다' + } + }, + j_bunc_mosaic = { + ['name'] = '모자이크 조커', + ['text'] = { + [1] = '{C:attention}스톤 카드{}를 플레이하면', + [2] = '{C:mult}+#1#{} 배수를 얻습니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}스톤 카드{}만 있는', + [2] = '5개의 카드를 플레이' + } + }, + j_bunc_voxel = { + ['name'] = '복셀 조커', + ['text'] = { + [1] = '{C:attention}전체 덱{}의 {C:attention}강화 카드{} 마다', + [2] = '{X:mult,C:white}X#1#{} 배수, {X:mult,C:white}-X#2#{} 배수를 얻습니다', + [3] = '{C:inactive}(현재 {X:mult,C:white}X#3#{C:inactive} 배수)' + }, + ['unlock'] = { + [1] = '최소한 {C:attention}#1#', + [2] = '{E:1,C:attention}강화 카드{}가 덱에 있을 것' + } + }, + j_bunc_crop_circles = { + ['name'] = '크롭 서클', + ['text'] = { + [1] = '기본 수트의 {C:clubs}클럽{}이 {C:mult}+3{} 배수,', + [2] = '{C:attention}8{}이 {C:mult}+2{} 배수,', + [3] = '{C:attention}Q{}, {C:attention}10{}, {C:attention}9{}, {C:attention}6{}이 {C:mult}+1{} 배수를 제공합니다' + } + }, + j_bunc_crop_circles_exotic = { + ['name'] = '크롭 서클(엑조틱)', + ['text'] = { + [1] = '기본 수트의 {C:bunc_fleurons}꽃무늬{} 카드가 {C:mult}+4{} 배수,', + [2] = '기본 수트의 {C:clubs}클럽{} {C:mult}+3{} 배수,', + [3] = '{C:attention}8{}이 {C:mult}+2{} 배수,', + [4] = '{C:attention}Q{}, {C:attention}10{}, {C:attention}9{}, {C:attention}6{}이 {C:mult}+1{} 배수를 제공합니다' + } + }, + j_bunc_xray = { + ['name'] = 'X-ray', + ['text'] = { + [1] = '이 조커는 카드가 뒷면으로 뽑힐 때 마다', + [2] = '{X:mult,C:white}X#1#{} 배수를 얻습니다', + [3] = '{C:inactive}(현재 {X:mult,C:white}X#2#{C:inactive} 배수)' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}X-ray 비젼{} 챌린지를', + [2] = '완료할 것' + } + }, + j_bunc_dread = { + ['name'] = '공포', + ['text'] = { + [1] = '마지막으로 플레이한 포커 핸드가', + [2] = '{C:attention}#1# 레벨{}이 올라가며,', + [3] = '득점한 카드들이 {C:attention}파괴됩니다{}', + [4] = '{C:inactive,s:0.8}이 조커로 한 레벨은', + [5] = '{C:inactive,s:0.8}조커의 파괴시 사라집니다' + }, + ['unlock'] = { + [1] = '한 라운드를 플레이하는 중', + [2] = '덱에서 최소 {E:1,C:attention}#1#{}카드를', + [3] = '제거합니다' + } + }, + j_bunc_prehistoric = { + ['name'] = '선사시대 조커', + ['text'] = { + [1] = '이 라운드에서 이미 플레이하고 득점한', + [2] = '카드들의 {C:attention}랭크와 수트{}가', + [3] = '{C:mult}+#1#{} 배수를 얻습니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}플러쉬 파이브{}를', + [2] = '플레이 합니다' + } + }, + j_bunc_linocut = { + ['name'] = '라이노컷 조커', + ['text'] = { + [1] = '딱 {C:attention}2{} 카드로 이루어진 {C:attention}페어의 경우', + [2] = "{C:attention}왼쪽{} 카드의 수트를", + [4] = "{C:attention}오른쪽{} 카드의 수트로 바꿉니다", + [5] = '{C:inactive}(드래그하여 재배열)' + -- TODO this joker is a bit wordy + } + }, + j_bunc_ghost_print = { + ['name'] = '열화 카피', + ['text'] = { + [1] = '마지막으로 플레이한 {C:attention}핸드 타입{}에 대해', + [2] = '추가 칩과 배수를 얻습니다', + [3] = '{C:inactive}(마지막 포커 핸드: #1#)' + } + }, + j_bunc_loan_shark = { + ['name'] = '고리대금업자', + ['text'] = { + [1] = '획득 시 {C:money}$#1#을', + [2] = '얻습니다 ...' + }, + ['unlock'] = { + [1] = '한 라운드 동안', + [2] = '{E:1,C:attention}$100{} 이상 사용하세요}' + } + }, + j_bunc_loan_shark_full = { + ['name'] = '고리대금업자', + ['text'] = { + [1] = '획득 시 {C:money}$#1#을 얻습니다', + [2] = '판매 가격이{C:money}$-100{} 입니다' + } + }, + j_bunc_basement = { + ['name'] = '지하 조커', + ['text'] = { + [1] = '{C:attention}보스 블라인드{} 처치 시,', + [2] = '{C:spectral}유령{} 카드를 생성 합니다', + [3] = '{C:inactive}(공간이 있어야 함)' + } + }, + j_bunc_shepherd = { + ['name'] = '양치기 조커', + ['text'] = { + [1] = '{C:attention}페어{}가 포함된 핸드를', + [2] = '플레이 할 때 {C:chips}+#1#{} 칩을 얻습니다', + [3] = '{C:inactive}(현재 {C:chips}+#2# {C:inactive}칩)' + } + }, + j_bunc_knight = { + ['name'] = '조커 기사', + ['text'] = { + [1] = '{C:attention}블라인드{} 선택 시, 모든 조커를 {C:attention}셔플{}하고', + [2] = '이 조커는 {C:mult}+#1#{} 배수를 얻습니다,', + [3] = '조커가 {C:red}재배열{}되면 초기화됩니다', + [4] = '{C:inactive}(현재 {C:mult}+#2#{C:inactive} 배수)' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}호박색 도토리{}를 비활성화 하지 않고', + [2] = '처치하세요' + } + }, + j_bunc_jmjb = { + ['name'] = '조커맨 & 제스터 보이 트레이딩 카드 No. 54', + ['text'] = { + [1] = '{C:attention}스탠다드 팩{}에서', + [2] = '{C:attention}강화 카드{}만 등장합니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}#1#개', + [2] = '부스터 팩 열기', + [3] = '{C:inactive}(현재 #2#개)' + } + }, + j_bunc_dogs_playing_poker = { + ['name'] = '포커 게임을 하는 개들', + ['text'] = { + [1] = '득점된 랭크가 모두 {C:attention}2{}, {C:attention}3{}, {C:attention}4{}, 또는 {C:attention}5 일 경우', + [2] = '{X:mult,C:white}X#1#{} 배수' + } + }, + j_bunc_righthook = { + ['name'] = '라이트훅 조커', + ['text'] = { + [1] = '득점된 가장 오른쪽 카드를', + [2] = '남은 {C:blue}핸드{}만큼 다시 발동', + }, + ['unlock'] = { + [1] = '사용한 카드를', + [2] = '총 {E:1,C:attention}#1# 회{}이상', + [3] = '다시 발동시킵니다' + } + }, + j_bunc_fiendish = { + ['name'] = '사악한 조커', + ['text'] = { + [1] = '모든 수익을 두 배로 만듭니다,', + [2] = '대신 {C:green}#1# / #2#{} 확률로', + [3] = '{C:money}$1{}만 지급됩니다' + }, + ['unlock'] = { + [1] = '챌린지 {E:1,C:attention}두배 아니면 꽝', + [2] = '을 완료하세요' + } + }, + j_bunc_carnival = { + ['name'] = '카니발', + ['text'] = { + [1] = '{C:attention}보스 블라인드{} 처치 후,', + [2] = '무작위 조커를 {C:attention}파괴{}하고', + [3] = '이전 앤티로 한 단계 되돌아갑니다', + [4] = '다음 사용은 가장 앤티에서만 작동 합니다' + }, + ['unlock'] = { + [1] = '앤티 레벨', + [2] = '{E:1,C:attention}0{} 도달하세요' + } + }, + j_bunc_sledgehammer = { + ['name'] = '슬레지해머', + ['text'] = { + [1] = '{C:attention}글래스 카드{}는 {X:mult,C:white}X#1#{}배수를 부여하지만,', + [2] = '반드시 깨집니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}글래스{} 카드만 포함된', + [2] = '5장짜리 핸드로 플레이하세요' + } + }, + j_bunc_doorhanger = { + ['name'] = '도어행거', + ['text'] = { + [1] = '{C:blue}일반{} 조커가 등장하지 않으며', + [2] = '{s:0.8}대신 다른 희귀도가 등장합니다' + }, + ['unlock'] = { + [1] = '게임 도중 단 한 번도', + [2] = '{C:attention,E:1}일반{} 조커를 사용하지 않고', + [3] = '런을 승리하세요' + } + }, + j_bunc_fingerprints = { + ['name'] = '지문', + ['text'] = { + [1] = '{C:attention}승리 핸드{}에서', + [2] = '득점된 카드들은', + [3] = '다음 라운드 종료 시까지', + [4] = '{C:chips}+#1#{} 칩을 얻습니다' + } + }, + j_bunc_zero_shapiro = { + ['name'] = '제로 샤피로', + ['text'] = { + [1] = '득점된 {C:attention}킹{}, {C:attention}퀀{}, {C:attention}잭{},', + [2] = '혹은 {C:attention}랭크 없는 카드들은', + [3] = '{C:green}#1# / #2#{}의 확률로', + [4] = '{C:attention}D6 태그{}를 생성합니다', + } + }, + j_bunc_nil_bill = { + ['name'] = 'Nil Bill', + ['text'] = { + [1] = '카드가 파괴될 때', + [2] = '{C:money}$#1#{}을', + [3] = '획득합니다' + } + }, + j_bunc_bierdeckel = { + ['name'] = '비어데켈', + ['text'] = { + [1] = '플레이 혹은 버리기 후에,', + [2] = '라운드 종료까지 손에 있는', + [3] = '카드들이 {C:chips}+#1#{} 칩을 얻습니다' + } + }, + j_bunc_registration_plate = { + ['name'] = '번호판', + ['text'] = { + [1] = '#1#, #2#, #3#, #4#, #5#', + [2] = '이번 게임에서 플레이된 모든', + [3] = '{C:attention}포커 핸드{}의 칩과 배수를 가집니다', + [4] = '{s:0.8}조합은 매 라운드마다 변경됩니다' + }, + ['unlock'] = { + [1] = '챌린지 {E:1,C:attention}15분 도시', + [2] = '를 완료하세요' + } + }, + j_bunc_slothful = { + ['name'] = '게으른 조커', + ['text'] = { + [1] = '플레이 된 {C:attention}와일드{} 카드가', + [2] = '득점시 {C:mult}+#1#{} 배수를 얻습니다' + }, + ['unlock'] = { + [1] = '5장의 {C:attention,E:1}와일드{} 카드로만', + [2] = '이루어진 핸드를 플레이합니다' + } + }, + j_bunc_neon = { + ['name'] = '네온 조커', + ['text'] = { + [1] = '강화된 카드가 득점하면', + [2] = '{C:dark_edition}꽃무늬{} 에디션을 얻습니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}디버프된{} 5 카드로만', + [2] = '이루어진 핸드를 플레이합니다' + } + }, + j_bunc_gameplan = { + ['name'] = '전략가', + ['text'] = { + [1] = '이 {C:attention}조커{}의 옆에 있는 조커들은', + [2] = '{C:red}디버프{} 되며,', + [3] = '{C:mult}+#1#{} 배수를 얻습니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}신록색 잎사귀{} 보스 블라인드를', + [2] = '비활성화 없이 처치합니다' + } + }, + j_bunc_conquest = { + ['name'] = '정복', + ['text'] = { + [1] = '{C:attention}블라인드{}가 선택되면', + [2] = '랜덤한 조커를 {C:red}디버프{}하고', + [3] = '{C:chips}+#1#{} 칩을 얻습니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}진홍색 하트{} 보스 블라인드를', + [2] = '비활성화 없이 처치합니다' + } + }, + j_bunc_hierarchy_of_needs = { + ['name'] = '욕망의 피라미드', + ['text'] = { + [1] = '전체 덱에 같은 수트의', + [2] = '{C:attention}2에서 Ace{} 까지의 세트마다', + [3] = '{C:mult}+#1#{} 배수를 얻습니다', + [4] = '{C:inactive}(현재 {C:mult}+#2#{C:inactive} 배수)' + } + }, + j_bunc_dwarven = { + ['name'] = '드워프 조커', + ['text'] = { + [1] = '핸드에 있는 {C:attention}스톤 카드{}가', + [2] = '{C:attention}스틸 카드{}와 {C:attention}골드 카드{}의', + [3] = '능력을 가집니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}스톤 카드{}, {E:1,C:attention}스틸 카드', + [2] = '{E:1,C:attention}골드 카드{}가 있는', + [3] = '포커 핸드를 플레이합니다' + } + }, + j_bunc_aristocrat = { + ['name'] = '아리스토크랫', + ['text'] = { + [1] = '{C:attention}부스터 팩{}에서', + [2] = '여분의 카드를 더 선택합니다' + }, + ['unlock'] = { + [1] = '{C:attention}부스터 팩{}을 열지 않고', + [2] = '런을 승리합니다' + } + }, + j_bunc_metallurgist = { + ['name'] = '연금술사', + ['text'] = { + [1] = '{C:attention}골드 카드{}가 핸드에 있을 때', + [2] = '{C:mult}+#1#{} 배수를 가집니다' + } + }, + j_bunc_juggalo = { + ['name'] = '저글로', + ['text'] = { + [1] = '{C:attention}블라인드{}가 선택되면', + [2] = '{C:dark_edition}포일{}, {C:dark_edition}홀로그래픽{},', + [3] = '{C:dark_edition}폴리크롬{}, or {C:dark_edition}반짝반짝{} 에디션을', + [4] = '임의의 {C:attention}소모품{}에 적용합니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}에디션{}이 적용된', + [2] = '{C:attention,E:1}#1#{} 소모품을 사용합니다', + [3] = '{C:inactive}(#2#)' + } + }, + j_bunc_head_in_the_clouds = { + ['name'] = '몽상가', + ['text'] = { + [1] = '포커 핸드를 업그레이드 할 때', + [2] = '{C:green}#2#분의 #1#{} 확률로', + [3] = '{C:attention,E:1}하이 카드{}가 업그레이드 됩니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}하이 카드{}가', + [2] = '가장 높은 레벨의 포커 핸드인 상태로', + [3] = '런을 승리합니다' + } + }, + j_bunc_headshot = { + ['name'] = '헤드샷', + ['text'] = { + [1] = '플레이한 핸드가 하나의', + [2] = '페이스 카드만을 가지고 있으면', + [3] = '{X:mult,C:white}X#1#{} 배수를 얻습니다' + } + }, + j_bunc_trigger_finger = { + ['name'] = '약지', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Mult,', + [2] = '{C:attention}selecting{} a card has', + [3] = 'a {C:green}#2# in #3#{} chance to', + [4] = 'play selected cards' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}하늘색 종{} 보스 블라인드를', + [2] = '비활성화 하지 않고 처치합니다' + } + }, + j_bunc_hopscotch = { + ['name'] = '홉스쿼치', + ['text'] = { + [1] = '플레이한 핸드에', + [2] = '{C:attention}스트레이트{}가 있으면', + [3] = '{C:red}+#1#{} 버리기를 얻습니다' + } + }, + j_bunc_pawn = { + ['name'] = '폰', + ['text'] = { + [1] = '현재 전체 덱에서 가장 낮은', + [2] = '랭크의 카드가 득점 시', + [3] = '{C:attention}랭크가 상승{}합니다', + [4] = '{C:inactive}(현재 가장 낮은 랭크: #1#)' + -- TODO "when scored" is only accurate + -- if the card's rank changes during scoring + } + }, + j_bunc_puzzle_board = { + ['name'] = '퍼즐 보드', + ['text'] = { + [1] = '{C:tarot}타로{}카드가 사용되면', + [2] = '{C:green}#2#분의 #1#{}확률로', + [3] = '{C:dark_edition}포일{}, {C:dark_edition}홀로그래픽{},', + [4] = '{C:dark_edition}폴리크롬{}, 혹은 {C:dark_edition}반짝반짝{} 에디션을', + [5] = '랜덤하게 선택된 카드에 적용합니다' + } + }, + j_bunc_vandalism = { + ['name'] = '반달리즘', + ['text'] = { + [1] = '뒤집혀서 뽑힌 페이스 카드가', + [2] = '득점시 {C:green}#2#분의 #1#{}확률로', + [3] = '{X:mult,C:white}X#3#{} 배수를 줍니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}뒤집힌{} 카드만 있는', + [2] = '포커 핸드를 득점합니다' + } + }, + j_bunc_protester = { + ['name'] = '시위자', + ['text'] = { + [1] = '이 조커는 이번 라운드에서 버려진', + [2] = '카드 중 가장 높은 랭크를', + [3] = '{C:attention}#1#X{}칩으로 추가합니다', + [4] = '{C:inactive}(현재 {C:chips}+#2#{C:inactive} 칩)' + } + }, + j_bunc_doodle = { + ['name'] = '낙서', + ['text'] = { + [1] = '이번 라운드에서 처음 사용한', + [2] = '{C:tarot}타로{}나 {C:planet}행성{} 카드가 복사됩니다', + [3] = '{C:inactive}(공간이 있어야 합니다)' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}#1#{}번의 런을 승리하세요', + [2] = '{C:inactive}(현재 #2#)' + } + }, + j_bunc_disproportionality = { + ['name'] = 'Disproportionality', + ['text'] = { + [1] = '' -- TODO: TO BE TRANSLATED WHEN IT'S DONE + } + }, + j_bunc_running_joke = { + ['name'] = '달리는 조커', + ['text'] = { + [1] = '상점이 열릴 때 마다', + [2] = '{C:dark_edition}네거티브{} {C:attention}조커{}가', + [3] = '있습니다' + } + }, + j_bunc_on_broadway = { + ['name'] = '브로드웨이', + ['text'] = { + [1] = '플레이한 핸드에 페이스 카드가 포함된', + [2] = '스트레이트가 있으면', + [3] = '{C:chips}+#1#{} 칩과{C:mult}+#2#{} 배수를 얻습니다' + } + }, + j_bunc_rasta = { + ['name'] = '라스타', + ['text'] = { + [1] = '플레이한 핸드의 점수 획득에', + [2] = '{C:attention}강화된 카드{}가 없으면', + [3] = '{C:mult}+#1#{} 배수를 얻습니다' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}강화된 카드{}를', + [2] = '보유하지 않은 상태로', + [3] = '런을 승리합니다' + } + }, + j_bunc_critic = { + ['name'] = '비평가', + ['text'] = { + [1] = '플레이한 핸드의 점수가', + [2] = '블라인드의 요구 점수의', + [3] = '{C:attention}#2#분의 1{}보다 작다면', + [4] = '{X:mult,C:white}X#1#{} 배수를 얻습니다' + } + }, + j_bunc_cellphone = { + ['name'] = '휴대폰', + ['text'] = { + [1] = '라운드의 처음 핸드 플레이에서', + [2] = '카드를 버리지 않으면', + [3] = '플레이한 카드가 핸드로{C:attention}돌아옵니다{}' + } + }, + j_bunc_wino = { + ['name'] = '홈리스', + ['text'] = { + [1] = '{C:hearts}하트{}와 {C:diamonds}다이아몬드{} 수트', + [2] = '로 플레이한 카드는', + [3] = '득점시 {C:chips}+#1#{} 칩을 얻습니다' + } + }, + j_bunc_bounty_hunter = { + ['name'] = '현상금 사냥꾼', + ['text'] = { + [1] = '모든 $의 획득 시 마다', + [2] = '{C:money}#1#${}로 바뀌고 이 조커는', + [3] = '{C:mult}+#1#{} 배수를 얻습니다', + [4] = '{C:inactive}(현재 {C:mult}+#2#{C:inactive} 배수)' + }, + ['unlock'] = { + [1] = '런에서 {E:1,C:attention}$#1#{}보다', + [2] = '적은 돈을 가집니다' + } + }, + j_bunc_mousetrap = { + ['name'] = '쥐덫', + ['text'] = { + [1] = '{C:chips}+#1#{} 칩을 획득하고,', + [2] = '{C:green}#3#분의 #2#{} 확률로', + [3] = '핸드 하나를 {C:attention}잃습니다{}' + } + }, + j_bunc_the_joker = { + ['name'] = '더 조커', + ['text'] = { + [1] = '핸드를 플레이 하면,', + [2] = '플레이한 핸드에서 강화가 없는 카드가', + [3] = '{C:green}#2#분의 #1#{}확률로 파괴됩니다', + }, + ['unlock'] = { + [1] = '모든 {C:attention}보스 블라인드{}', + [2] = '를 발견합니다' + } + }, + j_bunc_tangram = { + ['name'] = '탱그램', + ['text'] = { + [1] = '{C:attention}7{} 카드가 점수를 획득하면', + [2] = '7카드의 갯수만큼', + [3] = '{C:mult}+#1#{} 배수를 획득합니다' + } + }, + j_bunc_domino = { + ['name'] = '도미노', + ['text'] = { + [1] = '상점이나 부스터 팩에서', + [2] = '카드를 얻으면', + [3] = '가능한 경우 {C:attention}2{}개의', + [4] = '인접한 카드도 같이 얻습니다' + } + }, + j_bunc_glue_gun = { + ['name'] = '글루 건', + ['text'] = { + [1] = '이 조커를 팔아서', + [2] = '최대 #1 장의 카드들을', + [3] = '{C:attention}연결된 그룹{}을 만듭니다' + } + }, + j_bunc_taped = { + ['name'] = '테이핑된 조커', + ['text'] = { + [1] = '{C:attention}보스 블라인드{}에서', + [2] = '처음으로 득점한 카드들로', + [3] = '{C:attention}연결된 그룹{}을 만듭니다' + } + }, + j_bunc_rubber_band_ball = { + ['name'] = '고무줄공', + ['text'] = { + [1] = '이 런에서의 {C:attention}연결된 그룹{}마다', + [2] = '{X:mult,C:white}X#1#{} 배수를 얻습니다', + [3] = '{C:inactive}(현재 {X:mult,C:white}X#2#{C:inactive} 배수)' + } + }, + j_bunc_headache = { + ['name'] = '두통', + ['text'] = { + [1] = '각각의 {C:attention}#1#{} 카드가', + [2] = '파괴 될 때 마다', + [3] = '{C:bunco_virtual_dark}아케이드 태그{}를 만듭니다', + [4] = '{C:inactive}({C:attention}#2#{C:inactive}/#1# 카드 파괴됨)' + } + }, + j_bunc_games_collector = { + ['name'] = '게임 수집가', + ['text'] = { + [1] = '이 조커는 연결된 그룹이', + [2] = '패로 뽑힐 때 마다', + [3] = '{C:chips}+#1#{} 추가 칩을 가집니다', + [4] = '{C:inactive}(현재 {C:chips}+#2#{C:inactive} 칩)' + } + }, + j_bunc_jumper = { + ['name'] = '점퍼', + ['text'] = { + [1] = '이 조커는 플레이한 핸드에', + [2] = '{C:attention}플러시{}가 포함되면', + [3] = '{C:chips}+#1#{}칩을 얻습니다', + [4] = '{C:inactive}(현재 {C:chips}+#2#{C:inactive} 칩)' + } + }, + j_bunc_stylophone = { + ['name'] = '스타일로폰', + ['text'] = { + [1] = '카드의 점수를 계산할 때', + [2] = '+({C:attention}랭크{} x {C:attention}X#1#{}배수)로 계산합니다' + } + }, + j_bunc_kite_experiment = { + ['name'] = '연날리기 실험', + ['text'] = { + [1] = '{C:green}#2# 분의 #1#{} 확률로', + [2] = '점수를 재획득한 {C:attention}쿠퍼 카드{}가', + [3] = '한번 더 점수를 재획득합니다' + } + }, + j_bunc_robot = { + ['name'] = '로봇', + ['text'] = { + [1] = '이 조커는 {C:attention}쿠퍼 카드{}가', + [2] = '점수를 재획득 할 때 마다', + [3] = '{C:mult}+#1#{} 배수를 획득합니다', + [4] = '{C:inactive}(현재 {C:mult}+#2#{C:inactive} 배수)' + } + }, + j_bunc_hardtack = { + ['name'] = '건빵', + ['text'] = { + [1] = '{C:attention}크래커 카드{}가', + [2] = '버릴 때 더이상', + [3] = '파괴되지 않습니다' + } + }, + j_bunc_pica = { + ['name'] = '피카 조커', + ['text'] = { + [1] = '{C:attention}크래커 카드{}를 버리면', + [2] = '모든 버린 카드를', + [3] = '핸드로 플레이합니다' + } + }, + + -- Exotic Jokers + + j_bunc_zealous = { + ['name'] = '질투하는 조커', + ['text'] = { + [1] = '플레이한 핸드에', + [2] = '{C:attention}스펙트럼{}이 포함되면', + [3] = '{C:mult}+#1#{} 배수를 얻습니다' + } + }, + j_bunc_lurid = { + ['name'] = '기분나쁜 조커', + ['text'] = { + [1] = '플레이한 핸드에', + [2] = '{C:attention}스펙트럼{}이 포함되면', + [3] = '{C:chips}+#1#{} 칩을 얻습니다' + } + }, + j_bunc_envious = { + ['name'] = '부러워하는 조커', + ['text'] = { + [1] = '{C:bunc_fleurons}꽃무늬{} 수트로', + [2] = '플레이한 카드가 득점시', + [3] = '{C:mult}+#1#{} 배수를 얻습니다' + } + }, + j_bunc_proud = { + ['name'] = '자랑하는 조커', + ['text'] = { + [1] = '{C:bunc_halberds}할버드{} 수트로', + [2] = '플레이한 카드가 득점시', + [3] = '{C:mult}+#1#{} 배수를 얻습니다' + } + }, + j_bunc_wishalloy = { + ['name'] = '소원의 돌', + ['text'] = { + [1] = '플레이한 {C:bunc_fleurons}꽃무늬{} 수트의 카드가', + [2] = '{C:green}#2#분의 #1#{} 확률로', + [3] = '카드가 득점한 칩 만큼 {C:money}${} 를 얻습니다' + } + }, + j_bunc_unobtanium = { + ['name'] = '언옵타니윰', + ['text'] = { + [1] = '{C:bunc_halberds}할버드{} 수트로', + [2] = '플레이한 카드는 득점시', + [3] = '{C:chips}+#1#{}개 칩과 {C:mult}+#2#{} 배수를 얻습니다' + } + }, + j_bunc_dynasty = { + ['name'] = '왕조', + ['text'] = { + [1] = '플레이한 핸드에 {C:attention}스펙트럼{}이', + [2] = '포함되어 있다면', + [3] = '{X:mult,C:white}X#1#{} 배수를 얻습니다' + } + }, + j_bunc_magic_wand = { + ['name'] = '마술봉', + ['text'] = { + [1] = '이 조커는 {C:attention}연속으로{} 플레이한 핸드에', + [2] = '{C:attention}스펙트럼{}이 포함되어 있다면', + [3] = '{C:mult}+#1#{} 배수를 얻습니다', + [4] = '{C:inactive}(현재 {C:mult}+#2#{C:inactive} 배수)' + } + }, + j_bunc_starfruit = { + ['name'] = '카람볼라', + ['text'] = { + [1] = '플레이한 포커 핸드에', + [2] = '{C:attention}스펙트럼{}이 있다면', + [3] = '{C:green}#2#분의 #1#{} 확률로 해당 카드가', + [4] = '라운드의 끝에서 파괴됩니다' + } + }, + j_bunc_fondue = { + ['name'] = '퐁듀', + ['text'] = { + [1] = '라운드의 {C:attention}첫 핸드{}에서', + [2] = '득점한 카드들은', + [3] = '{C:bunc_fleurons}꽃무늬{} 수트의 카드로 바뀝니다' + } + }, + j_bunc_myopia = { + ['name'] = '근시', + ['text'] = { + [1] = '{C:spades}스페이드{}와 {C:clubs}클럽{}이', + [2] = '{C:bunc_halberds}할버드{}', + [3] = '수트의 카드 로 계산됩니다' + } + }, + j_bunc_astigmatism = { + ['name'] = '난시', + ['text'] = { + [1] = '{C:hearts}하트{} 와 {C:diamonds}다이아몬드{} 가', + [2] = '{C:bunc_fleurons}꽃무늬{}로 계산됩니다' + } + }, + j_bunc_roygbiv = { + ['name'] = '무지개', + ['text'] = { + [1] = '핸드에 {C:attention}스펙트럼{}이 있다면', + [2] = '{C:dark_edition}폴리크롬{} 에디션이', + [3] = '{C:green}#2#분의 #1#{} 확률로', + [4] = '모든 득점한 카드에 추가됩니다' + } + }, + j_bunc_rigoletto = { + ['name'] = '리골레토', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} 배수가', + [2] = '{C:attention}전체 덱{}의 {C:bunco_exotic}엑조틱 카드{}', + [3] = '갯수만큼 추가됩니다', + [4] = '{C:inactive}(현재 {X:mult,C:white}X#2#{C:inactive} 배수)' + }, + ['unlock'] = { + [1] = '{E:1,s:1.3}?????' + } + }, + }, + Blind = { + bl_bunc_paling = { + ['name'] = '말뚝', + ['text'] = { + [1] = '카드를 버릴 때 마다', + [2] = '$1를 잃습니다' + } + }, + bl_bunc_umbrella = { + ['name'] = '우산', + ['text'] = { + [1] = '핸드를 플레이 하고 나면', + [2] = '핸드의 모든 카드가 뒤집힙니다' + } + }, + bl_bunc_tine = { + ['name'] = '갈퀴', + ['text'] = { + [1] = '각 #1#이 디버프됩니다' + } + }, + bl_bunc_swing = { + ['name'] = '스윙', + ['text'] = { + [1] = '카드를 플레이하거나 버리면', + [2] = '모든 카드를 뒤집습니다' + } + }, + bl_bunc_miser = { + ['name'] = '구두쇠', + ['text'] = { + [1] = '이 블라인드를 승리하고 나면', + [2] = '상점이 열리지 않습니다' + } + }, + bl_bunc_gate = { + ['name'] = '성문', + ['text'] = { + [1] = '카드가', + [2] = '선택 해제 될 수 없습니다' + } + }, + bl_bunc_flame = { + ['name'] = '화염', + ['text'] = { + [1] = '모든 강화된 카드는', + [2] = '디버프됩니다' + } + }, + bl_bunc_mask = { + ['name'] = '가면', + ['text'] = { + [1] = '#1# 은 기본적으로', + [2] = '#2#칩과 배수를 가집니다' + } + }, + bl_bunc_bulwark = { + ['name'] = '성채', + ['text'] = { + [1] = '#1#을 플레이하면', + [2] = '핸드의 모든 카드를 버립니다' + } + }, + bl_bunc_knoll = { + ['name'] = '둔덕', + ['text'] = { + [1] = '$5 보다 더 많은 돈을 보유하면', + [2] = '첫 번째의 핸드 플레이가 디버프됩니다' + } + }, + bl_bunc_stone = { + ['name'] = '암석', + ['text'] = { + [1] = '10$ 보유마다', + [2] = '요구 점수가 +1X 증가합니다' + } + }, + bl_bunc_sand = { + ['name'] = '모래', + ['text'] = { + [1] = '모든 태그 갯수마다', + [2] = '요구 점수가 +1X 증가합니다' + } + }, + bl_bunc_blade = { + ['name'] = '칼날', + ['text'] = { + [1] = '처음으로 #1#점을 초과한 경우', + [2] = '플레이한 핸드의 점수가 0이 됩니다' + } + }, + bl_bunc_claw = { + ['name'] = '발톱', + ['text'] = { + [1] = '버린 카드들이', + [2] = '덱으로 다시 들어갑니다' + } + }, + bl_bunc_veil = { + ['name'] = '베일', + ['text'] = { + [1] = '선택한 카드가', + [2] = '뒤집혀서 드러납니다' + } + }, + bl_bunc_cadaver = { + ['name'] = '사체', + ['text'] = { + [1] = '핸드에 반드시', + [2] = '페이스 카드가 있어야 합니다' + } + }, + bl_bunc_wind = { + ['name'] = '바람', + ['text'] = { + [1] = '맨 왼쪽에 위치한 조커가', + [2] = '디버프됩니다' + } + }, + bl_bunc_prince = { + ['name'] = '왕자', + ['text'] = { + [1] = '첫 번째 핸드가 플레이 될 때 까지', + [2] = '모든 조커가 디버프됩니다' + } + }, + bl_bunc_depths = { + ['name'] = '해저', + ['text'] = { + [1] = '플레이 이후', + [2] = '이터널, 부패, 산산조각 태그를 얻습니다' + } + }, + bl_bunc_chasm = { + ['name'] = '균열', + ['text'] = { + [1] = '플레이 이후', + [2] = '리액티브, 대여, 방해 태그를 얻습니다' + } + }, + + -- Final + + bl_bunc_final_crown = { + ['name'] = '샤르트뢰즈 크라운', + ['text'] = { + [1] = '모든 스페이드, 클럽, 다이아몬드, 하트', + [2] = '기본 수트 카드들은 디버프됩니다' + } + }, + bl_bunc_final_trident = { + ['name'] = '주홍색 삼지창', + ['text'] = { + [1] = '이번 엔티의 모든 구매마다', + [2] = '+1X 요구 점수를 추가합니다' + } + }, + bl_bunc_final_tower = { + ['name'] = '쪽빛 탑', + ['text'] = { + [1] = '이번 앤티에 플레이 되지 않은', + [2] = '카드는 디버프됩니다' + } + }, + bl_bunc_final_dagger = { + ['name'] = '자홍색 단검', + ['text'] = { + [1] = '카드를 버리는 경우도 플레이됩니다', + [2] = '그리고 이 때의 점수를 감점합니다' + } + }, + bl_bunc_final_shield = { + ['name'] = '터키석 방패', + ['text'] = { + [1] = '이번 앤티에서의 초과 점수는', + [2] = '이 블라인드의 요구 점수에 합산됩니다' + } + } + }, + Back = { + b_bunc_fairy = { + ['name'] = '요정 덱', + ['text'] = { + [1] = '{C:attention}보스 블라인드{} 이후에 #1#', + [2] = '랜덤한 {C:bunco_exotic,T:bunc_exotic_cards}#2#', + [3] = '을 덱에 추가합니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}5개의 다른 수트{} 를', + [2] = '한번의 핸드로 플레이한 경우' + } + }, + b_bunc_digital = { + ['name'] = '디지털 덱', + ['text'] = { + [1] = '{C:bunco_virtual_dark}폴리미노{} 카드가', + [2] = '상점에 나타날 수 있으며', + [3] = "{C:bunco_virtual_dark,T:c_bunc_the_i}The I{} 부터 시작합니다" + } + } + }, + Tag = { + + -- Reworked + + tag_bunc_boss = { + ['name'] = '보스 태그', + ['text'] = { + [1] = '무료 {C:attention}블라인드 팩{}을 제공합니다' + } + }, + tag_bunc_double = { + ['name'] = '더블 태그', + ['text'] = { + [1] = '다음에 선택된 {C:attention}태그{}의', + [2] = '복사본을 얻습니다', + [3] = '{s:0.6,C:attention}더블, 트리플 태그{s:0.8} 는 제외됩니다' + } + }, + tag_bunc_d_six = { + ['name'] = 'D6 태그', + ['text'] = { + [1] = '다음 상점에', + [2] = '무료 {C:green}리롤{}을 제공합니다' + } + }, + + -- Main Tags + + tag_bunc_breaking = { + ['name'] = '브레이킹 태그', + ['text'] = { + [1] = '{C:attention}보스 블라인드{}를', + [2] = '비활성화 합니다' + } + }, + tag_bunc_arcade = { + ['name'] = '아케이드 태그', + ['text'] = { + [1] = '무료 {C:bunco_virtual_dark}메가 버츄얼 팩{}을 제공합니다' + } + }, + tag_bunc_triple = { + ['name'] = '트리플 태그', + ['text'] = { + [1] = '다음에 선택된 {C:attention}태그{}', + [2] = '의 복사본 두 개를 제공합니다', + [3] = '{s:0.8,C:attention}트리플 태그{s:0.8}는 제외됩니다' + } + }, + tag_bunc_shopping = { + ['name'] = '쇼핑 태그', + ['text'] = { + [1] = '{C:attention}1{} 개의 무료', + [2] = '{C:green}상점{}리롤을 제공합니다' + } + }, + + -- Edition tags + + tag_bunc_glitter = { + ['name'] = '반짝반짝 태그', + ['text'] = { + [1] = '다음 기본 에디션 상점', + [2] = '조커가 무료이며', + [3] = '{C:dark_edition}반짝반짝{}이 됩니다' + } + }, + tag_bunc_fluorescent = { + ['name'] = '형광 태그', + ['text'] = { + [1] = '다음 기본 에디션 상점의 조커가 무료이고', + [2] = '{C:dark_edition}형광{} 이 됩니다' + } + }, + + -- Consumable edition tags + + tag_bunc_chips = { + ['name'] = '칩 태그', + ['text'] = { + [1] = '다음 핸드에서 칩 {C:chips}+#1#{}개' + } + }, + tag_bunc_mult = { + ['name'] = '배수 태그', + ['text'] = { + [1] = '다음 핸드에서 {C:mult}+#1#{}배수', + } + }, + tag_bunc_xmult = { + ['name'] = '메가배수 태그', + ['text'] = { + [1] = '다음 핸드에서 {X:mult,C:white}X#1#{}배수', + } + }, + tag_bunc_xchips = { + ['name'] = '울트라칩 태그', + ['text'] = { + [1] = '다음 핸드에서 칩 {X:chips,C:white}X#1#{}개' + } + }, + + -- Exotic tags + + tag_bunc_filigree = { + ['name'] = '금세공 태그', + ['text'] = { + [1] = '다음 {C:attention} 표준 카드 팩{} 이 열리면', + [2] = '카드 팩에 {C:bunco_exotic} 엑조틱 카드만 들어 있습니다' + } + }, + + -- Anti-tags + + tag_bunc_eternal = { + ['name'] = '이터널 태그', + ['text'] = { + [1] = '다음에 구매하는 조커가', + [2] = '{C:attention}이터널{} 스티커를 가집니다' + } + }, + tag_bunc_perishable = { + ['name'] = '부패 태그', + ['text'] = { + [1] = '다음에 구매하는 조커가', + [2] = '{C:attention}부패{} 스티커를 가집니다' + } + }, + tag_bunc_scattering = { + ['name'] = '산산조각 태그', + ['text'] = { + [1] = '다음에 구매하는 조커가', + [2] = '{C:attention}산산조각{} 스티커를 가집니다' + } + }, + tag_bunc_hindered = { + ['name'] = '방해 태그', + ['text'] = { + [1] = '다음에 구매하는 조커가', + [2] = '{C:attention}방해{} 스티커를 가집니다' + } + }, + tag_bunc_reactive = { + ['name'] = '리액티브 태그', + ['text'] = { + [1] = '다음에 구매하는 조커가', + [2] = '{C:attention}리액티브{} 스티커를 가집니다' + } + }, + tag_bunc_rental = { + ['name'] = '대여 태그', + ['text'] = { + [1] = '다음에 구매하는 조커가', + [2] = '{C:attention}대여{} 스티커를 가집니다' + } + } + }, + Edition = { + e_bunc_glitter = { + ['name'] = '반짝반짝', + ['text'] = { + [1] = '{X:chips,C:white}X#1#{} 개의 칩' + } + }, + e_bunc_fluorescent = { + ['name'] = '형광', + ['text'] = { + [1] = '뒤집히거나 디버프당하거나', + [2] = '강제로 선택될 수 없습니다' + } + }, + + e_bunc_consumable_edition_foil = { + ['name'] = '포일', + ['text'] = { + [1] = '{C:attention}칩{} 태그를 만듭니다' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = '홀로그래픽', + ['text'] = { + [1] = '{C:attention}배수{} 태그를 만듭니다' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = '폴리크롬', + ['text'] = { + [1] = '{C:attention}메가배수{} 태그를 만듭니다' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = '반짝반짝', + ['text'] = { + [1] = '{C:attention}울트라칩{} 태그를 만듭니다' + } + }, + }, + Voucher = { + v_bunc_lamination = { + ['name'] = '라미네이션', + ['text'] = { + [1] = '{C:attention}부스터 팩의 소모품들이{}', + [2] = '{C:dark_edition}에디션으로 나타날 수 있습니다', + [3] = '' + } + }, + v_bunc_supercoating = { + ['name'] = '슈퍼코팅', + ['text'] = { + [1] = '{C:attention}부스터 팩의 모든 소모품들이{}', + [2] = '{C:dark_edition}에디션으로 나타납니다', + [3] = '' + }, + ['unlock'] = { + [1] = '{C:attention,E:1}#1#{}개의 소비 아이템 사용', + [2] = '{C:attention,E:1}에디션과 함께', + [3] = '{C:inactive}(현재 #2#)' + } + }, + v_bunc_hedge_trimmer = { + ['name'] = '점수 절단기', + ['text'] = { + [1] = '매번 핸드를 플레이 할 때 마다', + [2] = '블라인드의 점수를 {C:attention}#1#%{} 씩 감소시킵니다' + } + }, + v_bunc_chainsaw = { + ['name'] = '전기톱', + ['text'] = { + [1] = '모든 블라인드 필요 점수가', + [2] = '{C:attention}#1#%{} 만큼 감소합니다' + }, + ['unlock'] = { + [1] = "블라인드의 점수를 점수 절단기로 감소", + [2] = '총 {C:attention,E:1}#1#{} 회 달성', + [3] = '{C:inactive}(현재 #2#)' + } + }, + v_bunc_cups_n_balls = { + ['name'] = '컵과 공', + ['text'] = { + [1] = '상점에 {C:attention}+1{}개의', + [2] = '부스터 팩 슬롯이 추가됩니다' + } + }, + v_bunc_shell_game = { + ['name'] = '야바위', + ['text'] = { + [1] = '부스터 팩의 {C:attention}카드들{}을 ', + [2] = '리롤 합니다', + [3] = '팩당 {C:attention}1{}회만 가능합니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}#1#개{}의', + [2] = '부스터 팩을 오픈합니다', + [3] = '{C:inactive}(현재 #2#)' + } + }, + v_bunc_disguise = { + ['name'] = '위장', + ['text'] = { + [1] = '{C:attention}블라인드 팩{}이', + [2] = '상점에 나타납니다' + } + }, + v_bunc_masquerade = { + ['name'] = '가면무도회', + ['text'] = { + [1] = '모든 상점의 {C:attention}블라인드 팩{} 이', + [2] = '무료가 됩니다' + }, + ['unlock'] = { + [1] = '{E:1,C:attention}#1#{}개의 ', + [2] = '블라인드를 블라인드 팩의 블라인드로', + [3] = '교체하기', + [4] = '{C:inactive}(현재 #2#)' + } + }, + v_bunc_fanny_pack = { + ['name'] = '힙색', + ['text'] = { + [1] = '{C:green}#2#분의 #1#{}의 확률로', + [2] = '매 블라인드가 {C:attention}스킵{}될 때 마다', + [3] = '{C:attention}더블 태그{} 를 얻습니다' + } + }, + v_bunc_pin_collector = { + ['name'] = '핀 수집가', + ['text'] = { + [1] = '모든 새로운 {C:attention}더블 태그{} 가', + [2] = '{C:attention}트리플 태그{}로 나타납니다' + }, + ['unlock'] = { + [1] = '총 {E:1,C:attention}#1#{} 번의 블라인드를', + [2] = '스킵합니다', + [3] = '{C:inactive}(현재 #2#)' + } + }, + v_bunc_arcade_machine = { + ['name'] = '오락기', + ['text'] = { + [1] = '{C:bunco_virtual_dark}버츄얼 팩{} 이', + [2] = '{C:attention}4배{} 더 자주 나타납니다' + } + }, + v_bunc_polybius = { + ['name'] = '폴리비우스', + ['text'] = { + [1] = '{C:bunco_virtual_dark}폴리미노{} 카드가', + [2] = '추가로 {C:attention}한 장{}의 카드를 더 가질 수 있습니다', + [3] = '{s:0.6,C:inactive}추가되는 카드는 어떠한 카드도 될 수 있습니다' + }, + ['unlock'] = { + [1] = '총 {E:1,C:attention}#1#{} 개의', + [2] = '연결된 그룹을 만듭니다', + [3] = '{C:inactive}(현재 #2#)' + } + } + }, + Enhanced = { + m_bunc_copper = { + ['name'] = '쿠퍼 카드', + ['text'] = { + [1] = '{C:attention}인접한{} 다른 쿠퍼', + [2] = '카드가 득점 하면', + [3] = '다시 득점합니다' + }, + }, + m_bunc_cracker = { + ['name'] = '크래커 카드', + ['text'] = { + [1] = '{C:attention}버리기{} 시 카드가', + [2] = '플레이되고 그 후 파괴됩니다', + }, + }, + }, + Stake = { + stake_bunc_cyan = { + ['name'] = '시안 스테이크', + ['text'] = { + [1] = '상점에 {C:attention}산산조각{} 조커가 있습니다', + [2] = '{C:inactive,s:0.8}(#1#)', + [3] = '{s:0.8}이전 스테이크를 모두 적용합니다' + } + }, + stake_bunc_pink = { + ['name'] = '핑크 스테이크', + ['text'] = { + [1] = '상점에 {C:attention}방해{} 조커가 있습니다', + [2] = '{C:inactive,s:0.8}(#1#)', + [3] = '{s:0.8}이전 스테이크를 모두 적용합니다' + } + }, + stake_bunc_magenta = { + ['name'] = '마젠다 스테이크', + ['text'] = { + [1] = '상점에 {C:attention}리액티브{} 조커가 있습니다', + [2] = '{C:inactive,s:0.8}(#1#)', + [3] = '{s:0.8}이전 스테이크를 모두 적용합니다' + } + } + } + } +} \ No newline at end of file diff --git a/localization/pt_BR.lua b/localization/pt_BR.lua index ce0a26c8..b020e2c0 100644 --- a/localization/pt_BR.lua +++ b/localization/pt_BR.lua @@ -1,1740 +1,1749 @@ -return { - misc = { - dictionary = { -- Brazilian Portuguese translation by PinkMaggit. [Qualquer sugestão ou crítica, só me mandar mensagem no discord. Meu nick: pink.maggit] - - -- Config values - - bunc_colorful_finishers = 'Blinds Coloridos no Final', - bunc_colorful_finishers_desc = 'Ativa fundos coloridos para os Blinds finais', - bunc_colorful_finishers_desc_2 = 'e remove o fundo cinza no Modo Infinito', - - bunc_high_quality_shaders = 'Shaders de Alta Qualidade', - bunc_high_quality_shaders_desc = 'Faz com que alguns dos shaders do jogo base', - bunc_high_quality_shaders_desc_2 = 'sejam renderizados em alta qualidade (pode causar lag)', - - bunc_fixed_sprites = 'Sprites Ajustados', - bunc_fixed_sprites_desc = 'Ajusta alguns sprites de forma sutil, removendo', - bunc_fixed_sprites_desc_2 = 'pixels fora do lugar e melhorando consistência e contraste', - - bunc_gameplay_reworks = 'Revisões de Jogabilidade', - bunc_gameplay_reworks_desc = 'Revisa algumas mecânicas do jogo base', - bunc_gameplay_reworks_desc_2 = 'para tornar o jogo mais agradável', - - bunc_fixed_badges = 'Informações Corrigidas', - bunc_fixed_badges_desc = 'Altera as badges dos consumíveis substituindo textos confusos', - bunc_fixed_badges_desc_2 = 'por indicações de como obtê-las', - - bunc_jokerlike_consumable_editions = 'Edições no Slot de Consumíveis', - bunc_jokerlike_consumable_editions_desc = 'Restaura o comportamento padrão dos consumíveis com', - bunc_jokerlike_consumable_editions_desc_2 = 'edições que agem como Jokers (para outros mods conflitantes)', - - bunc_default_true = 'Ativado por padrão', - bunc_default_false = 'Desativado por padrão', - bunc_requires_restart = 'Requer reinício do jogo', - - -- Miscellaneous - - bunc_copied = 'Copiado!', - bunc_nothing = 'Nada', - bunc_chips = 'Fichas', - bunc_loop = 'Loop!', - bunc_chance = 'Chance', - bunc_word_and = 'e', - bunc_debuffed = 'Desvantagem!', - bunc_pew = 'Pew!', - bunc_declined = 'Recusado...', - bunc_accepted = 'Aceito!', - bunc_ouch = 'AI!', - bunc_repeat = 'De novo!', - bunc_thoth_tarot = 'Tarô de Tote', - bunc_mysterious_tarot = 'Tarô?', - bunc_mysterious_polymino = 'Polymino?', - bunc_most_played_rank = '(classe mais jogada)', - bunc_least_played_hand = '(mão menos jogada)', - bunc_blade = '(1.5X pontuação de blind)', - bunc_exceeded_score = 'Limite excedido!', - - -- Consumable types - - k_polymino = 'Polymino', - b_polymino_cards = 'Cartas de Polymino', - - -- Booster types - - k_bunc_blind_pack = 'Pacote de Blinds', - k_bunc_virtual_pack = 'Pacote Virtual' - }, - - -- Suits - - suits_singular = { - bunc_Fleurons = 'Florão', - bunc_Halberds = 'Alabarda' - }, - suits_plural = { - bunc_Fleurons = 'Florões', - bunc_Halberds = 'Alabardas' - }, - - -- Poker hands - - poker_hands = { - ['bunc_Spectrum'] = 'Espectro', - ['bunc_Straight Spectrum'] = 'Sequência Espectral', - ['bunc_Straight Spectrum (Royal)'] = 'Espectro Real', - ['bunc_Spectrum House'] = 'Espectro House', - ['bunc_Spectrum Five'] = 'Espectro Five', - ['bunc_Deal'] = 'Fechou' - }, - poker_hand_descriptions = { - ['bunc_Spectrum'] = { - [1] = '5 cartas com naipes diferentes' - }, - ['bunc_Straight Spectrum'] = { - [1] = '5 cartas em sequência (classes consecutivas),', - [2] = 'cada uma com um naipe diferente' - }, - ['bunc_Spectrum House'] = { - [1] = 'Uma Trinca e um Par com', - [2] = 'cada carta tendo um naipe diferente' - }, - ['bunc_Spectrum Five'] = { - [1] = '5 cartas com a mesma classe,', - [2] = 'cada uma com um naipe diferente' - }, - ['bunc_Deal'] = { - [1] = '5 classes escolhidas', - [2] = 'pela Placa de Carro' - } - }, - labels = { - - -- Editions - - bunc_glitter = 'Glitter', - bunc_fluorescent = 'Fluorescente', - - -- Stickers - - bunc_scattering = 'Dispersivo', - bunc_hindered = 'Travado', - bunc_reactive = 'Reativo' - } - }, - descriptions = { - Other = { - bunc_temporary_extra_chips = {['text'] = {[1] = '{C:chips}+#1#{} fichas extra nesta rodada'}}, - bunc_linked_cards = {['text'] = {[1] = '{C:attention}Vinculadas{} neste grupo:'}}, - bunc_drawn_linked_cards = {['text'] = {[1] = '{C:attention}Vinculadas{} no grupo retirado'}}, - bunc_exotic_cards = { - ['name'] = 'Cartas Exóticas', - ['text'] = { - [1] = 'Cartas com naipe de', - [2] = '{C:bunc_fleurons}Florões{} ou {C:bunc_halberds}Alabardas{}' - } - }, - bunc_consumable_edition_foil = { - ['name'] = 'Laminado', - ['text'] = { - [1] = 'Crie uma {C:attention}Marca de Fichas' - } - }, - bunc_consumable_edition_holo = { - ['name'] = 'Holográfico', - ['text'] = { - [1] = 'Crie uma {C:attention}Marca de Multi' - } - }, - bunc_consumable_edition_polychrome = { - ['name'] = 'Policromático', - ['text'] = { - [1] = 'Crie uma {C:attention}Marca Megamulti' - } - }, - bunc_consumable_edition_bunc_glitter = { - ['name'] = 'Glitter', - ['text'] = { - [1] = 'Crie uma {C:attention}Marca Ultrafichas' - } - }, - - -- Undiscovered - - undiscovered_polymino = { - ['name'] = 'Não descoberto', - ['text'] = { - [1] = 'Compre ou use', - [2] = 'esta carta em uma', - [3] = 'tentativa sem código', - [4] = 'para saber o que ela faz' - } - }, - - -- Booster Packs - - p_bunc_blind = { - ['name'] = 'Pacote de Blinds', - ['text'] = { - [1] = 'Escolha um de até', - [2] = '{C:attention}#1# Blinds de Chefe{} para', - [3] = 'substituir nesta Aposta' - } - }, - p_bunc_virtual_normal = { - ['name'] = 'Pacote Virtual', - ['text'] = { - [1] = 'Compre o baralho inteiro e', - [2] = 'escolha {C:attention}#1#{} de até', - [3] = '{C:attention}#2#{} cartas de{C:bunco_virtual_dark} Polymino{} para', - [4] = 'usar imediatamente' - } - }, - p_bunc_virtual_jumbo = { - ['name'] = 'Pacote Virtual Jumbo', - ['text'] = { - [1] = 'Compre o baralho inteiro e', - [2] = 'escolha {C:attention}#1#{} de até', - [3] = '{C:attention}#2#{} cartas de{C:bunco_virtual_dark} Polymino{} para', - [4] = 'usar imediatamente' - } - }, - p_bunc_virtual_mega = { - ['name'] = 'Pacote Virtual Mega', - ['text'] = { - [1] = 'Compre o baralho inteiro e', - [2] = 'escolha {C:attention}#1#{} de até', - [3] = '{C:attention}#2#{} cartas de{C:bunco_virtual_dark} Polymino{} para', - [4] = 'usar imediatamente' - } - }, - - -- Stickers - - bunc_scattering = { - ['name'] = 'Dispersivo', - ['text'] = { - [1] = 'Destrói um Curinga', - [2] = 'aleatório quando', - [3] = 'vendido ou destruído' - } - }, - bunc_hindered = { - ['name'] = 'Travado', - ['text'] = { - [1] = 'Fica travado no lugar', - [2] = 'até o fim da rodada', - [3] = 'após ser vendido' - } - }, - bunc_reactive = { - ['name'] = 'Reativo', - ['text'] = { - [1] = 'Recebe desvantagem se nenhum', - [2] = 'Blind for pulado nesta Aposta' - } - }, - - -- Stake stickers - - bunc_cyan_sticker = { - ['name'] = 'Adesivo Ciano', - ['text'] = { - [1] = 'Usou este Curinga', - [2] = 'para vencer na dificuldade', - [3] = '{C:attention}Aposta Ciana{}' - } - }, - bunc_pink_sticker = { - ['name'] = 'Adesivo Rosa', - ['text'] = { - [1] = 'Usou este Curinga', - [2] = 'para vencer na dificuldade', - [3] = '{C:attention}Aposta Rosa{}' - } - }, - bunc_magenta_sticker = { - ['name'] = 'Adesivo Magenta', - ['text'] = { - [1] = 'Usou este Curinga', - [2] = 'para vencer na dificuldade', - [3] = '{C:attention}Aposta Magenta{}' - } - } - }, - - -- Consumables - - Tarot = { - c_bunc_art = { - ['name'] = 'A Arte', - ['text'] = { - [1] = 'Aprimora {C:attention}#1#{}', - [2] = 'cartas elecionadas para', - [3] = '{C:attention}#2#s' - } - }, - c_bunc_sky = { - ['name'] = 'O Céu', - ['text'] = { - [1] = 'Converte até', - [2] = '{C:attention}#1#{} cartas selecionadas', - [3] = 'para {C:bunc_fleurons}Florões{}' - } - }, - c_bunc_abyss = { - ['name'] = 'O Abismo', - ['text'] = { - [1] = 'Converte até', - [2] = '{C:attention}#1#{} cartas selecionadas', - [3] = 'para {C:bunc_halberds}Alabardas{}' - } - }, - }, - Planet = { - c_bunc_quaoar = { - ['name'] = 'Quaoar' - }, - c_bunc_haumea = { - ['name'] = 'Haumea' - }, - c_bunc_sedna = { - ['name'] = 'Sedna' - }, - c_bunc_makemake = { - ['name'] = 'Makemake' - }, - }, - Spectral = { - c_bunc_cleanse = { - ['name'] = 'Purificar', - ['text'] = { - [1] = 'Adiciona {C:dark_edition}Fluorescente{} para', - [2] = '{C:attention}#1#{} cartas selecionadas na mão' - } - }, - c_bunc_the_8 = { - ['name'] = 'Forma 8', - ['text'] = { - [1] = '{C:attention}Vincula{} qualquer', - [2] = 'número de cartas selecionadas', - [3] = 'na mão que estejam desvinculadas', - [4] = '{C:inactive,s:0.6}(Seleção ilimitada enquanto a Forma 8 está selecionada)' - } - } - }, - Polymino = { - c_bunc_the_i = { - ['name'] = 'Forma I', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'que têm a {C:attention}mesma classe ou naipe' - } - }, - c_bunc_the_o = { - ['name'] = 'Forma O', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde 2 cartas têm a {C:attention}mesma propriedade', - [3] = '{C:inactive}(classe ou naipe){} e as outras 2 cartas', - [4] = 'têm um {C:attention}tipo diferente{} da {C:attention}mesma propriedade' - } - }, - c_bunc_the_t = { - ['name'] = 'Forma T', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde 3 cartas têm a {C:attention}mesma propriedade', - [3] = '{C:inactive}(classe ou naipe){} e a outra carta', - [4] = '{C:attention}não possui{} a {C:attention}mesma propriedade{}', - [5] = 'das outras cartas' - } - }, - c_bunc_the_s = { - ['name'] = 'Forma S', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde {C:attention}2 grupos{} de 2 cartas têm', - [3] = 'a {C:attention}mesma classe{} dentro de cada grupo, com uma', - [4] = 'carta de cada grupo compartilhando um {C:attention}naipe comum' - } - }, - c_bunc_the_z = { - ['name'] = 'Forma Z', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde {C:attention}2 grupos{} de 2 cartas têm', - [3] = 'o {C:attention}mesmo naipe{} dentro de cada grupo, com uma', - [4] = 'carta de cada grupo compartilhando uma {C:attention}classe comum' - } - }, - c_bunc_the_j = { - ['name'] = 'Forma J', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde 3 cartas têm a {C:attention}mesma classe', - [3] = 'e a outra carta que tem', - [4] = 'um {C:attention}naipe em comum{} porém', - [5] = 'não tem a mesma classe das outras' - } - }, - c_bunc_the_l = { - ['name'] = 'Forma L', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde 3 cartas têm o {C:attention}mesmo naipe', - [3] = 'e a outra carta que tem', - [4] = 'uma {C:attention}classe em comum{} porém', - [5] = 'não tem o mesmo naipe das outras' - } - }, - c_bunc_the_slash = { - ['name'] = 'Forma /', - ['text'] = { - [1] = '{C:attention}Vincula{} 4 cartas selecionadas', - [2] = 'onde todas as cartas têm', - [3] = '{C:attention}propriedades diferentes{} {C:inactive}(classe e naipe)' - } - } - }, - Joker = { - - -- Reworked Jokers - - j_bunc_luchador = { - ['name'] = 'Luchador', - ['text'] = { - [1] = 'Venda esta carta', - [2] = 'para criar uma', - [3] = '{C:attention}Marca Interruptora' - } - }, - j_bunc_red_card = { - ['name'] = 'Red Card', - ['text'] = { - [1] = 'This Joker gains {C:red}+#1#{} Multi', - [2] = 'per skipped choice', - [3] = 'in {C:attention}Booster Pack{}', - [4] = '{C:inactive}(No momento, {C:red}+#2#{C:inactive} Multi)' - } - }, - - -- Main Jokers - - j_bunc_cassette = { - ['name'] = 'Cassete', - ['text'] = { - [1] = 'Ao descartar, vire o Curinga para o outro lado', - [2] = '{C:attention}Lado A:{} Cartas com naipe claro', - [3] = 'dão {C:chips}+#1#{} Fichas quando pontuadas', - [4] = '{C:attention}Lado B:{} Cartas com naipe escuro', - [5] = 'dão {C:mult}+#2#{} Multi quando pontuadas' - -- TODO would be good to have a line for the side - -- or colorize the active side - } - }, - j_bunc_mosaic = { - ['name'] = 'Curinga Mosaico', - ['text'] = { - [1] = '{C:attention}Cartas de Pedra', - [2] = 'dão {C:mult}+#1#{} Multi', - [3] = 'quando pontuadas' - }, - ['unlock'] = { - [1] = 'Jogue uma mão de 5 cartas', - [2] = 'que contém apenas', - [3] = '{C:attention,E:1}Cartas de Pedra{}' - } - }, - j_bunc_voxel = { - ['name'] = 'Curinga Voxelizado', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi, {X:mult,C:white}-X#2#{} Multi por cada', - [2] = 'carta {C:attention}Aprimorada{} no seu {C:attention}baralho completo{}', - [3] = '{C:inactive}(No momento, {X:mult,C:white}X#3#{C:inactive} Multi)' - }, - ['unlock'] = { - [1] = 'Tenha ao menos {C:attention}#1#', - [2] = 'cartas {E:1,C:attention}Aprimoradas{} no', - [3] = 'seu baralho' - } - }, - j_bunc_crop_circles = { - ['name'] = 'Agroglifos', - ['text'] = { - [1] = 'Cartas de {C:clubs}Paus{} dão {C:mult}+3{} Multi,', - [2] = '{C:attention}8s{} dão {C:mult}+2{} Multi,', - [3] = '{C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} dão {C:mult}+1{} Multi' - } - }, - j_bunc_crop_circles_exotic = { - ['name'] = 'Agroglifos', - ['text'] = { - [1] = 'Cartas de {C:bunc_fleurons}Florões{} dão {C:mult}+4{} Multi,', - [2] = 'Cartas de {C:clubs}Paus{} dão {C:mult}+3{} Multi,', - [3] = '{C:attention}8s{} dão {C:mult}+2{} Multi,', - [4] = '{C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} dão {C:mult}+1{} Multi' - } - }, - j_bunc_xray = { - ['name'] = 'Raio X', - ['text'] = { - [1] = 'Este Curinga ganha {X:mult,C:white}X#1#{} Multi', - [2] = 'por carta comprada virada para baixo', - [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' - }, - ['unlock'] = { - [1] = 'Complete o desafio', - [2] = '{E:1,C:attention}Visão de Raio X' - } - }, - j_bunc_dread = { - ['name'] = 'Pavor', - ['text'] = { - [1] = 'Após pontuar sua {C:attention}última{} mão,', - [2] = 'aprimore-a em {C:attention}#1# níveis{}', - [3] = 'e {C:attention}destrua{} as cartas pontuadas', - [4] = '{C:inactive,s:0.8}Todos os níveis dados por este Curinga', - [5] = '{C:inactive,s:0.8}serão perdidos, caso seja removido' - }, - ['unlock'] = { - [1] = 'Reduza seu baralho', - [2] = 'em ao menos {E:1,C:attention}#1#{} cartas', - [3] = 'em uma rodada' - } - }, - j_bunc_prehistoric = { - ['name'] = 'Curinga Pré-Histórico', - ['text'] = { - [1] = 'Cartas jogadas que compartilham', - [2] = 'da mesma {C:attention}classe e naipe{} de uma', - [3] = '{C:attention}carta já pontuada{} nesta rodada', - [4] = 'dão {C:mult}+#1#{} Multi' - }, - ['unlock'] = { - [1] = 'Jogue um', - [2] = '{E:1,C:attention}Flush Five' - } - }, - j_bunc_linocut = { - ['name'] = 'Curinga Linoleogravado', - ['text'] = { - [1] = 'Quando você joga exatamente {C:attention}2{} cartas', - [2] = 'que formam um {C:attention}Par{},', - [3] = "converta o naipe da carta da {C:attention}esquerda{}", - [4] = "para o naipe da carta da {C:attention}direita{}", - [5] = '{C:inactive}(Arraste para reorganizar)' - -- TODO this joker is a bit wordy - } - }, - j_bunc_ghost_print = { - ['name'] = 'Impressão Fantasma', - ['text'] = { - [1] = 'Dá as Fichas e Multi', - [2] = 'da última {C:attention}mão de pôquer{} jogada', - [3] = '{C:inactive}(Última mão: #1#)' - } - }, - j_bunc_loan_shark = { - ['name'] = 'Agiota', - ['text'] = { - [1] = 'Receba {C:money}$#1#', - [2] = 'quando adquirido...' - }, - ['unlock'] = { - [1] = 'Gaste ao menos {E:1,C:attention}$100', - [2] = 'durante uma única rodada' - } - }, - j_bunc_loan_shark_full = { - ['name'] = 'Agiota', - ['text'] = { - [1] = 'Receba {C:money}$#1#{} quando adquirido,', - [2] = 'mas o preço de venda é {C:money}$-100' - } - }, - j_bunc_basement = { - ['name'] = 'Curinga do Porão', - ['text'] = { - [1] = 'Quando um {C:attention}Blind de chefe{} é derrotado,', - [2] = 'crie uma carta {C:spectral}Espectral{}', - [3] = '{C:inactive}(Deve ter espaço)' - } - }, - j_bunc_shepherd = { - ['name'] = 'Curinga Pastor', - ['text'] = { - [1] = 'este Curinga ganha {C:chips}+#1#{} Fichas', - [2] = 'quando a mão jogada contém um {C:attention}Par', - [3] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' - } - }, - j_bunc_knight = { - ['name'] = 'Curinga Cavaleiro', - ['text'] = { - [1] = 'Quando o {C:attention}Blind{} é selecionado, {C:attention}embaralhe{} todos os', - [2] = 'Curingas e este Curinga ganha {C:mult}+#1#{} Multi,', - [3] = '{C:red}reseta{} quando qualquer Curinga é reorganizado', - [4] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' - }, - ['unlock'] = { - [1] = 'Derrote a {E:1,C:attention}Semente Dourada', - [2] = 'sem desabilitá-la' - } - }, - j_bunc_jmjb = { - ['name'] = 'Carta Joker Man & Jester Boy Nº 54', - ['text'] = { - [1] = '{C:attention}Pacotes Padrão{} contém', - [2] = 'apenas cartas {C:attention}Aprimoradas{}' - }, - ['unlock'] = { - [1] = 'Abra {E:1,C:attention}#1#', - [2] = 'Pacotes de Reforço', - [3] = '{C:inactive}(#2#)' - } - }, - j_bunc_dogs_playing_poker = { - ['name'] = 'Cães Jogando Pôquer', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi se todas as classes', - [2] = 'pontuadas são {C:attention}2{}, {C:attention}3{}, {C:attention}4{}, ou {C:attention}5' - } - }, - j_bunc_righthook = { - ['name'] = 'Gancho de Direita', - ['text'] = { - [1] = 'Reative a carta que pontua mais à direita', - [2] = 'uma vez por cada {C:blue}mão{} restante', - }, - ['unlock'] = { - [1] = 'Reative uma carta', - [2] = 'jogada ao menos', - [3] = '{E:1,C:attention}#1# vezes{}' - } - }, - j_bunc_fiendish = { - ['name'] = 'Curinga Diabólico', - ['text'] = { - [1] = 'Dobre todas as fontes de dinheiro,', - [2] = '{C:green}#1# de #2#{} chance de receber', - [3] = '{C:money}$1{} ao invés do valor esperado' - }, - ['unlock'] = { - [1] = 'Complete o desafio', - [2] = '{E:1,C:attention}O Dobro ou Nada' - } - }, - j_bunc_carnival = { - ['name'] = 'Carnaval', - ['text'] = { - [1] = 'Após derrotar o {C:attention}Blind de Chefe{},', - [2] = '{C:attention}destrua{} um Curinga aleatório para', - [3] = 'voltar uma Aposta, na próxima vez', - [4] = 'funcionará apenas numa Aposta maior' - -- TODO needs a line for whether it's active / ante it will be active - }, - ['unlock'] = { - [1] = 'Chegue na', - [2] = 'Aposta {E:1,C:attention}0' - } - }, - j_bunc_sledgehammer = { - ['name'] = 'Marreta', - ['text'] = { - [1] = '{C:attention}Cartas de Vidro{} dão +{X:mult,C:white}X#1#{} Multi', - [2] = 'mas quebram com certeza' - }, - ['unlock'] = { - [1] = 'Jogue uma mão de 5 cartas', - [2] = 'que contém apenas', - [3] = '{C:attention,E:1}Cartas de Vidro{}' - } - }, - j_bunc_doorhanger = { - ['name'] = 'Cartão de Porta', - ['text'] = { - [1] = 'Curingas {C:blue}Comuns{} não aparecem', - [2] = '{s:0.8}Outras raridades aparecem ao invés deles' - }, - ['unlock'] = { - [1] = 'Vença uma tentativa', - [2] = 'sem ter possuído', - [3] = 'Curingas {C:attention,E:1}Comuns{}' - } - }, - j_bunc_fingerprints = { - ['name'] = 'Impressões Digitais', - ['text'] = { - [1] = 'Cartas pontuadas na {C:attention}mão vencedora{}', - [2] = 'ganham {C:chips}+#1#{} Fichas', - [3] = 'na próxima rodada apenas', - } - }, - j_bunc_zero_shapiro = { - ['name'] = 'Zé Zero', - ['text'] = { - [1] = 'Este Curinga aumenta em {C:attention}#1#X{} as', - [2] = '{C:green,E:1,S:1.1}probabilidades{} {C:attention}nesta rodada{} quando uma', - [3] = 'carta com classe {C:attention}nula{}, {C:attention}zero{}, or {C:attention}incontável{}', - [4] = 'pontua {C:inactive}(K, Q, J, 0, Sem classe)', - [5] = '{C:inactive}(No momento, {C:attention}X#2#{C:inactive} {C:green,E:1,S:1.1}probabilidades{C:inactive})' - -- TODO not sure how to word non-countable - } - }, - j_bunc_nil_bill = { - ['name'] = 'Nil Bill', - ['text'] = { - [1] = 'Cartas com {C:attention}Desvantagem{}', - [2] = 'dão {C:money}$#1#{} quando pontuadas' - } - }, - j_bunc_bierdeckel = { - ['name'] = 'Tapete de Cerveja', - ['text'] = { - [1] = 'Cartas na mão ganham', - [2] = '{C:chips}+#1#{} Fichas nesta rodada', - [3] = 'após jogar ou descartar' - } - }, - j_bunc_registration_plate = { - ['name'] = 'Placa de Carro', - ['text'] = { - [1] = '#1#', - [2] = 'tem as Fichas e Multi de todas as', - [3] = '{C:attention}mãos de pôquer{} jogadas nesta tentativa', - [4] = '{s:0.8}A combinação muda a cada rodada' - }, - ['unlock'] = { - [1] = 'Complete o desafio', - [2] = '{E:1,C:attention}Cidade dos 15 Minutos' - } - }, - j_bunc_slothful = { - ['name'] = 'Curinga Preguiçoso', - ['text'] = { - [1] = '{C:attention}Cartas Naipe Curinga', - [2] = 'dão {C:mult}+#1#{} Multi', - [3] = 'quando pontuadas' - }, - ['unlock'] = { - [1] = 'Jogue uma mão de 5 cartas', - [2] = 'que contém apenas', - [3] = '{C:attention,E:1}Cartas Naipe Curinga{}' - } - }, - j_bunc_neon = { - ['name'] = 'Curinga Neon', - ['text'] = { - [1] = 'Este Curinga Ganha {X:mult,C:white}X#1#{} Multi', - [2] = 'por carta com {C:attention}desvantagem{} pontuada', - [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' - }, - ['unlock'] = { - [1] = 'Jogue uma mão de 5 cartas', - [2] = 'que contém apenas', - [3] = '{C:attention,E:1}Cartas com desvantagem{}' - } - }, - j_bunc_gameplan = { - ['name'] = 'Plano de Jogo', - ['text'] = { - [1] = '{C:attention}Curingas{} adjacentes', - [2] = 'sofrem {C:red}desvantagem{} e', - [3] = 'dão {C:mult}+#1#{} Multi' - }, - ['unlock'] = { - [1] = 'Derrote a {E:1,C:attention}Folha Verdejante', - [2] = 'sem desabilitá-la' - } - }, - j_bunc_conquest = { - ['name'] = 'Conquista', - ['text'] = { - [1] = '{C:chips}+#1#{} Fichas,', - [2] = 'um Curinga aleatório sofre {C:red}desvantagem{}', - [3] = 'quando o {C:attention}Blind{} é selecionado' - }, - ['unlock'] = { - [1] = 'Derrote o {E:1,C:attention}Coração Rubro', - [2] = 'sem desabilitá-lo' - } - }, - j_bunc_hierarchy_of_needs = { - ['name'] = 'Hierarquia de Necessidades', - ['text'] = { - [1] = '{C:mult}+#1#{} Multi por', - -- TODO do wilds count, or base suit only? - [2] = '{C:attention}2-Ás{} do mesmo naipe', - [3] = 'no seu {C:attention}baralho completo', - [4] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' - } - }, - j_bunc_dwarven = { - ['name'] = 'Curinga Anão', - ['text'] = { - [1] = '{C:attention}Cartas de Pedra{} contidas na mão', - [2] = 'têm as habilidades das', - [3] = '{C:attention}Cartas de Aço{} e de {C:attention}Ouro' - }, - ['unlock'] = { - [1] = 'Jogue uma mão que', - [2] = 'contém cartas de {E:1,C:attention}Pedra{},', - [3] = '{E:1,C:attention}Aço{} e {E:1,C:attention}Ouro{}' - } - }, - j_bunc_aristocrat = { - ['name'] = 'Aristocrata', - ['text'] = { - [1] = 'Escolha uma carta extra', - [2] = 'de {C:attention}Pacotes de Reforço' - }, - ['unlock'] = { - [1] = 'Vença uma tentativa sem', - [2] = 'abrir nenhum', - [3] = '{C:attention,E:1}Pacote de Reforço' - } - }, - j_bunc_metallurgist = { - ['name'] = 'Metalurgista', - ['text'] = { - [1] = '{C:attention}Cartas de Ouro{} dão {C:mult}+#1#{} Multi', - [2] = 'enquanto contidas na mão' - } - }, - j_bunc_juggalo = { - ['name'] = 'Juggalo', - ['text'] = { - [1] = 'Adiciona {C:dark_edition}Laminado{}, {C:dark_edition}Holográfico{},', - [2] = '{C:dark_edition}Policromático{}, ou {C:dark_edition}Glitter{}', - [3] = 'para um {C:attention}consumível{} aleatório', - [4] = 'quando o {C:attention}Blind{} é selecionado' - }, - ['unlock'] = { - [1] = 'Use {C:attention,E:1}#1#{} consumíveis', - [2] = 'com {C:attention,E:1}Edições' - } - }, - j_bunc_head_in_the_clouds = { - ['name'] = 'Cabeça nas Nuvens', - ['text'] = { - [1] = '{C:green}#1# de #2#{} chance de aprimorar', - [2] = '{C:attention}Carta Alta{} quando você', - [3] = 'aprimora qualquer {C:attention}mão de pôquer' - }, - ['unlock'] = { - [1] = 'Vença uma tentativa com', - [2] = '{C:attention,E:1}Carta Alta{} sendo', - [3] = 'a mão de pôquer de maior nível' - } - }, - j_bunc_headshot = { - ['name'] = 'Headshot', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi se a mão jogada', - [2] = 'contém apenas uma única', - [3] = 'carta de {C:attention}realeza{} pontuada' - } - }, - j_bunc_trigger_finger = { - ['name'] = 'Dedo no Gatilho', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi,', - [2] = '{C:attention}selecionar{} uma carta tem', - [3] = 'uma chance de {C:green}#2# em #3#{} de', - [4] = 'jogar as cartas selecionadas' - }, - ['unlock'] = { - [1] = 'Derrote o {E:1,C:attention}Sino Cerúleo', - [2] = 'sem desabilitá-lo' - } - }, - j_bunc_hopscotch = { - ['name'] = 'Amarelinha', - ['text'] = { - [1] = 'Ganhe {C:red}+#1#{} descarte', - [2] = 'se a mão jogada', - [3] = 'contém uma {C:attention}Sequência{}' - } - }, - j_bunc_pawn = { - ['name'] = 'Peão', - ['text'] = { - [1] = 'Cartas com a {C:attention}menor{}', - [2] = 'classe do seu baralho completo', - [3] = '{C:attention}aumentam a classe{} quando pontuadas' - -- TODO "when scored" is only accurate - -- if the card's rank changes during scoring - } - }, - j_bunc_puzzle_board = { - ['name'] = 'Tabuleiro Quebra-Cabeça', - ['text'] = { - [1] = 'Quando uma carta de {C:tarot}Tarô{} é usada,', - [2] = '{C:green}#1# de #2#{} chance de adicionar', - [3] = '{C:dark_edition}Laminado{}, {C:dark_edition}Holográfico{}, ou', - [4] = '{C:dark_edition}Policromático{} a uma carta', - [5] = 'selecionada aleatória' - } - }, - j_bunc_vandalism = { - ['name'] = 'Vandalismo', - ['text'] = { - [1] = '{C:green}#1# de #2#{} chance de cartas', - [2] = 'serem compradas viradas pra baixo', - [3] = 'Cartas viradas para baixo dão', - [4] = '{X:mult,C:white}X#3#{} Multi quando pontuadas' - }, - ['unlock'] = { - [1] = 'Jogue uma mão de 5 cartas', - [2] = 'que contém apenas', - [3] = 'cartas {C:attention,E:1}Viradas{}' - } - }, - j_bunc_protester = { - ['name'] = 'Protestador', - ['text'] = { - [1] = 'Adiciona {C:attention}#1#X{} o valor da maior classe', - [2] = 'descartada essa rodada em Fichas', - [3] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' - } - }, - j_bunc_doodle = { - ['name'] = 'Rabisco', - ['text'] = { - [1] = '{C:attention}Copie{} o primeiro consumível', - [2] = 'usado nesta rodada', - [3] = '{C:inactive}(Deve ter espaço)' - }, - ['unlock'] = { - [1] = 'Vença {C:attention,E:1}#1#{} tentativas', - [2] = '{C:inactive}(#2#)' - } - }, - j_bunc_disproportionality = { - ['name'] = 'Desproporcionalidade', - ['text'] = { - [1] = '' - } - }, - j_bunc_running_joke = { - ['name'] = 'Piada Recorrente', - ['text'] = { - [1] = 'Crie um "{C:attention}Curinga{}"', - [2] = '{C:dark_edition}Negativo{} no início', - [3] = 'de cada loja' - } - }, - j_bunc_on_broadway = { - ['name'] = 'Na Broadway', - ['text'] = { - [1] = '{C:chips}+#1#{} Fichas e {C:mult}+#2#{} Multi se', - [2] = 'a mão jogada contém uma {C:attention}Sequência{}', - [3] = 'com uma carta de {C:attention}realeza{} pontuada' - } - }, - j_bunc_rasta = { - ['name'] = 'Rasta', - ['text'] = { - [1] = '{C:mult}+#1#{} Multi se nenhuma', - [2] = 'carta {C:attention}Aprimorada{}', - [3] = 'é pontuada' - }, - ['unlock'] = { - [1] = 'Vença uma tentativa sem nunca', - [2] = 'possuir cartas {C:attention,E:1}Aprimoradas' - } - }, - j_bunc_critic = { - ['name'] = 'Crítico', - ['text'] = { - [1] = "{X:mult,C:white}X#1#{} Multi se o placar", - [2] = 'da mão pontuada atual', - [3] = 'for {C:attention}menor que 1/#2#{} do', - [4] = "que o Placar total do Blind" - } - }, - j_bunc_cellphone = { - ['name'] = 'Celular', - ['text'] = { - [1] = '{C:attention}Retorne{} cartas pontuadas para a mão', - [2] = 'após a primeira jogada da rodada', - [3] = 'se nenhum descarte foi usado' - } - }, - j_bunc_wino = { - ['name'] = 'Wino', - ['text'] = { - [1] = 'Cartas jogadas de', - [2] = '{C:hearts}Copas{} e {C:diamonds}Ouros{}', - [3] = 'dão {C:chips}+#1#{} Fichas quando pontuadas' - } - }, - j_bunc_bounty_hunter = { - ['name'] = 'Caçador de Recompensa', - ['text'] = { - [1] = '{C:mult}+#1#{} Multi por', - [2] = 'cada {C:money}$1{} abaixo de {C:money}$0', - [3] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' - }, - ['unlock'] = { - [1] = 'Tenha menos que {E:1,C:attention}$#1#', - [2] = 'durante uma única tentativa' - } - }, - j_bunc_mousetrap = { - ['name'] = 'Ratoeira', - ['text'] = { - [1] = '{C:chips}+#1#{} Fichas,', - [2] = '{C:green}#2# de #3#{} chance de', - [3] = '{C:attention}perder{} uma mão em vez disso' - } - }, - j_bunc_the_joker = { - ['name'] = 'O Curinga', - ['text'] = { - [1] = 'Depois de jogada, cada carta', - [2] = 'pontuada sem um aprimoramento tem', - [3] = '{C:green}#1# de #2#{} chance de ser destruída', - }, - ['unlock'] = { - [1] = 'Descubra todos os', - [2] = '{C:attention}Blinds de Chefe' - } - }, - j_bunc_tangram = { - ['name'] = 'Tangrama', - ['text'] = { - [1] = 'Quando um {C:attention}7{} é pontuado,', - [2] = '{C:mult}+#1#{} Multi vezes o', - [3] = 'número de {C:attention}7s{} pontuados' - } - }, - j_bunc_domino = { - ['name'] = 'Dominó', - ['text'] = { - [1] = 'Ao {C:attention}adquirir{} or {C:attention}usar', - [2] = 'uma carta da loja ou', - [3] = 'Pacote de Reforço, adquira {C:attention}2', - [4] = 'cartas adjacentes, se possível' - } - }, - j_bunc_glue_gun = { - ['name'] = 'Pistola de Cola', - ['text'] = { - [1] = 'Venda esta carta para', - [2] = '{C:attention}Vincular{} #1# cartas', - [3] = 'de Jogo selecionadas' - } - }, - j_bunc_taped = { - ['name'] = 'Curingas Colados', - ['text'] = { - [1] = '{C:attention}Vincula{} todas as', - [2] = 'cartas jogadas na primeira', - [3] = 'mão pontuada durante o', - [4] = '{C:attention}Blind de Chefe{}' - } - }, - j_bunc_rubber_band_ball = { - ['name'] = 'Bola de Elástico', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi por {C:attention}Vínculo{}', - [2] = 'criado nesta tentativa', - [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' - } - }, - j_bunc_headache = { - ['name'] = 'Dor de Cabeça', - ['text'] = { - [1] = 'Crie uma carta de {C:bunco_virtual_dark}Polymino{}', - [2] = 'por cada {C:attention}#1#{} cartas de Jogo', - [3] = 'destruídas {C:inactive}(Deve ter espaço)', - [4] = '{C:inactive}({C:attention}#2#{C:inactive}/#1# cartas destruídas)' - } - }, - j_bunc_games_collector = { - ['name'] = 'Colecionador de Jogos', - ['text'] = { - [1] = 'Ganha {C:chips}+#1#{} Fichas', - [2] = 'quando um grupo vinculado', - [3] = 'é {C:attention}comprado{} do baralho', - [4] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' - } - }, - j_bunc_jumper = { - ['name'] = 'Saltador', - ['text'] = { - [1] = 'Ganha {C:chips}+#1#{} Fichas', - [2] = 'se a mão jogada', - [3] = 'contém um {C:attention}Flush{}', - [4] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' - } - }, - j_bunc_stylophone = { - ['name'] = 'Stylophone', - ['text'] = { - [1] = 'Cartas dão {C:attention}X#1#{} Multi', - [2] = 'da {C:attention}classe{}', - [3] = 'quando pontuadas' - } - }, - j_bunc_kite_experiment = { - ['name'] = 'Experimento da Pipa', - ['text'] = { - [1] = '{C:green}#1# de #2#{} chance de {C:attention}repontuar', - [2] = '{C:attention}Cartas de Cobre{} já repontuadas', - [3] = 'uma vez adicional' - } - }, - j_bunc_robot = { - ['name'] = 'Robô', - ['text'] = { - [1] = 'Este Curinga ganha {C:mult}+#1#{} Multi', - [2] = 'toda vez que uma {C:attention}Carta de Cobre', - [3] = 'for repontuada', - [4] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' - } - }, - - -- Exotic Jokers - - j_bunc_zealous = { - ['name'] = 'Curinga Zeloso', - ['text'] = { - [1] = '{C:mult}+#1#{} Multi se a mão', - [2] = 'jogada contém', - [3] = 'um {C:attention}Espectro' - } - }, - j_bunc_lurid = { - ['name'] = 'Curinga Sinistro', - ['text'] = { - [1] = '{C:chips}+#1#{} Fichas se a mão', - [2] = 'jogada contém', - [3] = 'um {C:attention}Espectro' - } - }, - j_bunc_envious = { - ['name'] = 'Curinga Invejoso', - ['text'] = { - [1] = 'Cartas jogadas com', - [2] = 'naipe de {C:bunc_fleurons}Florões{} dão', - [3] = '{C:mult}+#1#{} Multi quando pontuadas' - } - }, - j_bunc_proud = { - ['name'] = 'Curinga Orgulhoso', - ['text'] = { - [1] = 'Cartas jogadas com', - [2] = 'naipe de {C:bunc_halberds}Alabardas{} dão', - [3] = '{C:mult}+#1#{} Multi quando pontuadas' - } - }, - j_bunc_wishalloy = { - ['name'] = 'Desejínio', - ['text'] = { - [1] = 'Chance de {C:green}#1# em #2#{} para', - [2] = 'cartas de {C:bunc_fleurons}Florões{}', - [3] = 'ganharem {C:money}${} igual às', - [4] = "Fichas pontuadas pela carta" - } - }, - j_bunc_unobtanium = { - ['name'] = 'Inobtânio', - ['text'] = { - [1] = 'Cartas jogadas com', - [2] = 'naipe de {C:bunc_halberds}Alabardas{} dão', - [3] = '{C:chips}+#1#{} Fichas e {C:mult}+#2#{} Multi', - [4] = "quando pontuadas" - } - }, - j_bunc_dynasty = { - ['name'] = 'A Dinastia', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi se a mão', - [2] = 'jogada contém', - [3] = 'um {C:attention}Espectro' - } - }, - j_bunc_magic_wand = { - ['name'] = 'Varinha Mágica', - ['text'] = { - [1] = 'Este Curinga ganha {X:mult,C:white}X#1#{} Multi', - [2] = 'por mão {C:attention}consecutiva{} jogada', - [3] = 'contendo um {C:attention}Espectro{}', - [4] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' - } - }, - j_bunc_starfruit = { - ['name'] = 'Carambola', - ['text'] = { - [1] = '{C:green}#1# de #2#{} chance de aprimorar a', - [2] = '{C:attention}mão de pôquer{} se ela contém um {C:attention}Espectro', - [3] = '{C:green}#1# de #3#{} chance de destruir este Curinga ao fim da rodada', - [4] = 'se uma mão que contém {C:attention}Espectro{} foi jogada' - -- TODO this joker is way too long - } - }, - j_bunc_fondue = { - ['name'] = 'Fondue', - ['text'] = { - [1] = 'Cartas pontuadas na', - [2] = '{C:attention}primeira mão{} da rodada são', - [3] = 'convertidas para {C:bunc_fleurons}Florões' - } - }, - j_bunc_myopia = { - ['name'] = 'Miopia', - ['text'] = { - [1] = '{C:spades}Espadas{} e {C:clubs}Paus{}', - [2] = 'contam como {C:bunc_halberds}Alabardas' - } - }, - j_bunc_astigmatism = { - ['name'] = 'Astigmatismo', - ['text'] = { - [1] = '{C:hearts}Copas{} e {C:diamonds}Ouros{}', - [2] = 'contam como {C:bunc_fleurons}Florões' - } - }, - j_bunc_roygbiv = { - ['name'] = 'Roy G. Biv', - ['text'] = { - [1] = '{C:green}#1# de #2#{} chance de adicionar', - [2] = '{C:dark_edition}Policromático{} a uma', - [3] = 'carta pontuada aleatória se a', - [4] = 'mão contém um {C:attention}Espectro' - } - }, - j_bunc_rigoletto = { - ['name'] = 'Rigoletto', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi por carta {C:bunco_exotic}Exótica{}', - [2] = 'no seu {C:attention}baralho completo', - [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' - }, - ['unlock'] = { - [1] = '{E:1,s:1.3}?????' - } - }, - }, - Blind = { - bl_bunc_paling = { - ['name'] = 'A Palidez', - ['text'] = { - [1] = 'Jogar ou Descartar custa', - [2] = 'ambos mão e descarte' - } - }, - bl_bunc_umbrella = { - ['name'] = 'O Guarda-Chuva', - ['text'] = { - [1] = 'Após Jogar, vire todas as', - [2] = 'cartas na mão de cabeça para baixo' - } - }, - bl_bunc_tine = { - ['name'] = 'A Ponta', - ['text'] = { - [1] = 'Cada #1# recebe desvantagem' - } - }, - bl_bunc_swing = { - ['name'] = 'O Balanço', - ['text'] = { - [1] = 'Após Jogar ou Descartar,', - [2] = 'vire todas as cartas' - } - }, - bl_bunc_miser = { - ['name'] = 'O Avarento', - ['text'] = { - [1] = 'Pule a loja após', - [2] = 'derrotar este blind' - } - }, - bl_bunc_gate = { - ['name'] = 'O Portão', - ['text'] = { - [1] = 'Cartas não podem', - [2] = 'ser desselecionadas' - } - }, - bl_bunc_flame = { - ['name'] = 'A Chama', - ['text'] = { - [1] = 'Todas as cartas Aprimoradas', - [2] = 'recebem desvantagem' - } - }, - bl_bunc_mask = { - ['name'] = 'A Máscara', - ['text'] = { - [1] = '#1# tem as Fichas', - [2] = 'e Multi base de #2#' - } - }, - bl_bunc_bulwark = { - ['name'] = 'O Baluarte', - ['text'] = { - [1] = 'Jogar um #1# descarta', - [2] = 'todas as cartas da mão' - } - }, - bl_bunc_knoll = { - ['name'] = 'O Inchaço', - ['text'] = { - [1] = 'Ter mais que $5 aplica', - [2] = 'desvantagem à primeira mão retirada' - } - }, - bl_bunc_stone = { - ['name'] = 'A Pedra', - ['text'] = { - [1] = '+1X Base por', - [2] = 'cada $10 possuído' - } - }, - bl_bunc_sand = { - ['name'] = 'A Areia', - ['text'] = { - [1] = '+1X Base por', - [2] = 'cada marca possuída' - } - }, - bl_bunc_blade = { - ['name'] = 'A Lâmina', - ['text'] = { - [1] = 'Primeira vez que a pontuação exceder #1#', - [2] = 'faz a puntuação da mão ser 0' - } - }, - bl_bunc_claw = { - ['name'] = 'A Garra', - ['text'] = { - [1] = 'Cartas descartadas', - [2] = 'voltam para o baralho' - } - }, - bl_bunc_veil = { - ['name'] = 'O véu', - ['text'] = { - [1] = 'Cartas selecionadas', - [2] = 'são viradas de cabeça para baixo' - } - }, - bl_bunc_cadaver = { - ['name'] = 'O Cadáver', - ['text'] = { - [1] = 'Não deve jogar cartas de realeza' - } - }, - bl_bunc_wind = { - ['name'] = 'O Vento', - ['text'] = { - [1] = 'O Curinga mais à esquerda', - [2] = 'recebe desvantagem' - } - }, - bl_bunc_prince = { - ['name'] = 'O Príncipe', - ['text'] = { - [1] = 'Todos os Curingas recebem desvantagem', - [2] = 'até a primeira mão ser jogada' - } - }, - bl_bunc_depths = { - ['name'] = 'As Profundezas', - ['text'] = { - [1] = 'Após jogar, ganhe uma Marca', - [2] = 'Eterna, Perecível ou Dispersiva' - } - }, - bl_bunc_chasm = { - ['name'] = 'O Abismo', - ['text'] = { - [1] = 'Após Jogar, ganhe uma Marca', - [2] = 'Travada, Reativa ou de Aluguel' - } - }, - - -- Final - - bl_bunc_final_crown = { - ['name'] = 'Coroa Verde-Amarela', - ['text'] = { - [1] = 'Todas as cartas de naipe de Espadas,', - [2] = 'Copas, Paus e Ouros recebem desvantagem' - } - }, - bl_bunc_final_trident = { - ['name'] = 'Tridente Carmesim', - ['text'] = { - [1] = 'Sem lojas nesta Aposta' - } - }, - bl_bunc_final_tower = { - ['name'] = 'Torre Índigo', - ['text'] = { - [1] = 'Cartas não jogadas anteriormente', - [2] = 'nesta Aposta recebem desvantagem' - } - }, - bl_bunc_final_dagger = { - ['name'] = 'Adaga Magenta', - ['text'] = { - [1] = 'Descartar cartas as joga', - [2] = 'e subtrai o valor pontuado' - } - }, - bl_bunc_final_shield = { - ['name'] = 'Escudo Turquesa', - ['text'] = { - [1] = 'Pontuação em excesso desta Aposta', - [2] = "aumenta a pontuação requeria por este Blind" - } - } - }, - Back = { - b_bunc_fairy = { - ['name'] = 'Baralho de Fadas', - ['text'] = { - [1] = 'Após derrotar cada', - [2] = '{C:attention}Blind de chefe{}, adicione #1#', - [3] = '{C:bunco_exotic,T:bunc_exotic_cards}#2#{} aleatórias', - [4] = 'ao seu baralho' - }, - ['unlock'] = { - [1] = 'Jogue {E:1,C:attention}5 naipes diferentes', - [2] = 'em uma única mão' - } - }, - b_bunc_digital = { - ['name'] = 'Baralho Digital', - ['text'] = { - [1] = 'Cartas de {C:bunco_virtual_dark}Polymino{}', - [2] = 'podem aparecer na loja,', - [3] = "comece com uma {C:bunco_virtual_dark,T:c_bunc_the_i}Forma I{}" - } - } - }, - Tag = { - - -- Reworked - - tag_bunc_boss = { - ['name'] = 'Marca de Chefe', - ['text'] = { - [1] = 'Dá um', - [2] = '{C:attention}Pacote de Blinds' - } - }, - tag_bunc_double = { - ['name'] = 'Marca Dupla', - ['text'] = { - [1] = 'Dá uma cópia da', - [2] = 'próxima {C:attention}Marca{} selecionada', - [3] = '{s:0.8}Exceto{s:0.6,C:attention}Marcas Duplas e Triplas{}' - } - }, - - -- Main Tags - - tag_bunc_breaking = { - ['name'] = 'Marca Interruptora', - ['text'] = { - [1] = 'Desativa o', - [2] = '{C:attention}Blind de Chefe{}' - } - }, - tag_bunc_arcade = { - ['name'] = 'Marca de Fliper', - ['text'] = { - [1] = 'Dá um', - [2] = '{C:bunco_virtual_dark}Pacote Virtual Mega' - } - }, - tag_bunc_triple = { - ['name'] = 'Marca Tripla', - ['text'] = { - [1] = 'Dá duas cópias da', - [2] = 'próxima {C:attention}Marca{} selecionada', - [3] = '{s:0.8}Exceto {s:0.8,C:attention}Marca Tripla{}' - } - }, - - -- Edition tags - - tag_bunc_glitter = { - ['name'] = 'Marca de Glitter', - ['text'] = { - [1] = 'O próximo Curinga da loja de', - [2] = 'edição de base é grátis', - [3] = 'e torna-se {C:dark_edition}Glitter' - } - }, - tag_bunc_fluorescent = { - ['name'] = 'Marca Fluorescente', - ['text'] = { - [1] = 'O próximo Curinga da loja de', - [2] = 'edição de base é grátis', - [3] = 'e torna-se {C:dark_edition}Fluorescente' - } - }, - - -- Consumable edition tags - - tag_bunc_chips = { - ['name'] = 'Marca de Fichas', - ['text'] = { - [1] = '{C:chips}+#1#{} Fichas na próxima mão' - } - }, - tag_bunc_mult = { - ['name'] = 'Marca de Multi', - ['text'] = { - [1] = '{C:mult}+#1#{} Multi na próxima mão', - } - }, - tag_bunc_xmult = { - ['name'] = 'Marca Megamulti', - ['text'] = { - [1] = '{X:mult,C:white}X#1#{} Multi na próxima mão', - } - }, - tag_bunc_xchips = { - ['name'] = 'Marca Ultrafichas', - ['text'] = { - [1] = '{X:chips,C:white}X#1#{} na próxima mão' - } - }, - - -- Exotic tags - - tag_bunc_filigree = { - ['name'] = 'Marca Filigrana', - ['text'] = { - [1] = 'O próximo {C:attention}Pacote Padrão{} aberto', - [2] = 'terá apenas cartas {C:bunco_exotic}Exóticas' - } - }, - - -- Anti-tags - - tag_bunc_eternal = { - ['name'] = 'Marca Eterna', - ['text'] = { - [1] = 'O próximo Curinga da loja', - [2] = 'receberá um adesivo {C:attention}Eterno{}' - } - }, - tag_bunc_perishable = { - ['name'] = 'Marca Perecível', - ['text'] = { - [1] = 'O próximo Curinga da loja', - [2] = 'receberá um adesivo {C:attention}Prececível{}' - } - }, - tag_bunc_scattering = { - ['name'] = 'Marca Dispersiva', - ['text'] = { - [1] = 'O próximo Curinga da loja', - [2] = 'receberá um adesivo {C:attention}Dispersivo{}' - } - }, - tag_bunc_hindered = { - ['name'] = 'Marca Travada', - ['text'] = { - [1] = 'O próximo Curinga da loja', - [2] = 'receberá um adesivo {C:attention}Travado{}' - } - }, - tag_bunc_reactive = { - ['name'] = 'Marca Reativa', - ['text'] = { - [1] = 'O próximo Curinga da loja', - [2] = 'receberá um adesivo {C:attention}Reativo{}' - } - }, - tag_bunc_rental = { - ['name'] = 'Marca de Aluguel', - ['text'] = { - [1] = 'O próximo Curinga da loja', - [2] = 'receberá um adesivo {C:attention}de Aluguel{}' - } - } - }, - Edition = { - e_bunc_glitter = { - ['name'] = 'Glitter', - ['text'] = { - [1] = '{X:chips,C:white}X#1#{} Fichas' - } - }, - e_bunc_fluorescent = { - ['name'] = 'Fluorescente', - ['text'] = { - [1] = 'Não pode ser virado, selecionado', - [2] = 'forçadamente ou receber desvantagem' - } - } - }, - Voucher = { - v_bunc_lamination = { - ['name'] = 'Laminação', - ['text'] = { - [1] = 'Consumíveis nos', - [2] = '{C:attention}Pacotes de reforço{}', - [3] = 'podem ter uma {C:dark_edition}Edição' - } - }, - v_bunc_supercoating = { - ['name'] = 'Super Revestimento', - ['text'] = { - [1] = 'Todos os consumíveis nos', - [2] = '{C:attention}Pacotes de Reforço{}', - [3] = 'terão uma {C:dark_edition}Edição' - }, - ['unlock'] = { - [1] = 'Use {C:attention,E:1}#1#{} consumíveis', - [2] = 'com {C:attention,E:1}Edições', - [3] = '{C:inactive}(#2#)' - } - }, - v_bunc_hedge_trimmer = { - ['name'] = 'Corta-Sebes', - ['text'] = { - [1] = "Reduza a pontuação do Blind", - [2] = 'em {C:attention}#1#%{} a cada mão jogada' - } - }, - v_bunc_chainsaw = { - ['name'] = 'Motosserra', - ['text'] = { - [1] = 'Todas as pontuações requeridas', - [2] = 'são reduzidas em {C:attention}#1#%{}' - }, - ['unlock'] = { - [1] = "Reduza a pontuação do blind", - [2] = 'usando Hedge Trimmer', - [3] = '{C:attention,E:1}#1#{} vezes, no total', - [4] = '{C:inactive}(#2#)' - } - }, - v_bunc_cups_n_balls = { - ['name'] = "Copos e Bolas", - ['text'] = { - [1] = '{C:attention}+1{} Pacote de Reforço', - [2] = 'disponível em cada loja' - } - }, - v_bunc_shell_game = { - ['name'] = 'Jogo dos Copos', - ['text'] = { - [1] = 'Atualize o {C:attention}conteúdo', - [2] = 'dos Pacotes de Reforço', - [3] = '{C:attention}1{} vez por pacote' - }, - ['unlock'] = { - [1] = 'Abra {E:1,C:attention}#1#', - [2] = 'Pacotes de Reforço', - [3] = '{C:inactive}(#2#)' - } - }, - v_bunc_disguise = { - ['name'] = 'Disfarce', - ['text'] = { - [1] = '{C:attention}Pacotes de Blinds{} podem', - [2] = 'aparecer na loja' - } - }, - v_bunc_masquerade = { - ['name'] = 'Dissimulação', - ['text'] = { - [1] = 'Todos os {C:attention}Pacotes de Blinds{}', - [2] = 'na loja são grátis' - }, - ['unlock'] = { - [1] = 'Troque {E:1,C:attention}#1#{}', - [2] = 'Blinds por Blinds', - [3] = 'dos Pacotes de Blinds', - [4] = '{C:inactive}(#2#)' - } - }, - v_bunc_fanny_pack = { - ['name'] = 'Pochete', - ['text'] = { - [1] = '{C:green}#1# de #2#{} chance de', - [2] = 'ganhar uma {C:attention}Marca Dupla', - [3] = 'toda vez que um', - [4] = 'Blind é {C:attention}pulado' - } - }, - v_bunc_pin_collector = { - ['name'] = 'Colecionador de Broches', - ['text'] = { - [1] = 'Todas as próximas {C:attention}Marcas Duplas', - [2] = 'aparecerão como {C:attention}Marcas Triplas' - }, - ['unlock'] = { - [1] = 'Pule um total de ', - [2] = '{E:1,C:attention}#1#{} Blinds', - [3] = '{C:inactive}(#2#)' - } - }, - v_bunc_arcade_machine = { - ['name'] = 'Máquina de Fliper', - ['text'] = { - [1] = '{C:bunco_virtual_dark}Pacotes Virtuais', - [2] = 'aparecem {C:attention}4X{} mais frequentemente' - } - }, - v_bunc_polybius = { - ['name'] = 'Polybius', - ['text'] = { - [1] = 'Cartas de {C:bunco_virtual_dark}Polymino{} podem', - [2] = 'vincular {C:attention}mais uma{} carta', - [3] = '{s:0.6,C:inactive}A carta extra pode ser de qualquer propriedade' - }, - ['unlock'] = { - [1] = 'Crie um total de', - [2] = '{E:1,C:attention}#1#{} grupos vinculados', - [3] = '{C:inactive}(#2#)' - } - } - }, - Enhanced = { - m_bunc_copper = { - ['name'] = 'Carta de Cobre', - ['text'] = { - [1] = 'Repontua se jogada', - [2] = '{C:attention}adjacente{} a outra', - [3] = 'Carta de Cobre pontuada' - }, - }, - }, - Stake = { - stake_bunc_cyan = { - ['name'] = 'Aposta Ciana', - ['text'] = { - [1] = 'A loja pode ter Curingas {C:attention}Dispersivos{}', - [2] = '{C:inactive,s:0.8}(Destrói um Curinga aleatório quando vendido ou destruído)' - } - }, - stake_bunc_pink = { - ['name'] = 'Aposta Rosa', - ['text'] = { - [1] = 'A loja pode ter Curingas {C:attention}Travados{}', - [2] = '{C:inactive,s:0.8}(Fica travado no lugar até o fim da rodada após ser vendido)' - } - }, - stake_bunc_magenta = { - ['name'] = 'Aposta Magenta', - ['text'] = { - [1] = 'A loja pode ter Curingas {C:attention}Reativos{}', - [2] = '{C:inactive,s:0.8}(Recebe desvantagem se nenhum Blind for pulado nesta Aposta)' - } - } - } - } -} +return { + misc = { + dictionary = { -- Brazilian Portuguese translation by PinkMaggit. [Qualquer sugestão ou crítica, só me mandar mensagem no discord. Meu nick: pink.maggit] + + -- Config values + + bunc_colorful_finishers = 'Blinds Coloridos no Final', + bunc_colorful_finishers_desc = 'Ativa fundos coloridos para os Blinds finais', + bunc_colorful_finishers_desc_2 = 'e remove o fundo cinza no Modo Infinito', + + bunc_high_quality_shaders = 'Shaders de Alta Qualidade', + bunc_high_quality_shaders_desc = 'Faz com que alguns dos shaders do jogo base', + bunc_high_quality_shaders_desc_2 = 'sejam renderizados em alta qualidade (pode causar lag)', + + bunc_fixed_sprites = 'Sprites Ajustados', + bunc_fixed_sprites_desc = 'Ajusta alguns sprites de forma sutil, removendo', + bunc_fixed_sprites_desc_2 = 'pixels fora do lugar e melhorando consistência e contraste', + + bunc_gameplay_reworks = 'Revisões de Jogabilidade', + bunc_gameplay_reworks_desc = 'Revisa algumas mecânicas do jogo base', + bunc_gameplay_reworks_desc_2 = 'para tornar o jogo mais agradável', + + bunc_fixed_badges = 'Informações Corrigidas', + bunc_fixed_badges_desc = 'Altera as badges dos consumíveis substituindo textos confusos', + bunc_fixed_badges_desc_2 = 'por indicações de como obtê-las', + + bunc_jokerlike_consumable_editions = 'Edições no Slot de Consumíveis', + bunc_jokerlike_consumable_editions_desc = 'Restaura o comportamento padrão dos consumíveis com', + bunc_jokerlike_consumable_editions_desc_2 = 'edições que agem como Jokers (para outros mods conflitantes)', + + bunc_default_true = 'Ativado por padrão', + bunc_default_false = 'Desativado por padrão', + bunc_requires_restart = 'Requer reinício do jogo', + + -- Miscellaneous + + bunc_copied = 'Copiado!', + bunc_nothing = 'Nada', + bunc_chips = 'Fichas', + bunc_loop = 'Loop!', + bunc_chance = 'Chance', + bunc_word_and = 'e', + bunc_debuffed = 'Desvantagem!', + bunc_pew = 'Pew!', + bunc_declined = 'Recusado...', + bunc_accepted = 'Aceito!', + bunc_ouch = 'AI!', + bunc_repeat = 'De novo!', + bunc_thoth_tarot = 'Tarô de Tote', + bunc_mysterious_tarot = 'Tarô?', + bunc_mysterious_polymino = 'Polymino?', + bunc_most_played_rank = '(classe mais jogada)', + bunc_least_played_hand = '(mão menos jogada)', + bunc_blade = '(1.5X pontuação de blind)', + bunc_exceeded_score = 'Limite excedido!', + bunc_volume = 'Volume', + + -- Consumable types + + k_polymino = 'Polymino', + b_polymino_cards = 'Cartas de Polymino', + + -- Booster types + + k_bunc_blind_pack = 'Pacote de Blinds', + k_bunc_virtual_pack = 'Pacote Virtual' + }, + + -- Suits + + suits_singular = { + bunc_Fleurons = 'Florão', + bunc_Halberds = 'Alabarda' + }, + suits_plural = { + bunc_Fleurons = 'Florões', + bunc_Halberds = 'Alabardas' + }, + + -- Poker hands + + poker_hands = { + ['bunc_Spectrum'] = 'Espectro', + ['bunc_Straight Spectrum'] = 'Sequência Espectral', + ['bunc_Straight Spectrum (Royal)'] = 'Espectro Real', + ['bunc_Spectrum House'] = 'Espectro House', + ['bunc_Spectrum Five'] = 'Espectro Five', + ['bunc_Deal'] = 'Fechou' + }, + poker_hand_descriptions = { + ['bunc_Spectrum'] = { + [1] = '5 cartas com naipes diferentes' + }, + ['bunc_Straight Spectrum'] = { + [1] = '5 cartas em sequência (classes consecutivas),', + [2] = 'cada uma com um naipe diferente' + }, + ['bunc_Spectrum House'] = { + [1] = 'Uma Trinca e um Par com', + [2] = 'cada carta tendo um naipe diferente' + }, + ['bunc_Spectrum Five'] = { + [1] = '5 cartas com a mesma classe,', + [2] = 'cada uma com um naipe diferente' + }, + ['bunc_Deal'] = { + [1] = '5 classes escolhidas', + [2] = 'pela Placa de Carro' + } + }, + labels = { + + -- Editions + + bunc_glitter = 'Glitter', + bunc_fluorescent = 'Fluorescente', + + -- Stickers + + bunc_scattering = 'Dispersivo', + bunc_hindered = 'Travado', + bunc_reactive = 'Reativo' + } + }, + descriptions = { + Other = { + bunc_temporary_extra_chips = {['text'] = {[1] = '{C:chips}+#1#{} fichas extra nesta rodada'}}, + bunc_linked_cards = {['text'] = {[1] = '{C:attention}Vinculadas{} neste grupo:'}}, + bunc_drawn_linked_cards = {['text'] = {[1] = '{C:attention}Vinculadas{} no grupo retirado'}}, + bunc_exotic_cards = { + ['name'] = 'Cartas Exóticas', + ['text'] = { + [1] = 'Cartas com naipe de', + [2] = '{C:bunc_fleurons}Florões{} ou {C:bunc_halberds}Alabardas{}' + } + }, + + -- Undiscovered + + undiscovered_polymino = { + ['name'] = 'Não descoberto', + ['text'] = { + [1] = 'Compre ou use', + [2] = 'esta carta em uma', + [3] = 'tentativa sem código', + [4] = 'para saber o que ela faz' + } + }, + + -- Booster Packs + + p_bunc_blind = { + ['name'] = 'Pacote de Blinds', + ['text'] = { + [1] = 'Escolha um de até', + [2] = '{C:attention}#1# Blinds de Chefe{} para', + [3] = 'substituir nesta Aposta' + } + }, + p_bunc_virtual_normal = { + ['name'] = 'Pacote Virtual', + ['text'] = { + [1] = 'Compre o baralho inteiro e', + [2] = 'escolha {C:attention}#1#{} de até', + [3] = '{C:attention}#2#{} cartas de{C:bunco_virtual_dark} Polymino{} para', + [4] = 'usar imediatamente' + } + }, + p_bunc_virtual_jumbo = { + ['name'] = 'Pacote Virtual Jumbo', + ['text'] = { + [1] = 'Compre o baralho inteiro e', + [2] = 'escolha {C:attention}#1#{} de até', + [3] = '{C:attention}#2#{} cartas de{C:bunco_virtual_dark} Polymino{} para', + [4] = 'usar imediatamente' + } + }, + p_bunc_virtual_mega = { + ['name'] = 'Pacote Virtual Mega', + ['text'] = { + [1] = 'Compre o baralho inteiro e', + [2] = 'escolha {C:attention}#1#{} de até', + [3] = '{C:attention}#2#{} cartas de{C:bunco_virtual_dark} Polymino{} para', + [4] = 'usar imediatamente' + } + }, + + -- Stickers + + bunc_scattering = { + ['name'] = 'Dispersivo', + ['text'] = { + [1] = 'Destrói um Curinga', + [2] = 'aleatório quando', + [3] = 'removido' + } + }, + bunc_hindered = { + ['name'] = 'Travado', + ['text'] = { + [1] = 'Fica travado no lugar', + [2] = 'até o fim da rodada', + [3] = 'após ser vendido' + } + }, + bunc_reactive = { + ['name'] = 'Reativo', + ['text'] = { + [1] = 'Recebe desvantagem se nenhum', + [2] = 'Blind for pulado nesta Aposta' + } + }, + + -- Stake stickers + + bunc_cyan_sticker = { + ['name'] = 'Adesivo Ciano', + ['text'] = { + [1] = 'Usou este Curinga', + [2] = 'para vencer na dificuldade', + [3] = '{C:attention}Aposta Ciana{}' + } + }, + bunc_pink_sticker = { + ['name'] = 'Adesivo Rosa', + ['text'] = { + [1] = 'Usou este Curinga', + [2] = 'para vencer na dificuldade', + [3] = '{C:attention}Aposta Rosa{}' + } + }, + bunc_magenta_sticker = { + ['name'] = 'Adesivo Magenta', + ['text'] = { + [1] = 'Usou este Curinga', + [2] = 'para vencer na dificuldade', + [3] = '{C:attention}Aposta Magenta{}' + } + } + }, + + -- Consumables + + Tarot = { + c_bunc_art = { + ['name'] = 'A Arte', + ['text'] = { + [1] = 'Aprimora {C:attention}#1#{}', + [2] = 'cartas elecionadas para', + [3] = '{C:attention}#2#s' + } + }, + c_bunc_sky = { + ['name'] = 'O Céu', + ['text'] = { + [1] = 'Converte até', + [2] = '{C:attention}#1#{} cartas selecionadas', + [3] = 'para {C:bunc_fleurons}Florões{}' + } + }, + c_bunc_abyss = { + ['name'] = 'O Abismo', + ['text'] = { + [1] = 'Converte até', + [2] = '{C:attention}#1#{} cartas selecionadas', + [3] = 'para {C:bunc_halberds}Alabardas{}' + } + }, + }, + Planet = { + c_bunc_quaoar = { + ['name'] = 'Quaoar' + }, + c_bunc_haumea = { + ['name'] = 'Haumea' + }, + c_bunc_sedna = { + ['name'] = 'Sedna' + }, + c_bunc_makemake = { + ['name'] = 'Makemake' + }, + }, + Spectral = { + c_bunc_cleanse = { + ['name'] = 'Purificar', + ['text'] = { + [1] = 'Adiciona {C:dark_edition}Fluorescente{} para', + [2] = '{C:attention}#1#{} cartas selecionadas na mão' + } + }, + c_bunc_the_8 = { + ['name'] = 'Forma 8', + ['text'] = { + [1] = '{C:attention}Vincula{} qualquer', + [2] = 'número de cartas selecionadas', + [3] = 'na mão que estejam desvinculadas', + [4] = '{C:inactive,s:0.6}(Seleção ilimitada enquanto a Forma 8 está selecionada)' + } + } + }, + Polymino = { + c_bunc_the_i = { + ['name'] = 'Forma I', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'que têm a {C:attention}mesma classe ou naipe' + } + }, + c_bunc_the_o = { + ['name'] = 'Forma O', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde 2 cartas têm a {C:attention}mesma propriedade', + [3] = '{C:inactive}(classe ou naipe){} e as outras 2 cartas', + [4] = 'têm um {C:attention}tipo diferente{} da {C:attention}mesma propriedade' + } + }, + c_bunc_the_t = { + ['name'] = 'Forma T', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde 3 cartas têm a {C:attention}mesma propriedade', + [3] = '{C:inactive}(classe ou naipe){} e a outra carta', + [4] = '{C:attention}não possui{} a {C:attention}mesma propriedade{}', + [5] = 'das outras cartas' + } + }, + c_bunc_the_s = { + ['name'] = 'Forma S', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde {C:attention}2 grupos{} de 2 cartas têm', + [3] = 'a {C:attention}mesma classe{} dentro de cada grupo, com uma', + [4] = 'carta de cada grupo compartilhando um {C:attention}naipe comum' + } + }, + c_bunc_the_z = { + ['name'] = 'Forma Z', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde {C:attention}2 grupos{} de 2 cartas têm', + [3] = 'o {C:attention}mesmo naipe{} dentro de cada grupo, com uma', + [4] = 'carta de cada grupo compartilhando uma {C:attention}classe comum' + } + }, + c_bunc_the_j = { + ['name'] = 'Forma J', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde 3 cartas têm a {C:attention}mesma classe', + [3] = 'e a outra carta que tem', + [4] = 'um {C:attention}naipe em comum{} porém', + [5] = 'não tem a mesma classe das outras' + } + }, + c_bunc_the_l = { + ['name'] = 'Forma L', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde 3 cartas têm o {C:attention}mesmo naipe', + [3] = 'e a outra carta que tem', + [4] = 'uma {C:attention}classe em comum{} porém', + [5] = 'não tem o mesmo naipe das outras' + } + }, + c_bunc_the_slash = { + ['name'] = 'Forma /', + ['text'] = { + [1] = '{C:attention}Vincula{} 4 cartas selecionadas', + [2] = 'onde todas as cartas têm', + [3] = '{C:attention}propriedades diferentes{} {C:inactive}(classe e naipe)' + } + } + }, + Joker = { + + -- Reworked Jokers + + j_bunc_luchador = { + ['name'] = 'Luchador', + ['text'] = { + [1] = 'Venda esta carta', + [2] = 'para criar uma', + [3] = '{C:attention}Marca Interruptora' + } + }, + j_bunc_red_card = { + ['name'] = 'Red Card', + ['text'] = { + [1] = 'This Joker gains {C:red}+#1#{} Multi', + [2] = 'per skipped choice', + [3] = 'in {C:attention}Booster Pack{}', + [4] = '{C:inactive}(No momento, {C:red}+#2#{C:inactive} Multi)' + } + }, + + -- Main Jokers + + j_bunc_cassette_a = { + ['name'] = 'Cassete (Lado A)', + ['text'] = { + [1] = 'Cartas com naipe claro dão', + [2] = '{C:chips}+#1#{} Fichas quando pontuadas', + } + }, + j_bunc_cassette_b = { + ['name'] = 'Cassete (Lado B)', + ['text'] = { + [1] = 'Cartas com naipe escuro dão', + [2] = '{C:mult}+#2#{} Multi quando pontuadas' + } + }, + j_bunc_cassette_extra = { + ['text'] = { + [1] = 'Ao descartar, vire o Curinga para o outro lado', + } + }, + j_bunc_mosaic = { + ['name'] = 'Curinga Mosaico', + ['text'] = { + [1] = '{C:attention}Cartas de Pedra', + [2] = 'dão {C:mult}+#1#{} Multi', + [3] = 'quando pontuadas' + }, + ['unlock'] = { + [1] = 'Jogue uma mão de 5 cartas', + [2] = 'que contém apenas', + [3] = '{C:attention,E:1}Cartas de Pedra{}' + } + }, + j_bunc_voxel = { + ['name'] = 'Curinga Voxelizado', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi, {X:mult,C:white}-X#2#{} Multi por cada', + [2] = 'carta {C:attention}Aprimorada{} no seu {C:attention}baralho completo{}', + [3] = '{C:inactive}(No momento, {X:mult,C:white}X#3#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = 'Tenha ao menos {C:attention}#1#', + [2] = 'cartas {E:1,C:attention}Aprimoradas{} no', + [3] = 'seu baralho' + } + }, + j_bunc_crop_circles = { + ['name'] = 'Agroglifos', + ['text'] = { + [1] = 'Cartas de {C:clubs}Paus{} dão {C:mult}+3{} Multi,', + [2] = '{C:attention}8s{} dão {C:mult}+2{} Multi,', + [3] = '{C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} dão {C:mult}+1{} Multi' + } + }, + j_bunc_crop_circles_exotic = { + ['name'] = 'Agroglifos', + ['text'] = { + [1] = 'Cartas de {C:bunc_fleurons}Florões{} dão {C:mult}+4{} Multi,', + [2] = 'Cartas de {C:clubs}Paus{} dão {C:mult}+3{} Multi,', + [3] = '{C:attention}8s{} dão {C:mult}+2{} Multi,', + [4] = '{C:attention}Qs{}, {C:attention}10s{}, {C:attention}9s{}, {C:attention}6s{} dão {C:mult}+1{} Multi' + } + }, + j_bunc_xray = { + ['name'] = 'Raio X', + ['text'] = { + [1] = 'Este Curinga ganha {X:mult,C:white}X#1#{} Multi', + [2] = 'por carta comprada virada para baixo', + [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = 'Complete o desafio', + [2] = '{E:1,C:attention}Visão de Raio X' + } + }, + j_bunc_dread = { + ['name'] = 'Pavor', + ['text'] = { + [1] = 'Após pontuar sua {C:attention}última{} mão,', + [2] = 'aprimore-a em {C:attention}#1# níveis{}', + [3] = 'e {C:attention}destrua{} as cartas pontuadas', + [4] = '{C:inactive,s:0.8}Todos os níveis dados por este Curinga', + [5] = '{C:inactive,s:0.8}serão perdidos, caso seja removido' + }, + ['unlock'] = { + [1] = 'Reduza seu baralho', + [2] = 'em ao menos {E:1,C:attention}#1#{} cartas', + [3] = 'em uma rodada' + } + }, + j_bunc_prehistoric = { + ['name'] = 'Curinga Pré-Histórico', + ['text'] = { + [1] = 'Cartas jogadas que compartilham', + [2] = 'da mesma {C:attention}classe e naipe{} de uma', + [3] = '{C:attention}carta já pontuada{} nesta rodada', + [4] = 'dão {C:mult}+#1#{} Multi' + }, + ['unlock'] = { + [1] = 'Jogue um', + [2] = '{E:1,C:attention}Flush Five' + } + }, + j_bunc_linocut = { + ['name'] = 'Curinga Linoleogravado', + ['text'] = { + [1] = 'Quando você joga exatamente {C:attention}2{} cartas', + [2] = 'que formam um {C:attention}Par{},', + [3] = "converta o naipe da carta da {C:attention}esquerda{}", + [4] = "para o naipe da carta da {C:attention}direita{}", + [5] = '{C:inactive}(Arraste para reorganizar)' + -- TODO this joker is a bit wordy + } + }, + j_bunc_ghost_print = { + ['name'] = 'Impressão Fantasma', + ['text'] = { + [1] = 'Dá as Fichas e Multi', + [2] = 'da última {C:attention}mão de pôquer{} jogada', + [3] = '{C:inactive}(Última mão: #1#)' + } + }, + j_bunc_loan_shark = { + ['name'] = 'Agiota', + ['text'] = { + [1] = 'Receba {C:money}$#1#', + [2] = 'quando adquirido...' + }, + ['unlock'] = { + [1] = 'Gaste ao menos {E:1,C:attention}$100', + [2] = 'durante uma única rodada' + } + }, + j_bunc_loan_shark_full = { + ['name'] = 'Agiota', + ['text'] = { + [1] = 'Receba {C:money}$#1#{} quando adquirido,', + [2] = 'mas o preço de venda é {C:money}$-100' + } + }, + j_bunc_basement = { + ['name'] = 'Curinga do Porão', + ['text'] = { + [1] = 'Quando um {C:attention}Blind de chefe{} é derrotado,', + [2] = 'crie uma carta {C:spectral}Espectral{}', + [3] = '{C:inactive}(Deve ter espaço)' + } + }, + j_bunc_shepherd = { + ['name'] = 'Curinga Pastor', + ['text'] = { + [1] = 'este Curinga ganha {C:chips}+#1#{} Fichas', + [2] = 'quando a mão jogada contém um {C:attention}Par', + [3] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' + } + }, + j_bunc_knight = { + ['name'] = 'Curinga Cavaleiro', + ['text'] = { + [1] = 'Quando o {C:attention}Blind{} é selecionado, {C:attention}embaralhe{} todos os', + [2] = 'Curingas e este Curinga ganha {C:mult}+#1#{} Multi,', + [3] = '{C:red}reseta{} quando qualquer Curinga é reorganizado', + [4] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = 'Derrote a {E:1,C:attention}Semente Dourada', + [2] = 'sem desabilitá-la' + } + }, + j_bunc_jmjb = { + ['name'] = 'Carta Joker Man & Jester Boy Nº 54', + ['text'] = { + [1] = '{C:attention}Pacotes Padrão{} contém', + [2] = 'apenas cartas {C:attention}Aprimoradas{}' + }, + ['unlock'] = { + [1] = 'Abra {E:1,C:attention}#1#', + [2] = 'Pacotes de Reforço', + [3] = '{C:inactive}(#2#)' + } + }, + j_bunc_dogs_playing_poker = { + ['name'] = 'Cães Jogando Pôquer', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi se todas as classes', + [2] = 'pontuadas são {C:attention}2{}, {C:attention}3{}, {C:attention}4{}, ou {C:attention}5' + } + }, + j_bunc_righthook = { + ['name'] = 'Gancho de Direita', + ['text'] = { + [1] = 'Reative a carta que pontua mais à direita', + [2] = 'uma vez por cada {C:blue}mão{} restante', + }, + ['unlock'] = { + [1] = 'Reative uma carta', + [2] = 'jogada ao menos', + [3] = '{E:1,C:attention}#1# vezes{}' + } + }, + j_bunc_fiendish = { + ['name'] = 'Curinga Diabólico', + ['text'] = { + [1] = 'Dobre todas as fontes de dinheiro,', + [2] = '{C:green}#1# de #2#{} chance de receber', + [3] = '{C:money}$1{} ao invés do valor esperado' + }, + ['unlock'] = { + [1] = 'Complete o desafio', + [2] = '{E:1,C:attention}O Dobro ou Nada' + } + }, + j_bunc_carnival = { + ['name'] = 'Carnaval', + ['text'] = { + [1] = 'Após derrotar o {C:attention}Blind de Chefe{},', + [2] = '{C:attention}destrua{} um Curinga aleatório para', + [3] = 'voltar uma Aposta, na próxima vez', + [4] = 'funcionará apenas numa Aposta maior' + -- TODO needs a line for whether it's active / ante it will be active + }, + ['unlock'] = { + [1] = 'Chegue na', + [2] = 'Aposta {E:1,C:attention}0' + } + }, + j_bunc_sledgehammer = { + ['name'] = 'Marreta', + ['text'] = { + [1] = '{C:attention}Cartas de Vidro{} dão +{X:mult,C:white}X#1#{} Multi', + [2] = 'mas quebram com certeza' + }, + ['unlock'] = { + [1] = 'Jogue uma mão de 5 cartas', + [2] = 'que contém apenas', + [3] = '{C:attention,E:1}Cartas de Vidro{}' + } + }, + j_bunc_doorhanger = { + ['name'] = 'Cartão de Porta', + ['text'] = { + [1] = 'Curingas {C:blue}Comuns{} não aparecem', + [2] = '{s:0.8}Outras raridades aparecem ao invés deles' + }, + ['unlock'] = { + [1] = 'Vença uma tentativa', + [2] = 'sem ter possuído', + [3] = 'Curingas {C:attention,E:1}Comuns{}' + } + }, + j_bunc_fingerprints = { + ['name'] = 'Impressões Digitais', + ['text'] = { + [1] = 'Cartas pontuadas na {C:attention}mão vencedora{}', + [2] = 'ganham {C:chips}+#1#{} Fichas', + [3] = 'na próxima rodada apenas', + } + }, + -- j_bunc_zero_shapiro = { + -- ['name'] = 'Zé Zero', + -- ['text'] = { + -- [1] = 'Este Curinga aumenta em {C:attention}#1#X{} as', + -- [2] = '{C:green,E:1,S:1.1}probabilidades{} {C:attention}nesta rodada{} quando uma', + -- [3] = 'carta com classe {C:attention}nula{}, {C:attention}zero{}, or {C:attention}incontável{}', + -- [4] = 'pontua {C:inactive}(K, Q, J, 0, Sem classe)', + -- [5] = '{C:inactive}(No momento, {C:attention}X#2#{C:inactive} {C:green,E:1,S:1.1}probabilidades{C:inactive})' + -- -- TODO not sure how to word non-countable + -- } + -- }, + j_bunc_nil_bill = { + ['name'] = 'Nil Bill', + ['text'] = { + [1] = 'Cartas com {C:attention}Desvantagem{}', + [2] = 'dão {C:money}$#1#{} quando pontuadas' + } + }, + j_bunc_bierdeckel = { + ['name'] = 'Tapete de Cerveja', + ['text'] = { + [1] = 'Cartas na mão ganham', + [2] = '{C:chips}+#1#{} Fichas nesta rodada', + [3] = 'após jogar ou descartar' + } + }, + j_bunc_registration_plate = { + ['name'] = 'Placa de Carro', + ['text'] = { + [1] = '#1#, #2#, #3#, #4# e #5#', + [2] = 'tem as Fichas e Multi de todas as', + [3] = '{C:attention}mãos de pôquer{} jogadas nesta tentativa', + [4] = '{s:0.8}A combinação muda a cada rodada' + }, + ['unlock'] = { + [1] = 'Complete o desafio', + [2] = '{E:1,C:attention}Cidade dos 15 Minutos' + } + }, + j_bunc_slothful = { + ['name'] = 'Curinga Preguiçoso', + ['text'] = { + [1] = '{C:attention}Cartas Naipe Curinga', + [2] = 'dão {C:mult}+#1#{} Multi', + [3] = 'quando pontuadas' + }, + ['unlock'] = { + [1] = 'Jogue uma mão de 5 cartas', + [2] = 'que contém apenas', + [3] = '{C:attention,E:1}Cartas Naipe Curinga{}' + } + }, + -- j_bunc_neon = { + -- ['name'] = 'Curinga Neon', + -- ['text'] = { + -- [1] = 'Este Curinga Ganha {X:mult,C:white}X#1#{} Multi', + -- [2] = 'por carta com {C:attention}desvantagem{} pontuada', + -- [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' + -- }, + -- ['unlock'] = { + -- [1] = 'Jogue uma mão de 5 cartas', + -- [2] = 'que contém apenas', + -- [3] = '{C:attention,E:1}Cartas com desvantagem{}' + -- } + -- }, + j_bunc_gameplan = { + ['name'] = 'Plano de Jogo', + ['text'] = { + [1] = '{C:attention}Curingas{} adjacentes', + [2] = 'sofrem {C:red}desvantagem{} e', + [3] = 'dão {C:mult}+#1#{} Multi' + }, + ['unlock'] = { + [1] = 'Derrote a {E:1,C:attention}Folha Verdejante', + [2] = 'sem desabilitá-la' + } + }, + j_bunc_conquest = { + ['name'] = 'Conquista', + ['text'] = { + [1] = '{C:chips}+#1#{} Fichas,', + [2] = 'um Curinga aleatório sofre {C:red}desvantagem{}', + [3] = 'quando o {C:attention}Blind{} é selecionado' + }, + ['unlock'] = { + [1] = 'Derrote o {E:1,C:attention}Coração Rubro', + [2] = 'sem desabilitá-lo' + } + }, + j_bunc_hierarchy_of_needs = { + ['name'] = 'Hierarquia de Necessidades', + ['text'] = { + [1] = '{C:mult}+#1#{} Multi por', + -- TODO do wilds count, or base suit only? + [2] = '{C:attention}2-Ás{} do mesmo naipe', + [3] = 'no seu {C:attention}baralho completo', + [4] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' + } + }, + j_bunc_dwarven = { + ['name'] = 'Curinga Anão', + ['text'] = { + [1] = '{C:attention}Cartas de Pedra{} contidas na mão', + [2] = 'têm as habilidades das', + [3] = '{C:attention}Cartas de Aço{} e de {C:attention}Ouro' + }, + ['unlock'] = { + [1] = 'Jogue uma mão que', + [2] = 'contém cartas de {E:1,C:attention}Pedra{},', + [3] = '{E:1,C:attention}Aço{} e {E:1,C:attention}Ouro{}' + } + }, + j_bunc_aristocrat = { + ['name'] = 'Aristocrata', + ['text'] = { + [1] = 'Escolha uma carta extra', + [2] = 'de {C:attention}Pacotes de Reforço' + }, + ['unlock'] = { + [1] = 'Vença uma tentativa sem', + [2] = 'abrir nenhum', + [3] = '{C:attention,E:1}Pacote de Reforço' + } + }, + j_bunc_metallurgist = { + ['name'] = 'Metalurgista', + ['text'] = { + [1] = '{C:attention}Cartas de Ouro{} dão {C:mult}+#1#{} Multi', + [2] = 'enquanto contidas na mão' + } + }, + j_bunc_juggalo = { + ['name'] = 'Juggalo', + ['text'] = { + [1] = 'Adiciona {C:dark_edition}Laminado{}, {C:dark_edition}Holográfico{},', + [2] = '{C:dark_edition}Policromático{}, ou {C:dark_edition}Glitter{}', + [3] = 'para um {C:attention}consumível{} aleatório', + [4] = 'quando o {C:attention}Blind{} é selecionado' + }, + ['unlock'] = { + [1] = 'Use {C:attention,E:1}#1#{} consumíveis', + [2] = 'com {C:attention,E:1}Edições' + } + }, + j_bunc_head_in_the_clouds = { + ['name'] = 'Cabeça nas Nuvens', + ['text'] = { + [1] = '{C:green}#1# de #2#{} chance de aprimorar', + [2] = '{C:attention}Carta Alta{} quando você', + [3] = 'aprimora qualquer {C:attention}mão de pôquer' + }, + ['unlock'] = { + [1] = 'Vença uma tentativa com', + [2] = '{C:attention,E:1}Carta Alta{} sendo', + [3] = 'a mão de pôquer de maior nível' + } + }, + j_bunc_headshot = { + ['name'] = 'Headshot', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi se a mão jogada', + [2] = 'contém apenas uma única', + [3] = 'carta de {C:attention}realeza{} pontuada' + } + }, + j_bunc_trigger_finger = { + ['name'] = 'Dedo no Gatilho', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi,', + [2] = '{C:attention}selecionar{} uma carta tem', + [3] = 'uma chance de {C:green}#2# em #3#{} de', + [4] = 'jogar as cartas selecionadas' + }, + ['unlock'] = { + [1] = 'Derrote o {E:1,C:attention}Sino Cerúleo', + [2] = 'sem desabilitá-lo' + } + }, + j_bunc_hopscotch = { + ['name'] = 'Amarelinha', + ['text'] = { + [1] = 'Ganhe {C:red}+#1#{} descarte', + [2] = 'se a mão jogada', + [3] = 'contém uma {C:attention}Sequência{}' + } + }, + j_bunc_pawn = { + ['name'] = 'Peão', + ['text'] = { + [1] = 'Cartas com a {C:attention}menor{}', + [2] = 'classe do seu baralho completo', + [3] = '{C:attention}aumentam a classe{} quando pontuadas', + [4] = '{C:inactive}(Current lowest rank: #1#)' + -- TODO "when scored" is only accurate + -- if the card's rank changes during scoring + } + }, + j_bunc_puzzle_board = { + ['name'] = 'Tabuleiro Quebra-Cabeça', + ['text'] = { + [1] = 'Quando uma carta de {C:tarot}Tarô{} é usada,', + [2] = '{C:green}#1# de #2#{} chance de adicionar', + [3] = '{C:dark_edition}Laminado{}, {C:dark_edition}Holográfico{}, ou', + [4] = '{C:dark_edition}Policromático{} a uma carta', + [5] = 'selecionada aleatória' + } + }, + j_bunc_vandalism = { + ['name'] = 'Vandalismo', + ['text'] = { + [1] = '{C:green}#1# de #2#{} chance de cartas', + [2] = 'serem compradas viradas pra baixo', + [3] = 'Cartas viradas para baixo dão', + [4] = '{X:mult,C:white}X#3#{} Multi quando pontuadas' + }, + ['unlock'] = { + [1] = 'Jogue uma mão de 5 cartas', + [2] = 'que contém apenas', + [3] = 'cartas {C:attention,E:1}Viradas{}' + } + }, + j_bunc_protester = { + ['name'] = 'Protestador', + ['text'] = { + [1] = 'Adiciona {C:attention}#1#X{} o valor da maior classe', + [2] = 'descartada essa rodada em Fichas', + [3] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' + } + }, + j_bunc_doodle = { + ['name'] = 'Rabisco', + ['text'] = { + [1] = '{C:attention}Copie{} o primeiro carta de', + [2] = '{C:tarot}Tarô{} ou {C:planet}Planeta{} usado nesta rodada', + [3] = '{C:inactive}(Deve ter espaço)' + }, + ['unlock'] = { + [1] = 'Vença {C:attention,E:1}#1#{} tentativas', + [2] = '{C:inactive}(#2#)' + } + }, + j_bunc_disproportionality = { + ['name'] = 'Desproporcionalidade', + ['text'] = { + [1] = '' + } + }, + j_bunc_running_joke = { + ['name'] = 'Piada Recorrente', + ['text'] = { + [1] = 'Crie um "{C:attention}Curinga{}"', + [2] = '{C:dark_edition}Negativo{} no início', + [3] = 'de cada loja' + } + }, + j_bunc_on_broadway = { + ['name'] = 'Na Broadway', + ['text'] = { + [1] = '{C:chips}+#1#{} Fichas e {C:mult}+#2#{} Multi se', + [2] = 'a mão jogada contém uma {C:attention}Sequência{}', + [3] = 'com uma carta de {C:attention}realeza{} pontuada' + } + }, + j_bunc_rasta = { + ['name'] = 'Rasta', + ['text'] = { + [1] = '{C:mult}+#1#{} Multi se nenhuma', + [2] = 'carta {C:attention}Aprimorada{}', + [3] = 'é pontuada' + }, + ['unlock'] = { + [1] = 'Vença uma tentativa sem nunca', + [2] = 'possuir cartas {C:attention,E:1}Aprimoradas' + } + }, + j_bunc_critic = { + ['name'] = 'Crítico', + ['text'] = { + [1] = "{X:mult,C:white}X#1#{} Multi se o placar", + [2] = 'da mão pontuada atual', + [3] = 'for {C:attention}menor que 1/#2#{} do', + [4] = "que o Placar total do Blind" + } + }, + j_bunc_cellphone = { + ['name'] = 'Celular', + ['text'] = { + [1] = '{C:attention}Retorne{} cartas pontuadas para a mão', + [2] = 'após a primeira jogada da rodada', + [3] = 'se nenhum descarte foi usado' + } + }, + j_bunc_wino = { + ['name'] = 'Wino', + ['text'] = { + [1] = 'Cartas jogadas de', + [2] = '{C:hearts}Copas{} e {C:diamonds}Ouros{}', + [3] = 'dão {C:chips}+#1#{} Fichas quando pontuadas' + } + }, + -- j_bunc_bounty_hunter = { + -- ['name'] = 'Caçador de Recompensa', + -- ['text'] = { + -- [1] = '{C:mult}+#1#{} Multi por', + -- [2] = 'cada {C:money}$#1#{} abaixo de {C:money}$0', + -- [3] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' + -- }, + -- ['unlock'] = { + -- [1] = 'Tenha menos que {E:1,C:attention}$#1#', + -- [2] = 'durante uma única tentativa' + -- } + -- }, + j_bunc_mousetrap = { + ['name'] = 'Ratoeira', + ['text'] = { + [1] = '{C:chips}+#1#{} Fichas,', + [2] = '{C:green}#2# de #3#{} chance de', + [3] = '{C:attention}perder{} uma mão em vez disso' + } + }, + j_bunc_the_joker = { + ['name'] = 'O Curinga', + ['text'] = { + [1] = 'Depois de jogada, cada carta', + [2] = 'pontuada sem um aprimoramento tem', + [3] = '{C:green}#1# de #2#{} chance de ser destruída', + }, + ['unlock'] = { + [1] = 'Descubra todos os', + [2] = '{C:attention}Blinds de Chefe' + } + }, + j_bunc_tangram = { + ['name'] = 'Tangrama', + ['text'] = { + [1] = 'Quando um {C:attention}7{} é pontuado,', + [2] = '{C:mult}+#1#{} Multi vezes o', + [3] = 'número de {C:attention}7s{} pontuados' + } + }, + j_bunc_domino = { + ['name'] = 'Dominó', + ['text'] = { + [1] = 'Ao {C:attention}adquirir{} or {C:attention}usar', + [2] = 'uma carta da loja ou', + [3] = 'Pacote de Reforço, adquira {C:attention}2', + [4] = 'cartas adjacentes, se possível' + } + }, + j_bunc_glue_gun = { + ['name'] = 'Pistola de Cola', + ['text'] = { + [1] = 'Venda esta carta para', + [2] = '{C:attention}Vincular{} até #1# cartas', + [3] = 'de Jogo selecionadas' + } + }, + j_bunc_taped = { + ['name'] = 'Curingas Colados', + ['text'] = { + [1] = '{C:attention}Vincula{} todas as', + [2] = 'cartas jogadas na primeira', + [3] = 'mão pontuada durante o', + [4] = '{C:attention}Blind de Chefe{}' + } + }, + j_bunc_rubber_band_ball = { + ['name'] = 'Bola de Elástico', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi por {C:attention}Vínculo{}', + [2] = 'criado nesta tentativa', + [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' + } + }, + j_bunc_headache = { + ['name'] = 'Dor de Cabeça', + ['text'] = { + [1] = 'Crie uma carta de {C:bunco_virtual_dark}Marca de Fliper{}', + [2] = 'por cada {C:attention}#1#{} cartas de Jogo', + [3] = 'destruídas', + [4] = '{C:inactive}({C:attention}#2#{C:inactive}/#1# cartas destruídas)' + } + }, + j_bunc_games_collector = { + ['name'] = 'Colecionador de Jogos', + ['text'] = { + [1] = 'Ganha {C:chips}+#1#{} Fichas', + [2] = 'quando um grupo vinculado', + [3] = 'é {C:attention}comprado{} do baralho', + [4] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' + } + }, + j_bunc_jumper = { + ['name'] = 'Saltador', + ['text'] = { + [1] = 'Ganha {C:chips}+#1#{} Fichas', + [2] = 'se a mão jogada', + [3] = 'contém um {C:attention}Flush{}', + [4] = '{C:inactive}(No momento, {C:chips}+#2#{C:inactive} Fichas)' + } + }, + j_bunc_stylophone = { + ['name'] = 'Stylophone', + ['text'] = { + [1] = 'Cartas dão {C:attention}X#1#{} Multi', + [2] = 'da {C:attention}classe{}', + [3] = 'quando pontuadas' + } + }, + j_bunc_kite_experiment = { + ['name'] = 'Experimento da Pipa', + ['text'] = { + [1] = '{C:green}#1# de #2#{} chance de {C:attention}repontuar', + [2] = '{C:attention}Cartas de Cobre{} já repontuadas', + [3] = 'uma vez adicional' + } + }, + j_bunc_robot = { + ['name'] = 'Robô', + ['text'] = { + [1] = 'Este Curinga ganha {C:mult}+#1#{} Multi', + [2] = 'toda vez que uma {C:attention}Carta de Cobre', + [3] = 'for repontuada', + [4] = '{C:inactive}(No momento, {C:mult}+#2#{C:inactive} Multi)' + } + }, + + -- Exotic Jokers + + j_bunc_zealous = { + ['name'] = 'Curinga Zeloso', + ['text'] = { + [1] = '{C:mult}+#1#{} Multi se a mão', + [2] = 'jogada contém', + [3] = 'um {C:attention}Espectro' + } + }, + j_bunc_lurid = { + ['name'] = 'Curinga Sinistro', + ['text'] = { + [1] = '{C:chips}+#1#{} Fichas se a mão', + [2] = 'jogada contém', + [3] = 'um {C:attention}Espectro' + } + }, + j_bunc_envious = { + ['name'] = 'Curinga Invejoso', + ['text'] = { + [1] = 'Cartas jogadas com', + [2] = 'naipe de {C:bunc_fleurons}Florões{} dão', + [3] = '{C:mult}+#1#{} Multi quando pontuadas' + } + }, + j_bunc_proud = { + ['name'] = 'Curinga Orgulhoso', + ['text'] = { + [1] = 'Cartas jogadas com', + [2] = 'naipe de {C:bunc_halberds}Alabardas{} dão', + [3] = '{C:mult}+#1#{} Multi quando pontuadas' + } + }, + j_bunc_wishalloy = { + ['name'] = 'Desejínio', + ['text'] = { + [1] = 'Chance de {C:green}#1# em #2#{} para', + [2] = 'cartas de {C:bunc_fleurons}Florões{}', + [3] = 'ganharem {C:money}${} igual às', + [4] = "Fichas pontuadas pela carta" + } + }, + j_bunc_unobtanium = { + ['name'] = 'Inobtânio', + ['text'] = { + [1] = 'Cartas jogadas com', + [2] = 'naipe de {C:bunc_halberds}Alabardas{} dão', + [3] = '{C:chips}+#1#{} Fichas e {C:mult}+#2#{} Multi', + [4] = "quando pontuadas" + } + }, + j_bunc_dynasty = { + ['name'] = 'A Dinastia', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi se a mão', + [2] = 'jogada contém', + [3] = 'um {C:attention}Espectro' + } + }, + j_bunc_magic_wand = { + ['name'] = 'Varinha Mágica', + ['text'] = { + [1] = 'Este Curinga ganha {X:mult,C:white}X#1#{} Multi', + [2] = 'por mão {C:attention}consecutiva{} jogada', + [3] = 'contendo um {C:attention}Espectro{}', + [4] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' + } + }, + j_bunc_starfruit = { + ['name'] = 'Carambola', + ['text'] = { + [1] = 'Aprimorar a {C:attention}mão de pôquer{}', + [2] = 'se ela contém um {C:attention}Espectro', + [3] = '{C:green}#1# de #2#{} chance de destruir', + [4] = 'este Curinga ao fim da rodada' + } + }, + j_bunc_fondue = { + ['name'] = 'Fondue', + ['text'] = { + [1] = 'Cartas pontuadas na', + [2] = '{C:attention}primeira mão{} da rodada são', + [3] = 'convertidas para {C:bunc_fleurons}Florões' + } + }, + j_bunc_myopia = { + ['name'] = 'Miopia', + ['text'] = { + [1] = '{C:spades}Espadas{} e {C:clubs}Paus{}', + [2] = 'contam como {C:bunc_halberds}Alabardas' + } + }, + j_bunc_astigmatism = { + ['name'] = 'Astigmatismo', + ['text'] = { + [1] = '{C:hearts}Copas{} e {C:diamonds}Ouros{}', + [2] = 'contam como {C:bunc_fleurons}Florões' + } + }, + j_bunc_roygbiv = { + ['name'] = 'Roy G. Biv', + ['text'] = { + [1] = '{C:green}#1# de #2#{} chance de adicionar', + [2] = '{C:dark_edition}Policromático{} a todas', + [3] = 'as carta pontuadas se a', + [4] = 'mão contém um {C:attention}Espectro' + } + }, + j_bunc_rigoletto = { + ['name'] = 'Rigoletto', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi por carta {C:bunco_exotic}Exótica{}', + [2] = 'no seu {C:attention}baralho completo', + [3] = '{C:inactive}(No momento, {X:mult,C:white}X#2#{C:inactive} Multi)' + }, + ['unlock'] = { + [1] = '{E:1,s:1.3}?????' + } + }, + }, + Blind = { + bl_bunc_paling = { + ['name'] = 'A Palidez', + ['text'] = { + [1] = 'Perde $1 por', + [2] = 'carta descartar' + } + }, + bl_bunc_umbrella = { + ['name'] = 'O Guarda-Chuva', + ['text'] = { + [1] = 'Após Jogar, vire todas as', + [2] = 'cartas na mão de cabeça para baixo' + } + }, + bl_bunc_tine = { + ['name'] = 'A Ponta', + ['text'] = { + [1] = 'Cada #1# recebe desvantagem' + } + }, + bl_bunc_swing = { + ['name'] = 'O Balanço', + ['text'] = { + [1] = 'Após Jogar ou Descartar,', + [2] = 'vire todas as cartas' + } + }, + bl_bunc_miser = { + ['name'] = 'O Avarento', + ['text'] = { + [1] = 'Pule a loja após', + [2] = 'derrotar este blind' + } + }, + bl_bunc_gate = { + ['name'] = 'O Portão', + ['text'] = { + [1] = 'Cartas não podem', + [2] = 'ser desselecionadas' + } + }, + bl_bunc_flame = { + ['name'] = 'A Chama', + ['text'] = { + [1] = 'Todas as cartas Aprimoradas', + [2] = 'recebem desvantagem' + } + }, + bl_bunc_mask = { + ['name'] = 'A Máscara', + ['text'] = { + [1] = '#1# tem as Fichas', + [2] = 'e Multi base de #2#' + } + }, + bl_bunc_bulwark = { + ['name'] = 'O Baluarte', + ['text'] = { + [1] = 'Jogar um #1# descarta', + [2] = 'todas as cartas da mão' + } + }, + bl_bunc_knoll = { + ['name'] = 'O Inchaço', + ['text'] = { + [1] = 'Ter mais que $5 aplica', + [2] = 'desvantagem à primeira mão retirada' + } + }, + bl_bunc_stone = { + ['name'] = 'A Pedra', + ['text'] = { + [1] = '+1X Base por', + [2] = 'cada $10 possuído' + } + }, + bl_bunc_sand = { + ['name'] = 'A Areia', + ['text'] = { + [1] = '+1X Base por', + [2] = 'cada marca possuída' + } + }, + bl_bunc_blade = { + ['name'] = 'A Lâmina', + ['text'] = { + [1] = 'Primeira vez que a pontuação exceder #1#', + [2] = 'faz a puntuação da mão ser 0' + } + }, + bl_bunc_claw = { + ['name'] = 'A Garra', + ['text'] = { + [1] = 'Cartas descartadas', + [2] = 'voltam para o baralho' + } + }, + bl_bunc_veil = { + ['name'] = 'O véu', + ['text'] = { + [1] = 'Cartas selecionadas', + [2] = 'são viradas de cabeça para baixo' + } + }, + -- bl_bunc_cadaver = { + -- ['name'] = 'O Cadáver', + -- ['text'] = { + -- [1] = 'Não deve jogar cartas de realeza' + -- } + -- }, + bl_bunc_wind = { + ['name'] = 'O Vento', + ['text'] = { + [1] = 'O Curinga mais à esquerda', + [2] = 'recebe desvantagem' + } + }, + bl_bunc_prince = { + ['name'] = 'O Príncipe', + ['text'] = { + [1] = 'Todos os Curingas recebem desvantagem', + [2] = 'até a primeira mão ser jogada' + } + }, + bl_bunc_depths = { + ['name'] = 'As Profundezas', + ['text'] = { + [1] = 'Após jogar, ganhe uma Marca', + [2] = 'Eterna, Perecível ou Dispersiva' + } + }, + bl_bunc_chasm = { + ['name'] = 'O Abismo', + ['text'] = { + [1] = 'Após Jogar, ganhe uma Marca', + [2] = 'Travada, Reativa ou de Aluguel' + } + }, + + -- Final + + bl_bunc_final_crown = { + ['name'] = 'Coroa Verde-Amarela', + ['text'] = { + [1] = 'Todas as cartas de naipe de Espadas,', + [2] = 'Copas, Paus e Ouros recebem desvantagem' + } + }, + -- bl_bunc_final_trident = { + -- ['name'] = 'Tridente Carmesim', + -- ['text'] = { + -- [1] = 'Sem lojas nesta Aposta' + -- } + -- }, + bl_bunc_final_tower = { + ['name'] = 'Torre Índigo', + ['text'] = { + [1] = 'Cartas não jogadas anteriormente', + [2] = 'nesta Aposta recebem desvantagem' + } + }, + bl_bunc_final_dagger = { + ['name'] = 'Adaga Magenta', + ['text'] = { + [1] = 'Descartar cartas as joga', + [2] = 'e subtrai o valor pontuado' + } + }, + bl_bunc_final_shield = { + ['name'] = 'Escudo Turquesa', + ['text'] = { + [1] = 'Pontuação em excesso desta Aposta', + [2] = "aumenta a pontuação requeria por este Blind" + } + } + }, + Back = { + b_bunc_fairy = { + ['name'] = 'Baralho de Fadas', + ['text'] = { + [1] = 'Após derrotar cada', + [2] = '{C:attention}Blind de chefe{}, adicione #1#', + [3] = '{C:bunco_exotic,T:bunc_exotic_cards}#2#{} aleatórias', + [4] = 'ao seu baralho' + }, + ['unlock'] = { + [1] = 'Jogue {E:1,C:attention}5 naipes diferentes', + [2] = 'em uma única mão' + } + }, + b_bunc_digital = { + ['name'] = 'Baralho Digital', + ['text'] = { + [1] = 'Cartas de {C:bunco_virtual_dark}Polymino{}', + [2] = 'podem aparecer na loja,', + [3] = "comece com uma {C:bunco_virtual_dark,T:c_bunc_the_i}Forma I{}" + } + } + }, + Tag = { + + -- Reworked + + tag_bunc_boss = { + ['name'] = 'Marca de Chefe', + ['text'] = { + [1] = 'Dá um', + [2] = '{C:attention}Pacote de Blinds' + } + }, + tag_bunc_double = { + ['name'] = 'Marca Dupla', + ['text'] = { + [1] = 'Dá uma cópia da', + [2] = 'próxima {C:attention}Marca{} selecionada', + [3] = '{s:0.8}Exceto{s:0.6,C:attention}Marcas Duplas e Triplas{}' + } + }, + + -- Main Tags + + tag_bunc_breaking = { + ['name'] = 'Marca Interruptora', + ['text'] = { + [1] = 'Desativa o', + [2] = '{C:attention}Blind de Chefe{}' + } + }, + tag_bunc_arcade = { + ['name'] = 'Marca de Fliper', + ['text'] = { + [1] = 'Dá um', + [2] = '{C:bunco_virtual_dark}Pacote Virtual Mega' + } + }, + tag_bunc_triple = { + ['name'] = 'Marca Tripla', + ['text'] = { + [1] = 'Dá duas cópias da', + [2] = 'próxima {C:attention}Marca{} selecionada', + [3] = '{s:0.8}Exceto {s:0.8,C:attention}Marca Tripla{}' + } + }, + + -- Edition tags + + tag_bunc_glitter = { + ['name'] = 'Marca de Glitter', + ['text'] = { + [1] = 'O próximo Curinga da loja de', + [2] = 'edição de base é grátis', + [3] = 'e torna-se {C:dark_edition}Glitter' + } + }, + tag_bunc_fluorescent = { + ['name'] = 'Marca Fluorescente', + ['text'] = { + [1] = 'O próximo Curinga da loja de', + [2] = 'edição de base é grátis', + [3] = 'e torna-se {C:dark_edition}Fluorescente' + } + }, + + -- Consumable edition tags + + tag_bunc_chips = { + ['name'] = 'Marca de Fichas', + ['text'] = { + [1] = '{C:chips}+#1#{} Fichas na próxima mão' + } + }, + tag_bunc_mult = { + ['name'] = 'Marca de Multi', + ['text'] = { + [1] = '{C:mult}+#1#{} Multi na próxima mão', + } + }, + tag_bunc_xmult = { + ['name'] = 'Marca Megamulti', + ['text'] = { + [1] = '{X:mult,C:white}X#1#{} Multi na próxima mão', + } + }, + tag_bunc_xchips = { + ['name'] = 'Marca Ultrafichas', + ['text'] = { + [1] = '{X:chips,C:white}X#1#{} na próxima mão' + } + }, + + -- Exotic tags + + tag_bunc_filigree = { + ['name'] = 'Marca Filigrana', + ['text'] = { + [1] = 'O próximo {C:attention}Pacote Padrão{} aberto', + [2] = 'terá apenas cartas {C:bunco_exotic}Exóticas' + } + }, + + -- Anti-tags + + tag_bunc_eternal = { + ['name'] = 'Marca Eterna', + ['text'] = { + [1] = 'O próximo Curinga da loja', + [2] = 'receberá um adesivo {C:attention}Eterno{}' + } + }, + tag_bunc_perishable = { + ['name'] = 'Marca Perecível', + ['text'] = { + [1] = 'O próximo Curinga da loja', + [2] = 'receberá um adesivo {C:attention}Prececível{}' + } + }, + tag_bunc_scattering = { + ['name'] = 'Marca Dispersiva', + ['text'] = { + [1] = 'O próximo Curinga da loja', + [2] = 'receberá um adesivo {C:attention}Dispersivo{}' + } + }, + tag_bunc_hindered = { + ['name'] = 'Marca Travada', + ['text'] = { + [1] = 'O próximo Curinga da loja', + [2] = 'receberá um adesivo {C:attention}Travado{}' + } + }, + tag_bunc_reactive = { + ['name'] = 'Marca Reativa', + ['text'] = { + [1] = 'O próximo Curinga da loja', + [2] = 'receberá um adesivo {C:attention}Reativo{}' + } + }, + tag_bunc_rental = { + ['name'] = 'Marca de Aluguel', + ['text'] = { + [1] = 'O próximo Curinga da loja', + [2] = 'receberá um adesivo {C:attention}de Aluguel{}' + } + } + }, + Edition = { + e_bunc_glitter = { + ['name'] = 'Glitter', + ['text'] = { + [1] = '{X:chips,C:white}X#1#{} Fichas' + } + }, + e_bunc_fluorescent = { + ['name'] = 'Fluorescente', + ['text'] = { + [1] = 'Não pode ser virado, selecionado', + [2] = 'forçadamente ou receber desvantagem' + } + }, + + e_bunc_consumable_edition_foil = { + ['name'] = 'Laminado', + ['text'] = { + [1] = 'Crie uma {C:attention}Marca de Fichas' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = 'Holográfico', + ['text'] = { + [1] = 'Crie uma {C:attention}Marca de Multi' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = 'Policromático', + ['text'] = { + [1] = 'Crie uma {C:attention}Marca Megamulti' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = 'Glitter', + ['text'] = { + [1] = 'Crie uma {C:attention}Marca Ultrafichas' + } + }, + }, + Voucher = { + v_bunc_lamination = { + ['name'] = 'Laminação', + ['text'] = { + [1] = 'Consumíveis nos', + [2] = '{C:attention}Pacotes de reforço{}', + [3] = 'podem ter uma {C:dark_edition}Edição' + } + }, + v_bunc_supercoating = { + ['name'] = 'Super Revestimento', + ['text'] = { + [1] = 'Todos os consumíveis nos', + [2] = '{C:attention}Pacotes de Reforço{}', + [3] = 'terão uma {C:dark_edition}Edição' + }, + ['unlock'] = { + [1] = 'Use {C:attention,E:1}#1#{} consumíveis', + [2] = 'com {C:attention,E:1}Edições', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_hedge_trimmer = { + ['name'] = 'Corta-Sebes', + ['text'] = { + [1] = "Reduza a pontuação do Blind", + [2] = 'em {C:attention}#1#%{} a cada mão jogada' + } + }, + v_bunc_chainsaw = { + ['name'] = 'Motosserra', + ['text'] = { + [1] = 'Todas as pontuações requeridas', + [2] = 'são reduzidas em {C:attention}#1#%{}' + }, + ['unlock'] = { + [1] = "Reduza a pontuação do blind", + [2] = 'usando Hedge Trimmer', + [3] = '{C:attention,E:1}#1#{} vezes, no total', + [4] = '{C:inactive}(#2#)' + } + }, + v_bunc_cups_n_balls = { + ['name'] = "Copos e Bolas", + ['text'] = { + [1] = '{C:attention}+1{} Pacote de Reforço', + [2] = 'disponível em cada loja' + } + }, + v_bunc_shell_game = { + ['name'] = 'Jogo dos Copos', + ['text'] = { + [1] = 'Atualize o {C:attention}conteúdo', + [2] = 'dos Pacotes de Reforço', + [3] = '{C:attention}1{} vez por pacote' + }, + ['unlock'] = { + [1] = 'Abra {E:1,C:attention}#1#', + [2] = 'Pacotes de Reforço', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_disguise = { + ['name'] = 'Disfarce', + ['text'] = { + [1] = '{C:attention}Pacotes de Blinds{} podem', + [2] = 'aparecer na loja' + } + }, + v_bunc_masquerade = { + ['name'] = 'Dissimulação', + ['text'] = { + [1] = 'Todos os {C:attention}Pacotes de Blinds{}', + [2] = 'na loja são grátis' + }, + ['unlock'] = { + [1] = 'Troque {E:1,C:attention}#1#{}', + [2] = 'Blinds por Blinds', + [3] = 'dos Pacotes de Blinds', + [4] = '{C:inactive}(#2#)' + } + }, + v_bunc_fanny_pack = { + ['name'] = 'Pochete', + ['text'] = { + [1] = '{C:green}#1# de #2#{} chance de', + [2] = 'ganhar uma {C:attention}Marca Dupla', + [3] = 'toda vez que um', + [4] = 'Blind é {C:attention}pulado' + } + }, + v_bunc_pin_collector = { + ['name'] = 'Colecionador de Broches', + ['text'] = { + [1] = 'Todas as próximas {C:attention}Marcas Duplas', + [2] = 'aparecerão como {C:attention}Marcas Triplas' + }, + ['unlock'] = { + [1] = 'Pule um total de ', + [2] = '{E:1,C:attention}#1#{} Blinds', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_arcade_machine = { + ['name'] = 'Máquina de Fliper', + ['text'] = { + [1] = '{C:bunco_virtual_dark}Pacotes Virtuais', + [2] = 'aparecem {C:attention}4X{} mais frequentemente' + } + }, + v_bunc_polybius = { + ['name'] = 'Polybius', + ['text'] = { + [1] = 'Cartas de {C:bunco_virtual_dark}Polymino{} podem', + [2] = 'vincular {C:attention}mais uma{} carta', + [3] = '{s:0.6,C:inactive}A carta extra pode ser de qualquer propriedade' + }, + ['unlock'] = { + [1] = 'Crie um total de', + [2] = '{E:1,C:attention}#1#{} grupos vinculados', + [3] = '{C:inactive}(#2#)' + } + } + }, + Enhanced = { + m_bunc_copper = { + ['name'] = 'Carta de Cobre', + ['text'] = { + [1] = 'Repontua se jogada', + [2] = '{C:attention}adjacente{} a outra', + [3] = 'Carta de Cobre pontuada' + }, + }, + }, + Stake = { + stake_bunc_cyan = { + ['name'] = 'Aposta Ciana', + ['text'] = { + [1] = 'A loja pode ter Curingas {C:attention}Dispersivos{}', + [2] = '{C:inactive,s:0.8}(#1#)', + } + }, + stake_bunc_pink = { + ['name'] = 'Aposta Rosa', + ['text'] = { + [1] = 'A loja pode ter Curingas {C:attention}Travados{}', + [2] = '{C:inactive,s:0.8}(#1#)', + } + }, + stake_bunc_magenta = { + ['name'] = 'Aposta Magenta', + ['text'] = { + [1] = 'A loja pode ter Curingas {C:attention}Reativos{}', + [2] = '{C:inactive,s:0.8}(#1#)', + } + } + } + } +} diff --git a/localization/vi.lua b/localization/vi.lua index 38ea98cc..375fc316 100644 --- a/localization/vi.lua +++ b/localization/vi.lua @@ -60,6 +60,7 @@ return { -- Translation by Shinosan bunc_exceeded_score = 'Đã vượt quá giới hạn!', bunc_min_ante = 'Ante tối thiểu:', bunc_final_blind = 'Blind cuối cùng', + bunc_volume = "Âm lượng", -- Consumable types @@ -200,30 +201,6 @@ return { -- Translation by Shinosan [2] = '{C:bunc_fleurons}Hoa{} hoặc {C:bunc_halberds}Rìu{}' } }, - bunc_consumable_edition_foil = { - ['name'] = 'Tráng Bạc', - ['text'] = { - [1] = 'Tạo một {C:attention}Nhãn Chip' - } - }, - bunc_consumable_edition_holo = { - ['name'] = 'Lấp Lánh', - ['text'] = { - [1] = 'Tạo một {C:attention}Nhãn +Nhân' - } - }, - bunc_consumable_edition_polychrome = { - ['name'] = 'Đa Sắc', - ['text'] = { - [1] = 'Tạo một {C:attention}Nhãn XNhân' - } - }, - bunc_consumable_edition_bunc_glitter = { - ['name'] = 'Long Lanh', - ['text'] = { - [1] = 'Tạo một {C:attention}Nhãn XChip' - } - }, -- Undiscovered @@ -354,11 +331,6 @@ return { -- Translation by Shinosan [2] = 'lá được chọn trở thành', [3] = '{C:attention}#2#' }, - ['unlock'] = { - [1] = 'Khám phá ít nhất', - [2] = '{C:attention}#1#{} vật phẩm trong', - [3] = 'bộ sưu tập của bạn' - } }, c_bunc_art = { ['name'] = 'Nghệ thuật', @@ -367,11 +339,6 @@ return { -- Translation by Shinosan [2] = 'lá được chọn trở thành', [3] = '{C:attention}#2#' }, - ['unlock'] = { - [1] = 'Khám phá ít nhất', - [2] = '{C:attention}#1#{} vật phẩm trong', - [3] = 'bộ sưu tập của bạn' - } }, c_bunc_universe = { ['name'] = 'Vũ Trụ', @@ -381,11 +348,6 @@ return { -- Translation by Shinosan [3] = 'và dấu lên tới', [4] = '{C:attention}#1#{} lá được chọn' }, - ['unlock'] = { - [1] = 'Khám phá ít nhất', - [2] = '{C:attention}#1#{} vật phẩm trong', - [3] = 'bộ sưu tập của bạn' - } }, c_bunc_lust = { ['name'] = 'Ham Muốn', @@ -395,11 +357,6 @@ return { -- Translation by Shinosan [3] = '{C:inactive}(Tối đa là {C:money}$#2#{C:inactive})', [4] = '{C:inactive}(Hiện tại là {C:money}$#3#{C:inactive})' }, - ['unlock'] = { - [1] = 'Khám phá ít nhất', - [2] = '{C:attention}#1#{} vật phẩm trong', - [3] = 'bộ sưu tập của bạn' - } }, c_bunc_sky = { ['name'] = 'Bầu trời', @@ -848,7 +805,7 @@ return { -- Translation by Shinosan j_bunc_registration_plate = { ['name'] = 'Biển Số Xe', ['text'] = { - [1] = '#1#', + [1] = '#1#, #2#, #3#, #4# và #5#', [2] = 'có Chip và Nhân của mọi', [3] = '{C:attention}tay poker{} đã chơi trong vòng đấu này', [4] = '{s:0.8}Kết hợp sẽ thay đổi sau mỗi vòng' @@ -871,19 +828,19 @@ return { -- Translation by Shinosan [3] = 'lá {C:attention,E:1}Tùy Chất{}' } }, - j_bunc_neon = { - ['name'] = 'Neon Joker', - ['text'] = { - [1] = 'Lá Joker này nhận {X:mult,C:white}X#1#{} Nhân', - [2] = 'mỗi lá {C:attention}suy yếu{} được tính điểm', - [3] = '{C:inactive}(Hiện tại là {X:mult,C:white}X#2#{C:inactive} Nhân)' - }, - ['unlock'] = { - [1] = 'Chơi một tay bài 5 lá', - [2] = 'mà chỉ chứa', - [3] = 'lá {C:attention,E:1}Suy yếu{}' - } - }, + -- j_bunc_neon = { + -- ['name'] = 'Neon Joker', + -- ['text'] = { + -- [1] = 'Lá Joker này nhận {X:mult,C:white}X#1#{} Nhân', + -- [2] = 'mỗi lá {C:attention}suy yếu{} được tính điểm', + -- [3] = '{C:inactive}(Hiện tại là {X:mult,C:white}X#2#{C:inactive} Nhân)' + -- }, + -- ['unlock'] = { + -- [1] = 'Chơi một tay bài 5 lá', + -- [2] = 'mà chỉ chứa', + -- [3] = 'lá {C:attention,E:1}Suy yếu{}' + -- } + -- }, j_bunc_gameplan = { ['name'] = 'Chiến Thuật', ['text'] = { @@ -1123,7 +1080,7 @@ return { -- Translation by Shinosan ['name'] = 'Thợ Săn Tiền Thưởng', ['text'] = { [1] = 'Mọi nguồn tiền', - [2] = 'cho ít {C:money}1${} và Joker này', + [2] = 'cho ít {C:money}#1#${} và Joker này', [3] = 'tăng thêm {C:mult}+#1#{} Nhân mỗi lần', [4] = 'bạn kiếm được tiền', [5] = '{C:inactive}(Hiện tại {C:mult}+#2#{C:inactive} Nhân)' @@ -1327,10 +1284,10 @@ return { -- Translation by Shinosan j_bunc_magic_wand = { ['name'] = 'Đũa Phép Thuật', ['text'] = { - [1] = 'Lá Joker này {X:mult,C:white}X#1#{} Nhân', + [1] = 'Lá Joker này {C:mult}+#1#{} Nhân', [2] = 'mỗi tay bài chơi {C:attention}liên tiếp{}', [3] = 'có chứa {C:attention}Phổ{}', - [4] = '{C:inactive}(Hiện tại là {X:mult,C:white}X#2#{C:inactive} Nhân)' + [4] = '{C:inactive}(Hiện tại là {C:mult}+#2#{C:inactive} Nhân)' } }, j_bunc_starfruit = { @@ -1369,7 +1326,7 @@ return { -- Translation by Shinosan ['text'] = { [1] = '{C:green}#1# trên #2#{} khả năng thêm', [2] = 'ấn bản {C:dark_edition}Đa Sắc{} cho', - [3] = 'lá bài ngẫu nhiên được tính điểm', + [3] = 'tất cả lá bài được tính điểm', [4] = 'nếu trên tay có {C:attention}Phổ' } }, @@ -1760,7 +1717,32 @@ return { -- Translation by Shinosan [1] = 'không thể lật, suy yếu', [2] = 'hoặc bị buộc phải chọn' } - } + }, + + e_bunc_consumable_edition_foil = { + ['name'] = 'Tráng Bạc', + ['text'] = { + [1] = 'Tạo một {C:attention}Nhãn Chip' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = 'Lấp Lánh', + ['text'] = { + [1] = 'Tạo một {C:attention}Nhãn +Nhân' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = 'Đa Sắc', + ['text'] = { + [1] = 'Tạo một {C:attention}Nhãn XNhân' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = 'Long Lanh', + ['text'] = { + [1] = 'Tạo một {C:attention}Nhãn XChip' + } + }, }, Voucher = { v_bunc_lamination = { @@ -1908,7 +1890,7 @@ return { -- Translation by Shinosan ['name'] = 'Cược lục lam', ['text'] = { [1] = 'Shop có thể có Joker {C:attention}Tán Xạ{}', - [2] = '{C:inactive,s:0.8}(Tiêu diệt Joker liền kề ngẫu nhiên khi bị loại bỏ)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Áp dụng toàn bộ Cược trước' } }, @@ -1916,7 +1898,7 @@ return { -- Translation by Shinosan ['name'] = 'Cược Hồng', ['text'] = { [1] = 'Shop có thể có Joker {C:attention}Cản Trở{}', - [2] = '{C:inactive,s:0.8}(Giữ nguyên vị trí cho đến hết vòng sau khi được bán)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Áp dụng toàn bộ Cược trước' } }, @@ -1924,7 +1906,7 @@ return { -- Translation by Shinosan ['name'] = 'Cược Đỏ Tươi', ['text'] = { [1] = 'Shop có thể có Joker {C:attention}Phản Ứng{}', - [2] = '{C:inactive,s:0.8}(Bị suy yếu nếu không có một Blind nào được loại bỏ trong ante)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}Áp dụng toàn bộ Cược trước' } } diff --git a/localization/zh_TW.lua b/localization/zh_TW.lua new file mode 100644 index 00000000..16cb2d12 --- /dev/null +++ b/localization/zh_TW.lua @@ -0,0 +1,1819 @@ +return { + misc = { + dictionary = { + + -- Config values + + bunc_colorful_finishers = '富有色彩的最終盲注', + bunc_colorful_finishers_desc = '啟用在最終盲注中的色彩背景', + bunc_colorful_finishers_desc_2 = '並移除在無盡模式中的灰色背景', + + bunc_high_quality_shaders = '高質素的着色器', + bunc_high_quality_shaders_desc = '讓一些原遊戲的著色器', + bunc_high_quality_shaders_desc_2 = '以高質素的形式呈現(有可能產生卡頓)', + + bunc_fixed_sprites = '精靈圖修改', + bunc_fixed_sprites_desc = '修改一些精靈圖', + bunc_fixed_sprites_desc_2 = '例如移除一些不要的像素及加強對比度', + + bunc_gameplay_reworks = '遊戲內容更改', + bunc_gameplay_reworks_desc = '更改一些原遊戲中的內容', + bunc_gameplay_reworks_desc_2 = '來讓遊戲有更享受的體驗', + + bunc_fixed_badges = '標識優化', + bunc_fixed_badges_desc = '修改消耗牌中混淆的標識', + bunc_fixed_badges_desc_2 = '以更詳細及精確的描述標識替代', + + bunc_jokerlike_consumable_editions = '在消耗牌欄位的版本', + bunc_jokerlike_consumable_editions_desc = '恢復在原遊戲中帶有版本的消耗牌的效果', + bunc_jokerlike_consumable_editions_desc_2 = '(以避免與其他模組組成衝突)', + + bunc_default_true = '預設為啟用', + bunc_default_false = '預設為禁用', + bunc_requires_restart = '需要重啟', + + -- Miscellaneous + + bunc_a_side = 'A面', + bunc_b_side = 'B面', + bunc_copied = '已複製!', + bunc_nothing = '沒有', + bunc_chips = '籌碼', + bunc_loop = '重新得分!', + bunc_chance = '機率', + bunc_word_and = '及', + bunc_debuffed = '被減益!', + bunc_pew = '咻!', + bunc_declined = '拒絕了...', + bunc_accepted = '接受了!', + bunc_robbed = '盜取了!', + bunc_ouch = '啊!', + bunc_inactive = '未啟用', + bunc_repeat = '重新得分!', + bunc_thoth_tarot = '托特塔羅牌', + bunc_thoth_tarots = '托特塔羅牌', + bunc_mysterious_tarot = '塔羅牌?', + bunc_mysterious_polymino = '多連塊?', + bunc_most_played_rank = '(最常打出的牌級)', + bunc_least_played_hand = '(最少打出的牌型)', + bunc_blade = '(盲注所需的1.5X)', + bunc_exceeded_score = '超出限制!', + bunc_min_ante = '最小底注:', + bunc_final_blind = '最終盲注', + bunc_volume = '音量', + + -- Consumable types + + k_polymino = '多連塊', + b_polymino_cards = '多連塊牌', + + -- Booster types + + k_bunc_blind_pack = '盲注擴充包', + k_bunc_virtual_pack = '虛擬擴充包' + }, + + -- Suits + + suits_singular = { + bunc_Fleurons = '花葉', + bunc_Halberds = '斧槍' + }, + suits_plural = { + bunc_Fleurons = '花葉', + bunc_Halberds = '斧槍' + }, + + -- Poker hands + + poker_hands = { + ['bunc_Spectrum'] = '五色', + ['bunc_Straight Spectrum'] = '五色順子', + ['bunc_Straight Spectrum (Royal)'] = '皇家五色順子', + ['bunc_Spectrum House'] = '五色葫蘆', + ['bunc_Spectrum Five'] = '五色五條', + ['bunc_Deal'] = '成交' + }, + poker_hand_descriptions = { + ['bunc_Spectrum'] = { + [1] = '五張不同花色的卡牌' + }, + ['bunc_Straight Spectrum'] = { + [1] = "5張連續牌級", + [2] = "並每張是不同花色的卡牌", + }, + ['bunc_Spectrum House'] = { + [1] = "三條和對子", + [2] = "並每張是不同花色", + }, + ['bunc_Spectrum Five'] = { + [1] = '5張相同牌級的卡牌', + [2] = '並每張是不同花色' + }, + ['bunc_Deal'] = { + [1] = '被註冊車牌', + [2] = '選擇的5個牌級', + } + }, + labels = { + + -- Editions + + bunc_glitter = '閃光', + bunc_fluorescent = '螢光', + + -- Stickers + + bunc_scattering = '分散', + bunc_hindered = '阻礙', + bunc_reactive = '活躍' + }, + collab_palettes = { + default_Spades = { + ['3'] = '重鑄對比度' + }, + default_Hearts = { + ['3'] = '重鑄對比度' + }, + default_Clubs = { + ['3'] = '重鑄對比度' + }, + default_Diamonds = { + ['3'] = '重鑄對比度' + } + }, + collabs = { + bunc_Fleurons = { + ['1'] = '預設', + ['2'] = '鴨子遊戲', + ['3'] = '莉莎:苦痛之旅' + }, + bunc_Halberds = { + ['1'] = '預設', + ['2'] = '邪魔典紙', + ['3'] = '莉莎:無意義之旅' + } + } + }, + descriptions = { + Other = { + bunc_temporary_extra_chips = {['text'] = {[1] = '{C:chips}+#1#{}只限本局的額外籌碼'}}, + bunc_linked_cards = {['text'] = {[1] = '這張牌與這些牌{C:attention}連接{}'}}, + bunc_linked_group = { + ['name'] = '連接牌', + ['text'] = { + [1] = '連接一起的卡牌', + [2] = '這些卡牌會一同抽出,選擇', + [3] = '並{C:attention}一同{}摧毀' + } + }, + bunc_drawn_linked_cards = {['text'] = {[1] = '{C:attention}連接{}的卡牌會一同抽出'}}, + bunc_light_suits = { + ['name'] = '淺色花色', + ['text'] = { + [1] = '{C:hearts}紅心{}及{C:diamonds}方塊' + } + }, + bunc_light_suits_exotic = { + ['name'] = '淺色花色', + ['text'] = { + [1] = '{C:hearts}紅心{},{C:diamonds}方塊', + [2] = '及{C:bunc_fleurons}花葉' + } + }, + bunc_dark_suits = { + ['name'] = '深色花色', + ['text'] = { + [1] = '{C:spades}黑桃{}及{C:clubs}梅花' + } + }, + bunc_dark_suits_exotic = { + ['name'] = '深色花色', + ['text'] = { + [1] = '{C:spades}黑桃{},{C:clubs}梅花', + [2] = '及{C:bunc_halberds}斧槍' + } + }, + bunc_exotic_cards = { + ['name'] = '奇異卡牌', + ['text'] = { + [1] = '帶有', + [2] = '{C:bunc_fleurons}花葉{}或{C:bunc_halberds}斧槍{}花色的卡牌' + } + }, + + -- Undiscovered + + undiscovered_polymino = { + ['name'] = '未發現', + ['text'] = { + [1] = '在無種子的遊戲中', + [2] = "購買或使用這張卡牌", + [3] = "來了解它的功能", + } + }, + + -- Booster Packs + + p_bunc_blind = { + ['name'] = '盲注擴充包', + ['text'] = { + [1] = "從{C:attention}#1#個Boss盲注{}中", + [2] = '選擇1個來取代目前底注的Boss盲注', + } + }, + p_bunc_virtual_normal = { + ['name'] = '虛擬擴充包', + ['text'] = { + [1] = '抽出牌組中所有卡牌', + [2] = '並從{C:attention}#2#張{C:bunco_virtual_dark}多連塊牌{}中', + [3] = '選擇{C:attention}#1#{}張並馬上使用', + } + }, + p_bunc_virtual_jumbo = { + ['name'] = '特大虛擬擴充包', + ['text'] = { + [1] = '抽出牌組中所有卡牌', + [2] = '並從{C:attention}#2#張{C:bunco_virtual_dark}多連塊牌{}中', + [3] = '選擇{C:attention}#1#{}張並馬上使用', + } + }, + p_bunc_virtual_mega = { + ['name'] = '超級虛擬擴充包', + ['text'] = { + [1] = '抽出牌組中所有卡牌', + [2] = '並從{C:attention}#2#張{C:bunco_virtual_dark}多連塊牌{}中', + [3] = '選擇{C:attention}#1#{}張並馬上使用', + } + }, + + -- Stickers + + bunc_scattering = { + ['name'] = '分散', + ['text'] = { + [1] = '這張小丑牌被移除時', + [2] = '會移除鄰近的隨機小丑牌', + } + }, + bunc_hindered = { + ['name'] = '阻礙', + ['text'] = { + [1] = '賣出這張小丑牌後', + [2] = '會留住原位', + [3] = '直到回合結束' + } + }, + bunc_reactive = { + ['name'] = '活躍', + ['text'] = { + [1] = '如果在底注中沒有跳過盲注', + [2] = '這張小丑牌會被減益' + } + }, + + -- Stake stickers + + bunc_cyan_sticker = { + ['name'] = '青色貼紙', + ['text'] = { + [1] = "曾經使用這張小丑牌", + [2] = "在{C:attention}青色賭注{}中獲勝", + } + }, + bunc_pink_sticker = { + ['name'] = '粉紅貼紙', + ['text'] = { + [1] = "曾經使用這張小丑牌", + [2] = "在{C:attention}粉紅賭注{}中獲勝", + } + }, + bunc_magenta_sticker = { + ['name'] = '洋紅貼紙', + ['text'] = { + [1] = "曾經使用這張小丑牌", + [2] = "在{C:attention}粉紅賭注{}中獲勝", + } + } + }, + + -- Consumables + + Tarot = { + + -- Reworked Tarots + + c_bunc_wheel_of_fortune = { + ['name'] = '幸運之輪', + ['text'] = { + [1] = '有{C:green}#1#/#2#{}的機率附加', + [2] = '{C:dark_edition}銀箔{}、{C:dark_edition}全息{}、', + [3] = '{C:dark_edition}彩色{}或{C:dark_edition}閃光{}版本', + [4] = '到隨機一張{C:attention}小丑牌{}' + } + }, + + c_bunc_adjustment = { + ['name'] = '調節', + ['text'] = { + [1] = '選擇最多{C:attention}#1#{}張卡牌', + [2] = '來加強為{C:attention}#2#', + } + }, + c_bunc_art = { + ['name'] = '藝術', + ['text'] = { + [1] = '選擇最多{C:attention}#1#{}張卡牌', + [2] = '來加強為{C:attention}#2#', + } + }, + c_bunc_universe = { + ['name'] = '宇宙', + ['text'] = { + [1] = '選擇最多{C:attention}#1#{}張卡牌', + [2] = '來{C:attention}隨機{}那些卡牌的', + [3] = '牌級,加強效果,版本及封蠟章', + } + }, + c_bunc_lust = { + ['name'] = '慾望', + ['text'] = { + [1] = '每張在手牌中的卡牌', + [2] = '會給予{C:money}$#1#{}', + [3] = '{C:inactive}(最多{C:money}$#2#{C:inactive})', + [4] = '{C:inactive}(目前會給予{C:money}$#3#{C:inactive})' + }, + }, + c_bunc_sky = { + ['name'] = '天空', + ['text'] = { + [1] = '選擇最多{C:attention}#1#{}張卡牌', + [2] = '來轉換至{C:bunc_fleurons}花葉{}花色牌', + } + }, + c_bunc_abyss = { + ['name'] = '深淵', + ['text'] = { + [1] = '選擇最多{C:attention}#1#{}張卡牌', + [2] = '來轉換至{C:bunc_halberds}斧槍{}花色牌', + } + }, + }, + Planet = { + c_bunc_quaoar = { + ['name'] = '創神星' + }, + c_bunc_haumea = { + ['name'] = '妊神星' + }, + c_bunc_sedna = { + ['name'] = '賽德娜' + }, + c_bunc_makemake = { + ['name'] = '鳥神星' + }, + }, + Spectral = { + + -- Reworked Spectrals + + c_bunc_aura = { + ['name'] = '光環', + ['text'] = { + [1] = '新增{C:dark_edition}銀箔{}、{C:dark_edition}全息{}、{C:dark_edition}彩色{}或{C:dark_edition}閃光{}版本', + [2] = '到選擇的{C:attention}1{}張手牌中' + } + }, + + c_bunc_cleanse = { + ['name'] = '淨化', + ['text'] = { + [1] = '附加{C:dark_edition}螢光{}效果', + [2] = '到{C:attention}#1#{}張選擇的卡牌中' + } + }, + c_bunc_the_8 = { + ['name'] = '萬能形', + ['text'] = { + [1] = '{C:attention}連接{}任何未連接的卡牌', + [2] = '可連接的卡牌沒有上限', + [3] = '{C:inactive,s:0.6}(使用這張牌時,不會有卡牌選擇的上限)' + } + } + }, + Polymino = { + c_bunc_the_i = { + ['name'] = '條形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '所有牌都具有相同{C:attention}牌級或花色{}' + } + }, + c_bunc_the_o = { + ['name'] = '方形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '其中2張牌具有{C:attention}相同的特性', + [3] = '{C:inactive}(牌級或花色){}', + [4] = '而另外2張牌具有{C:attention}另一個相同的特性{}' + } + }, + c_bunc_the_t = { + ['name'] = '卜形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '其中3張牌具有{C:attention}相同的特性', + [3] = '{C:inactive}(牌級或花色){}', + [4] = '而另外1張牌{C:attention}不與其他卡牌{}具有{C:attention}相同的特性{}', + } + }, + c_bunc_the_s = { + ['name'] = '彎形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '每對卡牌中的{C:attention}2張卡牌具有{}有相同的牌級', + [3] = '每對中有一張卡牌與另一對具有{C:attention}相同的花色' + } + }, + c_bunc_the_z = { + ['name'] = '鋸齒形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '每對卡牌中的{C:attention}2張卡牌具有{}有相同的花色', + [3] = '每對中有一張卡牌與另一對具有{C:attention}相同的牌級' + } + }, + c_bunc_the_j = { + ['name'] = '勾形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '其中3張具有{C:attention}相同的牌級', + [3] = '而另外1張具有{C:attention}相同的花色', + [4] = '但不具有相同的牌級', + } + }, + c_bunc_the_l = { + ['name'] = '靴形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '其中3張具有{C:attention}相同的花色', + [3] = '而另外1張具有{C:attention}相同的牌級', + [4] = '但不具有相同的花色', + } + }, + c_bunc_the_slash = { + ['name'] = '斜形', + ['text'] = { + [1] = '{C:attention}連接{}4張選擇的卡牌', + [2] = '其中所有卡牌具有{C:attention}不同的特性', + [3] = '{C:inactive}(牌級或花色)' + } + } + }, + Joker = { + + -- Reworked Jokers + + j_bunc_luchador = { + ['name'] = '摔角手', + ['text'] = { + [1] = '賣出這張牌', + [2] = '來產生一個免費的{C:attention}清除標籤', + } + }, + j_bunc_red_card = { + ['name'] = '紅牌', + ['text'] = { + [1] = "每個被跳過的{C:attention}擴充包{}選項", + [2] = "會給予這張小丑牌{C:red}+#1#{}倍數", + [3] = '{C:inactive}(目前會給予{C:red}+#2#{C:inactive}倍數)', + } + }, + + -- Main Jokers + + j_bunc_cassette_a = { + ['name'] = '錄音帶(A面)', + ['text'] = { + [1] = '帶有{C:attention}淺色花色{}的卡牌', + [2] = '在得分時給予{C:chips}+#1#{}籌碼' + } + }, + j_bunc_cassette_b = { + ['name'] = '錄音帶(B面)', + ['text'] = { + [1] = '帶有{C:attention}深色花色{}的卡牌', + [2] = '在得分時,給予{C:mult}+#2#{}倍數' + } + }, + j_bunc_cassette_extra = { + ['text'] = { + [1] = '{C:inactive}棄掉卡牌時,翻起這張小丑牌' + } + }, + j_bunc_mosaic = { + ['name'] = '馬賽克小丑', + ['text'] = { + [1] = '打出的{C:attention}石頭牌', + [2] = '在得分時,給予{C:mult}+#1#{}倍數', + }, + ['unlock'] = { + [1] = '在一次出牌中', + [2] = '打出5張只有{C:attention,E:1}石頭牌{}的手牌', + } + }, + j_bunc_voxel = { + ['name'] = '體素小丑', + ['text'] = { + [1] = '倍數{X:mult,C:white}X#1#{},每張在你的{C:attention}牌組{}中的{C:attention}加強牌{}', + [2] = '會對這張小丑牌損失{X:mult,C:white}-X#2#{}倍數', + [3] = '{C:inactive}(目前會給予{X:mult,C:white}X#3#{C:inactive}倍數)' + }, + ['unlock'] = { + [1] = '擁有至少{C:attention}#1#{}張{E:1,C:attention}加強牌{}', + [2] = '在你的牌組中', + } + }, + j_bunc_crop_circles = { + ['name'] = '麥田圈', + ['text'] = { + [1] = '以{C:clubs}梅花{}為基礎花色的卡牌在得分時給予{C:mult}+3{}倍數', + [2] = '打出的{C:attention}8{}在得分時給予{C:mult}+2{}倍數', + [3] = '打出的{C:attention}Q{},{C:attention}10{},{C:attention}9{}及{C:attention}6{}在得分時給予{C:mult}+1{}倍數' + } + }, + j_bunc_crop_circles_exotic = { + ['name'] = '麥田圈', + ['text'] = { + [1] = '以{C:bunc_fleurons}花葉{}為基礎花色的卡牌在得分時給予{C:mult}+4{}倍數', + [2] = '以{C:clubs}梅花{}為基礎花色的卡牌在得分時給予{C:mult}+3{}倍數', + [3] = '打出的{C:attention}8{}在得分時給予{C:mult}+2{}倍數', + [4] = '打出的{C:attention}Q{},{C:attention}10{},{C:attention}9{}及{C:attention}6{}在得分時給予{C:mult}+1{}倍數' + } + }, + j_bunc_xray = { + ['name'] = 'X射線', + ['text'] = { + [1] = '每張以朝下抽出的卡牌', + [2] = '會給予這張小丑牌{X:mult,C:white}X#1#{}倍數', + [3] = '{C:inactive}(目前會給予{X:mult,C:white}X#2#{C:inactive}倍數)' + }, + ['unlock'] = { + [1] = '完成{E:1,C:attention}透視眼{}挑戰', + } + }, + j_bunc_dread = { + ['name'] = '恐懼小丑', + ['text'] = { + [1] = '當{C:attention}最後一次{}出牌已經得分後', + [2] = '對打出的牌型的等級提升{C:attention}#1#級{}', + [3] = '並{C:attention}摧毀{}所有得分牌', + [4] = '{C:inactive,s:0.8}所有從這張小丑牌得到的等級', + [5] = '{C:inactive,s:0.8}將會在這張牌被移除後損失' + }, + ['unlock'] = { + [1] = '在一個回合中', + [2] = '對牌組移除至少{E:1,C:attention}#1#{}張卡牌', + } + }, + j_bunc_prehistoric = { + ['name'] = '史前小丑', + ['text'] = { + [1] = '如果打出的卡牌', + [2] = '與同一個回合中{C:attention}上一張的得分牌{}', + [3] = '分享{C:attention}相同的牌級及花色{}', + [4] = '在得分時會給予{C:mult}+#1#{}倍數' + }, + ['unlock'] = { + [1] = '打出{E:1,C:attention}同花五條', + } + }, + j_bunc_linocut = { + ['name'] = '浮雕版畫', + ['text'] = { + [1] = '如果打出的卡牌剛好是{C:attention}2{}張卡牌', + [2] = '並其牌型為{C:attention}對子{},', + [3] = "轉換{C:attention}左邊{}卡牌的花色", + [4] = "至{C:attention}右邊{}卡牌的花色", + [5] = '{C:inactive}(拉動即可重新排列)' + -- TODO this joker is a bit wordy + } + }, + j_bunc_ghost_print = { + ['name'] = '重影小丑', + ['text'] = { + [1] = '給予上一個打出的{C:attention}牌型{}的', + [2] = '籌碼及倍數', + [3] = '{C:inactive}(上一個牌型:#1#)' + } + }, + j_bunc_loan_shark = { + ['name'] = '高利貸者', + ['text'] = { + [1] = '得到這張牌時', + [2] = '獲得{C:money}$#1#' + }, + ['unlock'] = { + [1] = '在一個回合中', + [2] = '花掉至少{E:1,C:attention}$100' + } + }, + j_bunc_loan_shark_full = { + ['name'] = '高利貸者', + ['text'] = { + [1] = '得到這張牌時,獲得{C:money}$#1#', + [2] = '把賣出價格設置{C:money}$-100' + } + }, + j_bunc_basement = { + ['name'] = '地下室小丑', + ['text'] = { + [1] = '擊敗{C:attention}Boss盲注{}時', + [2] = '產生一張隨機的{C:spectral}幻靈牌{}', + [3] = '{C:inactive}(必須有空位)' + } + }, + j_bunc_shepherd = { + ['name'] = '牧羊人小丑', + ['text'] = { + [1] = '當打出的卡牌包含{C:attention}對子{}時', + [2] = '這張小丑牌會獲得{C:chips}+#1#{}籌碼', + [3] = '{C:inactive}(目前會給予{C:chips}+#2#{C:inactive}籌碼)' + } + }, + j_bunc_knight = { + ['name'] = '騎士小丑', + ['text'] = { + [1] = '選擇{C:attention}盲注{}後,{C:attention}洗亂{}所有小丑牌', + [2] = '這張小丑牌並會獲得{C:mult}+#1#{}倍數', + [3] = '如果有小丑牌重新排列,獲得的倍數將會{C:red}重設{}', + [4] = '{C:inactive}(目前會給予{C:mult}+#2#{C:inactive}倍數)' + }, + ['unlock'] = { + [1] = '在沒有停用限制效果下', + [2] = '擊敗{E:1,C:attention}琥珀橡果' + } + }, + j_bunc_jmjb = { + ['name'] = '小丑戰士及弄臣男孩的第54張集換式卡牌', + ['text'] = { + [1] = '所有{C:attention}標準擴充包{}', + [2] = '只會包含{C:attention}加強牌{}' + }, + ['unlock'] = { + [1] = '打開{E:1,C:attention}#1#{}個', + [2] = '擴充包', + [3] = '{C:inactive}(#2#)' + } + }, + j_bunc_dogs_playing_poker = { + ['name'] = '玩撲克的狗', + ['text'] = { + [1] = '如果所有得分的卡牌是{C:attention}2{}、{C:attention}3{}、{C:attention}4{}或{C:attention}5', + [2] = '倍數{X:mult,C:white}X#1#{}', + } + }, + j_bunc_righthook = { + ['name'] = '右擺拳小丑', + ['text'] = { + [1] = '每個剩餘的{C:blue}出牌次數{}', + [2] = '會額外觸發最右邊的得分牌一次', + }, + ['unlock'] = { + [1] = '額外觸發', + [2] = '一張卡牌至少{E:1,C:attention}#1#次{}', + } + }, + j_bunc_fiendish = { + ['name'] = '惡魔小丑', + ['text'] = { + [1] = '對所有金錢來源的數量加倍,', + [2] = '有{C:green}#1#/#2#{}的機率', + [3] = '把盲注中兌現的金錢設至{C:money}$1{}' + }, + ['unlock'] = { + [1] = '完成{E:1,C:attention}孤注一擲{}挑戰', + } + }, + j_bunc_carnival = { + ['name'] = '嘉年華', + ['text'] = { + [1] = '擊敗{C:attention}Boss盲注{}後,', + [2] = '{C:attention}摧毀{}隨機的小丑牌', + [3] = '並對底注減低一級', + [4] = '每個底注只可觸發一次' + -- TODO needs a line for whether it's active / ante it will be active + }, + ['unlock'] = { + [1] = '到達第{E:1,C:attention}0{}級底注', + } + }, + j_bunc_sledgehammer = { + ['name'] = '大錘', + ['text'] = { + [1] = '{C:attention}玻璃牌{}會給予額外{X:mult,C:white}X#1#{}倍數', + [2] = '但會總是在得分後摧毀' + }, + ['unlock'] = { + [1] = '打出只有5張', + [2] = '{C:attention,E:1}玻璃牌{}的手牌', + } + }, + j_bunc_doorhanger = { + ['name'] = '門把掛牌', + ['text'] = { + [1] = '{C:blue}常見{}的小丑牌不再出現', + [2] = '{s:0.8}會以其他稀有度的小丑牌取代' + }, + ['unlock'] = { + [1] = '在沒有得到{C:attention,E:1}常見{}小丑牌下', + [2] = '贏得一局遊戲', + } + }, + j_bunc_fingerprints = { + ['name'] = '手指模', + ['text'] = { + [1] = '在{C:attention}獲勝手牌{}中的得分牌', + [2] = '會獲得{C:chips}+#1#{}籌碼', + [3] = '直到下一個回合結束', + } + }, + j_bunc_zero_shapiro = { + ['name'] = '零零精靈', + ['text'] = { + [1] = '打出的{C:attention}K{}、{C:attention}Q{}、{C:attention}J{}及{C:attention}無牌級卡牌', + [2] = '在得分時,有{C:green}#1#/#2#{}機率', + [3] = '產生一個{C:attention}D6標籤', + } + }, + j_bunc_nil_bill = { + ['name'] = '虛無胡迪尼', + ['text'] = { + [1] = '當有卡牌被摧毀時', + [2] = '獲得{C:money}$#1#{}', + } + }, + j_bunc_bierdeckel = { + ['name'] = '啤酒杯蓋', + ['text'] = { + [1] = '打出或棄掉卡牌後,', + [2] = '在手中的卡牌會獲得{C:chips}+#1#{}籌碼', + [3] = '直到回合結束' + } + }, + j_bunc_registration_plate = { + ['name'] = '註冊車牌', + ['text'] = { + [1] = '#1#', + [2] = '會有所有在這局遊戲中', + [3] = '打出的{C:attention}牌型{}的籌碼及倍數', + [4] = '{s:0.8}需要的組合在回合結束後變更' + }, + ['unlock'] = { + [1] = '完成{E:1,C:attention}一刻鐘城市{}挑戰', + } + }, + j_bunc_slothful = { + ['name'] = '懶惰小丑', + ['text'] = { + [1] = '打出的{C:attention}萬能牌', + [2] = '在得分時給予{C:mult}+#1#{}倍數', + }, + ['unlock'] = { + [1] = '打出只有5張', + [2] = '{C:attention,E:1}萬能牌{}的手牌', + } + }, + j_bunc_neon = { + ['name'] = '霓虹燈小丑', + ['text'] = { + [1] = '當有卡牌{C:attention}加強{}時', + [2] = '自動附上{C:dark_edition}螢光{}版本', + [3] = '到那張卡牌中' + }, + ['unlock'] = { + [1] = '打出只有5張', + [2] = '{C:attention,E:1}被減益的卡牌{}的手牌', + } + }, + j_bunc_gameplan = { + ['name'] = '戰術板', + ['text'] = { + [1] = '在這張小丑牌鄰近的{C:attention}小丑牌{}', + [2] = '會被{C:red}減益{}並給予{C:mult}+#1#{}倍數', + }, + ['unlock'] = { + [1] = '在沒有停用限制效果下', + [2] = '擊敗{E:1,C:attention}翠綠樹葉' + } + }, + j_bunc_conquest = { + ['name'] = '征服地圖', + ['text'] = { + [1] = '{C:chips}+#1#{}籌碼', + [2] = '選擇{C:attention}盲注{}後,', + [3] = '對隨機一張小丑牌{C:red}減益{}' + }, + ['unlock'] = { + [1] = '在沒有停用限制效果下', + [2] = '擊敗{E:1,C:attention}緋紅之心' + } + }, + j_bunc_hierarchy_of_needs = { + ['name'] = '需求層次', + ['text'] = { + [1] = '每個在{C:attention}你的牌組{}中的{C:attention}2至A{}同花順序', + [2] = '會給予{C:mult}+#1#{}倍數', + [3] = '{C:inactive}(目前會給予{C:mult}+#2#{C:inactive}倍數)', + } + }, + j_bunc_dwarven = { + ['name'] = '矮人小丑', + ['text'] = { + [1] = '在手牌中的{C:attention}石頭牌{}', + [2] = '會帶有{C:attention}鋼鐵牌{}及{C:attention}黃金牌{}的效果', + }, + ['unlock'] = { + [1] = '打出一個帶有', + [2] = '{E:1,C:attention}石頭牌{},{E:1,C:attention}鋼鐵牌', + [3] = '及{E:1,C:attention}黃金牌{}的手牌' + } + }, + j_bunc_aristocrat = { + ['name'] = '貴族小丑', + ['text'] = { + [1] = '可以從{C:attention}擴充包{}中', + [2] = '選擇額外一張卡牌' + }, + ['unlock'] = { + [1] = '在沒有打開任何{C:attention}擴充包{}下', + [2] = '贏得一局遊戲', + } + }, + j_bunc_metallurgist = { + ['name'] = '冶金小丑', + ['text'] = { + [1] = '每張在手牌中的{C:attention}黃金牌{}', + [2] = '會給予{C:mult}+#1#{}倍數' + } + }, + j_bunc_juggalo = { + ['name'] = '嘻哈小丑', + ['text'] = { + [1] = '選擇{C:attention}盲注{}後', + [2] = '附加{C:dark_edition}銀箔{}、{C:dark_edition}全息{}、', + [3] = '{C:dark_edition}彩色{}或{C:dark_edition}閃光{}版本', + [4] = '到一張隨機的{C:attention}消耗牌{}', + }, + ['unlock'] = { + [1] = '使用{C:attention,E:1}#1#{}張', + [2] = '帶有{C:attention,E:1}版本{}的消耗牌', + [3] = '{C:inactive}(#2#)' + } + }, + j_bunc_head_in_the_clouds = { + ['name'] = '人頭在天', + ['text'] = { + [1] = '當你升級任何一個{C:attention}牌型{}時', + [2] = '會有{C:green}#1#/#2#{}的機率', + [3] = '對{C:attention}高牌{}等級提升一級', + }, + ['unlock'] = { + [1] = '在{C:attention,E:1}高牌{}為最高等級的牌型下', + [2] = '贏得一局遊戲', + } + }, + j_bunc_headshot = { + ['name'] = '爆頭', + ['text'] = { + [1] = '如果打出的手牌只有一張得分的{C:attention}人頭牌{}', + [2] = '倍數{X:mult,C:white}X#1#{}', + } + }, + j_bunc_trigger_finger = { + ['name'] = '扳機指', + ['text'] = { + [1] = '倍數{X:mult,C:white}X#1#{}', + [2] = '{C:attention}選擇{}的卡牌', + [3] = '有{C:green}#2#/#3#{}的機率', + [4] = '會被強制打出' + }, + ['unlock'] = { + [1] = '在沒有停用限制效果下', + [2] = '擊敗{E:1,C:attention}蔚藍鈴鐺' + } + }, + j_bunc_hopscotch = { + ['name'] = '跳房子', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}順子{}', + [2] = '將會獲得{C:red}+#1#{}棄牌次數', + } + }, + j_bunc_pawn = { + ['name'] = '棋兵', + ['text'] = { + [1] = '在你的牌組中', + [2] = '{C:attention}最低{}牌級的卡牌', + [3] = '會在得分後{C:attention}提升一個等級{}', + [4] = '{C:inactive}(目前最低的牌級:#1#)' + -- TODO "when scored" is only accurate + -- if the card's rank changes during scoring + } + }, + j_bunc_puzzle_board = { + ['name'] = '解謎版', + ['text'] = { + [1] = '使用{C:tarot}塔羅牌{}後,', + [2] = '有{C:green}#1#/#2#{}的機率', + [3] = '附加{C:dark_edition}銀箔{}、{C:dark_edition}全息{}', + [4] = '或{C:dark_edition}彩色{}版本', + [5] = '到選擇的隨機卡牌中' + } + }, + j_bunc_vandalism = { + ['name'] = '惡作劇小丑', + ['text'] = { + [1] = '卡牌有{C:green}#1#/#2#{}的機率', + [2] = '會以面朝下抽出', + [3] = '面朝下的卡牌在得分時給予{X:mult,C:white}X#3#{}倍數', + }, + ['unlock'] = { + [1] = '打出只有5張', + [2] = '{C:attention,E:1}被翻起的卡牌{}的手牌', + } + }, + j_bunc_protester = { + ['name'] = '示威者', + ['text'] = { + [1] = '對這個回合中', + [2] = '棄掉最高牌級的卡牌的{C:attention}#1#倍{}數量', + [3] = '增加至這張小丑牌的籌碼中', + [4] = '{C:inactive}(目前會給予:{C:chips}+#2#{C:inactive}籌碼)' + } + }, + j_bunc_doodle = { + ['name'] = '塗鴉', + ['text'] = { + [1] = '{C:attention}複製{}每個回合中', + [2] = '第一張使用的{C:tarot}塔羅牌{}或{C:planet}行星牌{}', + [3] = '{C:inactive}(必須有空位)' + }, + ['unlock'] = { + [1] = '贏得{C:attention,E:1}#1#{}局遊戲', + [2] = '{C:inactive}(#2#)' + } + }, + j_bunc_disproportionality = { + ['name'] = '比例錯誤', + ['text'] = { + [1] = '' + } + }, + j_bunc_running_joke = { + ['name'] = '重複性笑話', + ['text'] = { + [1] = '進入商店時', + [2] = '產生一張{C:dark_edition}負片{}的"{C:attention}小丑{}"', + } + }, + j_bunc_on_broadway = { + ['name'] = '百老匯戲劇', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}順子{}', + [2] = '並包含得分的{C:attention}人頭牌', + [3] = '{C:chips}+#1#{}籌碼及倍數{C:mult}+#2#{}' + } + }, + j_bunc_rasta = { + ['name'] = '拉斯塔法里', + ['text'] = { + [1] = '如果打出的手牌沒有得分的{C:attention}加強牌{}', + [2] = '倍數{C:mult}+#1#{}', + }, + ['unlock'] = { + [1] = '在沒有得到{C:attention,E:1}加強牌{}下', + [2] = '贏得一局遊戲' + } + }, + j_bunc_critic = { + ['name'] = '批評家小丑', + ['text'] = { + [1] = "如果打出的手牌得到的分數", + [2] = '{C:attention}少於{}盲注所需分數的{C:attention}1/#2#{},倍數{X:mult,C:white}X#1#{}', + } + }, + j_bunc_cellphone = { + ['name'] = '手提電話', + ['text'] = { + [1] = '如果回合中沒有棄掉卡牌', + [2] = '在第一次出牌後,所有得分的卡牌會{C:attention}回到{}手中', + } + }, + j_bunc_wino = { + ['name'] = '醉鬼小丑', + ['text'] = { + [1] = '打出的{C:hearts}紅心{}及{C:diamonds}方塊{}花色的卡牌', + [2] = '在得分時給予{C:chips}+#1#{}籌碼', + } + }, + j_bunc_bounty_hunter = { + ['name'] = '賞金獵人', + ['text'] = { + [1] = '所有金錢來源的收入降低{C:money}#1#${}', + [2] = '當你獲得金錢時,這張小丑牌會獲得{C:mult}+#1#{}倍數', + [3] = '{C:inactive}(目前會給予:{C:mult}+#2#{C:inactive}倍數)' + }, + ['unlock'] = { + [1] = '在一局遊戲中', + [2] = '擁有少於{E:1,C:attention}$#1#{}金錢' + } + }, + j_bunc_mousetrap = { + ['name'] = '捕鼠器', + ['text'] = { + [1] = '{C:chips}+#1#{}籌碼,', + [2] = '有{C:green}#2#/#3#{}的機率不會觸發', + [3] = '並{C:attention}失去{}一次出牌次數' + } + }, + j_bunc_the_joker = { + ['name'] = '盲注小丑', + ['text'] = { + [1] = '打出手牌後', + [2] = '每張得分的非加強牌', + [3] = '有{C:green}#1#/#2#{}的機率被摧毀', + }, + ['unlock'] = { + [1] = '發現所有', + [2] = '{C:attention}Boss盲注' + } + }, + j_bunc_tangram = { + ['name'] = '七巧板', + ['text'] = { + [1] = '當有{C:attention}7{}得分時,', + [2] = '將給予{C:mult}+#1#{}倍數乘以得分的{C:attention}7{}的數量', + } + }, + j_bunc_domino = { + ['name'] = '骨牌', + ['text'] = { + [1] = '當{C:attention}使用{}或{C:attention}獲得', + [2] = '從商店或擴充包的卡牌時', + [3] = '將會獲得{C:attention}兩{}張鄰近的卡牌', + [4] = '{C:inactive}(必須有空位){}' + } + }, + j_bunc_glue_gun = { + ['name'] = '熱熔膠槍', + ['text'] = { + [1] = '賣掉這張牌', + [2] = '來{C:attention}連接{}最多#1#張選擇的卡牌', + } + }, + j_bunc_taped = { + ['name'] = '捆紮的小丑', + ['text'] = { + [1] = '在{C:attention}Boss盲注{}中', + [2] = '{C:attention}連接{}在第一次出牌中的所有得分牌', + } + }, + j_bunc_rubber_band_ball = { + ['name'] = '橡皮筋球', + ['text'] = { + [1] = '每個在這局遊戲中製造的{C:attention}連接組合{}', + [2] = '會給予這張小丑牌{X:mult,C:white}X#1#{}倍數', + [3] = '{C:inactive}(目前會給予:{X:mult,C:white}X#2#{C:inactive}倍數)' + } + }, + j_bunc_headache = { + ['name'] = '頭暈目眩', + ['text'] = { + [1] = '每當摧毀{C:attention}#1#{}張卡牌時', + [2] = '產生一個{C:bunco_virtual_dark}街機標籤', + [3] = '{C:inactive}(目前已摧毀{C:attention}#2#{C:inactive}/#1#張卡牌)' + } + }, + j_bunc_games_collector = { + ['name'] = '遊戲收藏家', + ['text'] = { + [1] = '當有連接牌{C:attention}抽到{}手中時', + [2] = '這張小丑牌將獲得{C:chips}+#1#{}籌碼', + [3] = '{C:inactive}(目前會給予:{C:chips}+#2#{C:inactive}籌碼)' + } + }, + j_bunc_jumper = { + ['name'] = '跳躍水管工', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}同花{}', + [2] = '這張小丑牌將獲得{C:chips}+#1#{}籌碼', + [3] = '{C:inactive}(目前會給予:{C:chips}+#2#{C:inactive}籌碼)' + } + }, + j_bunc_stylophone = { + ['name'] = '賽樂瘋', + ['text'] = { + [1] = '當卡牌得分時,', + [2] = '會給予它們{C:attention}牌級{}的{C:attention}X#1#{}倍的數量的倍數', + } + }, + j_bunc_kite_experiment = { + ['name'] = '風箏實驗', + ['text'] = { + [1] = '重新得分的{C:attention}紅銅牌', + [2] = '會有{C:green}#1#/#2#{}的機率', + [3] = '再次{C:attention}重新得分{}一次' + } + }, + j_bunc_robot = { + ['name'] = '機械小丑', + ['text'] = { + [1] = '每當有{C:attention}紅銅牌{}重新得分時', + [2] = '這張小丑牌會獲得{C:mult}+#1#{}倍數', + [4] = '{C:inactive}(目前會給予:{C:mult}+#2#{C:inactive}倍數)' + } + }, + j_bunc_hardtack = { + ['name'] = '壓縮餅乾', + ['text'] = { + [1] = '{C:attention}餅乾牌{}不會在棄掉後', + [2] = '被摧毀', + } + }, + j_bunc_pica = { + ['name'] = '異食小丑', + ['text'] = { + [1] = '當棄掉{C:attention}餅乾牌{}時', + [2] = '打出所有棄掉的卡牌', + } + }, + + -- Exotic Jokers + + j_bunc_zealous = { + ['name'] = '狂熱小丑', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}五色', + [2] = '倍數{C:mult}+#1#{}', + } + }, + j_bunc_lurid = { + ['name'] = '駭人小丑', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}五色', + [2] = '{C:chips}+#1#{}籌碼', + } + }, + j_bunc_envious = { + ['name'] = '忌妒小丑', + ['text'] = { + [1] = '每張打出的{C:bunc_fleurons}花葉{}花色的卡牌', + [2] = "在得分時給予{C:red}+#1#{}倍數", + } + }, + j_bunc_proud = { + ['name'] = '驕傲小丑', + ['text'] = { + [1] = '每張打出的{C:bunc_halberds}斧槍{}花色的卡牌', + [2] = "在得分時給予{C:red}+#1#{}倍數", + } + }, + j_bunc_wishalloy = { + ['name'] = '夢合金', + ['text'] = { + [1] = '每張打出的{C:bunc_fleurons}花葉{}花色的卡牌', + [2] = '在得分時有{C:green}#1#/#2#{}的機率', + [3] = '會獲得與卡牌得到的籌碼相等的{C:money}金錢{}', + } + }, + j_bunc_unobtanium = { + ['name'] = '難得素', + ['text'] = { + [1] = '每張打出的{C:bunc_halberds}斧槍{}花色的卡牌', + [2] = '在得分時給予{C:chips}+#1#{}籌碼及{C:mult}+#2#{}倍數', + } + }, + j_bunc_dynasty = { + ['name'] = '萬眾一心', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}五色', + [2] = '倍數{X:mult,C:white}X#1#{}', + } + }, + j_bunc_magic_wand = { + ['name'] = '魔法棒', + ['text'] = { + [1] = '每次{C:attention}連續{}打出帶有{C:attention}五色{}的手牌時', + [2] = '這張小丑牌會獲得{C:mult}+#1#{}倍數', + [3] = '{C:inactive}(目前會給予:{C:mult}+#2#{C:inactive}倍數)' + } + }, + j_bunc_starfruit = { + ['name'] = '楊桃', + ['text'] = { + [1] = '如果打出的牌型包含{C:attention}五色', + [2] = '對那個牌型的等級提升一級', + [3] = '這張小丑牌有{C:green}#1#/#2#{}的機率', + [4] = '在回合結束後摧毀' + } + }, + j_bunc_fondue = { + ['name'] = '起司火鍋', + ['text'] = { + [1] = '所有在{C:attention}第一次出牌{}中的得分牌', + [2] = '會轉為{C:bunc_fleurons}花葉{}花色', + } + }, + j_bunc_myopia = { + ['name'] = '近視小丑', + ['text'] = { + [1] = '{C:spades}黑桃{}及{C:clubs}梅花{}花色的卡牌', + [2] = '都一律視為{C:bunc_halberds}斧槍{}花色' + } + }, + j_bunc_astigmatism = { + ['name'] = '散光小丑', + ['text'] = { + [1] = '{C:hearts}紅心{}及{C:diamonds}方塊{}花色的卡牌', + [2] = '都一律視為{C:bunc_fleurons}花葉{}花色' + } + }, + j_bunc_roygbiv = { + ['name'] = '彩虹小丑', + ['text'] = { + [1] = '如果打出的手牌包含{C:attention}五色', + [2] = '將有{C:green}#1#/#2#{}的機率', + [3] = '對隨機的得分牌附加{C:dark_edition}彩色{}版本', + } + }, + j_bunc_rigoletto = { + ['name'] = '利戈萊托', + ['text'] = { + [1] = '每張在你的{C:attention}牌組{}中的{C:bunco_exotic}奇異卡牌{}', + [2] = '會給予這張小丑牌{X:mult,C:white}X#1#{}倍數', + [3] = '{C:inactive}(目前會給予:{X:mult,C:white}X#2#{C:inactive}倍數)' + }, + ['unlock'] = { + [1] = '{E:1,s:1.3}?????' + } + }, + }, + Blind = { + bl_bunc_paling = { + ['name'] = '柵欄', + ['text'] = { + [1] = '出牌及棄牌', + [2] = '會消耗雙方的次數' + } + }, + bl_bunc_umbrella = { + ['name'] = '雨傘', + ['text'] = { + [1] = '打出手牌後', + [2] = '把所有手中的卡牌翻到背面' + } + }, + bl_bunc_tine = { + ['name'] = '尖端', + ['text'] = { + [1] = '每張 #1# 都被減益' + } + }, + bl_bunc_swing = { + ['name'] = '鞦韆', + ['text'] = { + [1] = '打出或棄掉手牌後', + [2] = '翻起所有手牌' + } + }, + bl_bunc_miser = { + ['name'] = '財迷', + ['text'] = { + [1] = '打敗這個盲注後', + [2] = '跳過下一個商店' + } + }, + bl_bunc_gate = { + ['name'] = '閘門', + ['text'] = { + [1] = '選擇的卡牌', + [2] = '不能取消選擇' + } + }, + bl_bunc_flame = { + ['name'] = '烈焰', + ['text'] = { + [1] = '所有加強牌', + [2] = '都被減益' + } + }, + bl_bunc_mask = { + ['name'] = '面具', + ['text'] = { + [1] = '#1#會有', + [2] = '#2#的基礎籌碼及倍數' + } + }, + bl_bunc_bulwark = { + ['name'] = '堡壘', + ['text'] = { + [1] = '打出#1#', + [2] = '會棄掉所有手牌' + } + }, + bl_bunc_knoll = { + ['name'] = '小丘', + ['text'] = { + [1] = '擁有多於$5時', + [2] = '第一次抽出的手牌會被減益' + } + }, + bl_bunc_stone = { + ['name'] = '石塊', + ['text'] = { + [1] = '每擁有的$10', + [2] = '會對要求分數+1X' + } + }, + bl_bunc_sand = { + ['name'] = '細砂', + ['text'] = { + [1] = '每個擁有的標籤', + [2] = '會對要求分數+1X' + } + }, + bl_bunc_blade = { + ['name'] = '刀刃', + ['text'] = { + [1] = '第一次超越#1#分數時', + [2] = '對打出手牌的分數設至0' + } + }, + bl_bunc_claw = { + ['name'] = '爪子', + ['text'] = { + [1] = '棄掉的卡牌', + [2] = '會返回到牌組中' + } + }, + bl_bunc_veil = { + ['name'] = '面紗', + ['text'] = { + [1] = '選擇的卡牌', + [2] = '會翻到背面' + } + }, + bl_bunc_cadaver = { + ['name'] = '屍體', + ['text'] = { + [1] = '一定不能打出人頭牌' + } + }, + bl_bunc_wind = { + ['name'] = '疾風', + ['text'] = { + [1] = '最左邊的小丑牌', + [2] = '會被減益' + } + }, + bl_bunc_prince = { + ['name'] = '王子', + ['text'] = { + [1] = '所有小丑牌都被減益', + [2] = '直到打出第一個手牌' + } + }, + bl_bunc_depths = { + ['name'] = '深洞', + ['text'] = { + [1] = '打出手牌後,獲得永久', + [2] = '有限期或分散標籤' + } + }, + bl_bunc_chasm = { + ['name'] = '裂口', + ['text'] = { + [1] = '打出手牌後,獲得阻礙', + [2] = '活性或租貸標籤' + } + }, + + -- Final + + bl_bunc_final_crown = { + ['name'] = '夏翠絲皇冠', + ['text'] = { + [1] = '所有以黑桃,紅心,梅花及方塊', + [2] = '為基礎花色的卡牌都被減益' + } + }, + bl_bunc_final_trident = { + ['name'] = '朱紅三叉戟', + ['text'] = { + [1] = '每次在這個底注中購買時', + [2] = '會對要求分數+1X' + } + }, + bl_bunc_final_tower = { + ['name'] = '靛藍高塔', + ['text'] = { + [1] = '在這個底注中', + [2] = '未被打出的卡牌都被減益' + } + }, + bl_bunc_final_dagger = { + ['name'] = '洋紅匕首', + ['text'] = { + [1] = '棄掉的卡牌會被打出', + [2] = '其得到的分數會減去現有的分數' + } + }, + bl_bunc_final_shield = { + ['name'] = '青綠盾牌', + ['text'] = { + [1] = '這個底注中每個超過要求分數的數量', + [2] = "會加到這個盲注的要求分數中" + } + } + }, + Back = { + b_bunc_fairy = { + ['name'] = '妖精牌組', + ['text'] = { + [1] = '擊敗{C:attention}Boss盲注{}後', + [2] = '新增#1#張隨機的{C:bunco_exotic,T:bunc_exotic_cards}#2#{}', + [3] = '到你的牌組中', + }, + ['unlock'] = { + [1] = '在一次出牌中', + [2] = '打出{E:1,C:attention}五個不同的花色', + } + }, + b_bunc_digital = { + ['name'] = '數碼牌組', + ['text'] = { + [1] = '{C:bunco_virtual_dark}多連塊牌{}有機率會在商店中出現', + [2] = "開始遊戲時獲得一張{C:bunco_virtual_dark,T:c_bunc_the_i}條形{}牌" + } + } + }, + Tag = { + + -- Reworked + + tag_bunc_boss = { + ['name'] = '盲注標籤', + ['text'] = { + [1] = '獲得一個免費的', + [2] = '{C:attention}盲注擴充包' + } + }, + tag_bunc_double = { + ['name'] = '雙倍標籤', + ['text'] = { + [1] = '複製下一個', + [2] = "獲得的{C:attention}標籤{}", + [3] = '{s:0.6,C:attention}雙倍及三倍標籤{s:0.8}除外' + } + }, + tag_bunc_d_six = { + ['name'] = 'D6標籤', + ['text'] = { + [1] = '下一個商店', + [2] = '會有一次免費的{C:green}刷新' + } + }, + + -- Main Tags + + tag_bunc_breaking = { + ['name'] = '清除標籤', + ['text'] = { + [1] = '停用{C:attention}Boss盲注{}的', + [2] = '限制效果', + } + }, + tag_bunc_arcade = { + ['name'] = '街機標籤', + ['text'] = { + [1] = '獲得一個免費的', + [2] = '{C:bunco_virtual_dark}超級虛擬擴充包' + } + }, + tag_bunc_triple = { + ['name'] = '三倍標籤', + ['text'] = { + [1] = '產生兩個下一個', + [2] = '獲得的{C:attention}標籤{}的複本', + [3] = '{s:0.6,C:attention}雙倍及三倍標籤{s:0.8}除外' + } + }, + tag_bunc_shopping = { + ['name'] = '購物標籤', + ['text'] = { + [1] = '獲得{C:attention}一{}次免費的', + [2] = '商店{C:green}刷新' + } + }, + + -- Edition tags + + tag_bunc_glitter = { + ['name'] = '閃光標籤', + ['text'] = { + [1] = "下一個在商店中的", + [2] = "基本版小丑會是免費", + [3] = "並附有{C:dark_edition}閃光{}版本", + } + }, + tag_bunc_fluorescent = { + ['name'] = '螢光標籤', + ['text'] = { + [1] = "下一個在商店中的", + [2] = "基本版小丑會是免費", + [3] = "並附有{C:dark_edition}螢光{}版本", + } + }, + + -- Consumable edition tags + + tag_bunc_chips = { + ['name'] = '籌碼標籤', + ['text'] = { + [1] = '下一次出牌時,獲得{C:chips}+#1#{}籌碼' + } + }, + tag_bunc_mult = { + ['name'] = '倍數標籤', + ['text'] = { + [1] = '下一次出牌時,獲得{C:mult}+#1#{}倍數', + } + }, + tag_bunc_xmult = { + ['name'] = '超級倍數標籤', + ['text'] = { + [1] = '下一次出牌時,獲得{X:mult,C:white}X#1#{}倍數', + } + }, + tag_bunc_xchips = { + ['name'] = '超級籌碼標籤', + ['text'] = { + [1] = '下一次出牌時,獲得{X:chips,C:white}X#1#{}籌碼' + } + }, + + -- Exotic tags + + tag_bunc_filigree = { + ['name'] = '掐絲標籤', + ['text'] = { + [1] = '下一個{C:attention}標準擴充包{}', + [2] = '只會包含{C:bunco_exotic}奇異卡牌' + } + }, + + -- Anti-tags + + tag_bunc_eternal = { + ['name'] = '永久標籤', + ['text'] = { + [1] = '下一個在商店裏的小丑牌', + [2] = '會帶有{C:attention}永久{}貼紙' + } + }, + tag_bunc_perishable = { + ['name'] = '有限期標籤', + ['text'] = { + [1] = '下一個在商店裏的小丑牌', + [2] = '會帶有{C:attention}有限期{}貼紙' + } + }, + tag_bunc_scattering = { + ['name'] = '分散標籤', + ['text'] = { + [1] = '下一個在商店裏的小丑牌', + [2] = '會帶有{C:attention}分散{}貼紙' + } + }, + tag_bunc_hindered = { + ['name'] = '阻礙標籤', + ['text'] = { + [1] = '下一個在商店裏的小丑牌', + [2] = '會帶有{C:attention}阻礙{}貼紙' + } + }, + tag_bunc_reactive = { + ['name'] = '活躍標籤', + ['text'] = { + [1] = '下一個在商店裏的小丑牌', + [2] = '會帶有{C:attention}活躍{}貼紙' + } + }, + tag_bunc_rental = { + ['name'] = '租貸標籤', + ['text'] = { + [1] = '下一個在商店裏的小丑牌', + [2] = '會帶有{C:attention}租貸{}貼紙' + } + } + }, + Edition = { + e_bunc_glitter = { + ['name'] = '閃光', + ['text'] = { + [1] = '{X:chips,C:white}X#1#{}籌碼' + } + }, + e_bunc_fluorescent = { + ['name'] = '螢光', + ['text'] = { + [1] = '這張牌不會被翻起,減益', + [2] = '或強制選擇' + } + }, + + e_bunc_consumable_edition_foil = { + ['name'] = '銀箔', + ['text'] = { + [1] = '產生一個{C:attention}籌碼標籤' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = '全息', + ['text'] = { + [1] = '產生一個{C:attention}倍數標籤' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = '彩色', + ['text'] = { + [1] = '產生一個{C:attention}超級倍數標籤' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = '閃光', + ['text'] = { + [1] = '產生一個{C:attention}超級籌碼標籤' + } + }, + }, + Voucher = { + v_bunc_lamination = { + ['name'] = '塑封', + ['text'] = { + [1] = '在{C:attention}擴充包{}裏的消耗牌', + [2] = '有機會以帶有{C:dark_edition}版本{}的形式出現', + } + }, + v_bunc_supercoating = { + ['name'] = '專業鍍膜', + ['text'] = { + [1] = '所有在{C:attention}擴充包{}裏的消耗牌', + [2] = '都將以帶有{C:dark_edition}版本{}的形式出現', + }, + ['unlock'] = { + [1] = '使用{C:attention,E:1}#1#{}張', + [2] = '帶有{C:attention,E:1}版本{}的消耗牌', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_hedge_trimmer = { + ['name'] = '樹籬修剪', + ['text'] = { + [1] = "每次打出手牌後", + [2] = '對盲注所需分數減低{C:attention}#1#%{}' + } + }, + v_bunc_chainsaw = { + ['name'] = '電鋸', + ['text'] = { + [1] = '所有所需分數', + [2] = '減低{C:attention}#1#%{}' + }, + ['unlock'] = { + [1] = "使用樹籬修剪", + [2] = '來減低分數合共{C:attention,E:1}#1#{}次', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_cups_n_balls = { + ['name'] = "三仙歸洞", + ['text'] = { + [1] = '擴充包欄位{C:attention}+1{}', + } + }, + v_bunc_shell_game = { + ['name'] = '空殼遊戲', + ['text'] = { + [1] = '每個擴充包裏的{C:attention}內容', + [2] = '可以刷新{C:attention}1{}次', + }, + ['unlock'] = { + [1] = '打開{E:1,C:attention}#1#{}個', + [2] = '擴充包', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_disguise = { + ['name'] = '喬裝', + ['text'] = { + [1] = '{C:attention}盲注擴充包{}', + [2] = '有機率出現在商店中' + } + }, + v_bunc_masquerade = { + ['name'] = '化裝舞會', + ['text'] = { + [1] = '所有在商店的{C:attention}盲注擴充包{}', + [2] = '均為免費' + }, + ['unlock'] = { + [1] = '使用盲注擴充包', + [2] = '來調換{E:1,C:attention}#1#{}個盲注', + [3] = '{C:inactive}(#2#)', + } + }, + v_bunc_fanny_pack = { + ['name'] = '腰包', + ['text'] = { + [1] = '每次{C:attention}跳過{}盲注後', + [2] = '有{C:green}#1#/#2#{}的機率', + [3] = '獲得一個{C:attention}雙倍標籤', + } + }, + v_bunc_pin_collector = { + ['name'] = '飾針收藏家', + ['text'] = { + [1] = '所有新的{C:attention}雙倍標籤', + [2] = '會變成{C:attention}三倍標籤' + }, + ['unlock'] = { + [1] = '合共跳過', + [2] = '{E:1,C:attention}#1#{}個盲注', + [3] = '{C:inactive}(#2#)' + } + }, + v_bunc_arcade_machine = { + ['name'] = '街機', + ['text'] = { + [1] = '商店內出現{C:bunco_virtual_dark}虛擬擴充包{}的頻率', + [2] = '增加{C:attention}四倍{}' + } + }, + v_bunc_polybius = { + ['name'] = '波利比烏斯', + ['text'] = { + [1] = '{C:bunco_virtual_dark}多連塊牌{}可以連接{C:attention}額外一張{}卡牌', + [2] = '{s:0.6,C:inactive}額外的卡牌可以是任何卡牌', + }, + ['unlock'] = { + [1] = '合共製造{E:1,C:attention}#1#{}個連接卡牌的組合', + [2] = '{C:inactive}(#2#)' + } + } + }, + Enhanced = { + m_bunc_copper = { + ['name'] = '紅銅牌', + ['text'] = { + [1] = '如果{C:attention}鄰近{}有其他得分的紅銅牌', + [2] = '這張卡牌會重新得分一次', + }, + }, + m_bunc_cracker = { + ['name'] = '餅乾牌', + ['text'] = { + [1] = '這張卡牌會在{C:attention}棄掉{}後打出', + [2] = '並在得分後摧毀', + }, + }, + }, + Stake = { + stake_bunc_cyan = { + ['name'] = '青色賭注', + ['text'] = { + [1] = "商店可能會出現{C:attention}分散{}的小丑牌", + [2] = '{C:inactive,s:0.8}(#1#)', + [3] = '{s:0.8}套用先前賭注的效果' + } + }, + stake_bunc_pink = { + ['name'] = '粉紅賭注', + ['text'] = { + [1] = "商店可能會出現{C:attention}阻礙{}的小丑牌", + [2] = '{C:inactive,s:0.8}(#1#)', + [3] = '{s:0.8}套用先前賭注的效果' + } + }, + stake_bunc_magenta = { + ['name'] = '洋紅賭注', + ['text'] = { + [1] = "商店可能會出現{C:attention}活躍{}的小丑牌", + [2] = '{C:inactive,s:0.8}(#1#)', + [3] = '{s:0.8}套用先前賭注的效果' + } + } + } + } +} \ No newline at end of file diff --git a/localization/zh_cn.lua b/localization/zh_cn.lua index 86cbbc06..9eabc725 100644 --- a/localization/zh_cn.lua +++ b/localization/zh_cn.lua @@ -60,6 +60,7 @@ return { -- Translation by VisJoker bunc_exceeded_score = '超过限制!', bunc_min_ante = '最小底注:', bunc_final_blind = '最终盲注', + bunc_volume = '音量', -- 消耗品类型 @@ -200,30 +201,6 @@ return { -- Translation by VisJoker [2] = '{C:bunc_fleurons}花饰{}或{C:bunc_halberds}戟{}花色的卡牌' } }, - bunc_consumable_edition_foil = { - ['name'] = '箔片', - ['text'] = { - [1] = '创建一个{C:attention}筹码标签' - } - }, - bunc_consumable_edition_holo = { - ['name'] = '全息', - ['text'] = { - [1] = '创建一个{C:attention}倍数标签' - } - }, - bunc_consumable_edition_polychrome = { - ['name'] = '多色', - ['text'] = { - [1] = '创建一个{C:attention}巨倍标签' - } - }, - bunc_consumable_edition_bunc_glitter = { - ['name'] = '闪光', - ['text'] = { - [1] = '创建一个{C:attention}超筹码标签' - } - }, -- 未发现 @@ -355,11 +332,6 @@ return { -- Translation by VisJoker [2] = '所选卡牌至', [3] = '{C:attention}#2#级' }, - ['unlock'] = { - [1] = '从你的收藏中发现至少', - [2] = '{C:attention}#1#{}个物品', - [3] = '' - } }, c_bunc_art = { ['name'] = '艺术', @@ -368,11 +340,6 @@ return { -- Translation by VisJoker [2] = '所选卡牌至', [3] = '{C:attention}#2#级' }, - ['unlock'] = { - [1] = '从你的收藏中发现至少', - [2] = '{C:attention}#1#{}个物品', - [3] = '' - } }, c_bunc_universe = { ['name'] = '宇宙', @@ -382,11 +349,6 @@ return { -- Translation by VisJoker [3] = '牌级、增强、版本', [4] = '和封印' }, - ['unlock'] = { - [1] = '从你的收藏中发现至少', - [2] = '{C:attention}#1#{}个物品', - [3] = '' - } }, c_bunc_lust = { ['name'] = '色欲', @@ -396,11 +358,6 @@ return { -- Translation by VisJoker [3] = '{C:inactive}(最多{C:money}$#2#{C:inactive})', [4] = '{C:inactive}(当前{C:money}$#3#{C:inactive})' }, - ['unlock'] = { - [1] = '从你的收藏中发现至少', - [2] = '{C:attention}#1#{}个物品', - [3] = '' - } }, c_bunc_sky = { ['name'] = '天空', @@ -835,7 +792,7 @@ return { -- Translation by VisJoker j_bunc_registration_plate = { ['name'] = '车牌', ['text'] = { - [1] = '#1#', + [1] = '#1#, #2#, #3#, #4# 和 #5#', [2] = '拥有本局游戏中所有打出的', [3] = '{C:attention}扑克牌型{}的筹码和倍数', [4] = '{s:0.8}组合每轮变化' @@ -1094,7 +1051,7 @@ return { -- Translation by VisJoker j_bunc_bounty_hunter = { ['name'] = '赏金猎人', ['text'] = { - [1] = '所有金钱来源减少{C:money}1${},并且此小丑牌', + [1] = '所有金钱来源减少{C:money}#1#${},并且此小丑牌', [2] = '每次你获得金钱时获得{C:mult}+#1#{}倍数', [3] = '{C:inactive}(当前{C:mult}+#2#{C:inactive}倍数)' }, @@ -1705,7 +1662,32 @@ return { -- Translation by VisJoker [1] = '不能被翻面、减益', [2] = '或强制选择' } - } + }, + + e_bunc_consumable_edition_foil = { + ['name'] = '箔片', + ['text'] = { + [1] = '创建一个{C:attention}筹码标签' + } + }, + e_bunc_consumable_edition_holo = { + ['name'] = '全息', + ['text'] = { + [1] = '创建一个{C:attention}倍数标签' + } + }, + e_bunc_consumable_edition_polychrome = { + ['name'] = '多色', + ['text'] = { + [1] = '创建一个{C:attention}巨倍标签' + } + }, + e_bunc_consumable_edition_bunc_glitter = { + ['name'] = '闪光', + ['text'] = { + [1] = '创建一个{C:attention}超筹码标签' + } + }, }, Voucher = { v_bunc_lamination = { @@ -1846,7 +1828,7 @@ return { -- Translation by VisJoker ['name'] = '青色赌注', ['text'] = { [1] = '商店中可能出现{C:attention}散射{}小丑牌', - [2] = '{C:inactive,s:0.8}(移除时销毁随机相邻小丑牌)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}应用所有之前的赌注' } }, @@ -1854,7 +1836,7 @@ return { -- Translation by VisJoker ['name'] = '粉色赌注', ['text'] = { [1] = '商店中可能出现{C:attention}受阻{}小丑牌', - [2] = '{C:inactive,s:0.8}(出售后停留原位直至回合结束)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}应用所有之前的赌注' } }, @@ -1862,7 +1844,7 @@ return { -- Translation by VisJoker ['name'] = '品红色赌注', ['text'] = { [1] = '商店中可能出现{C:attention}反应性{}小丑牌', - [2] = '{C:inactive,s:0.8}(若此底注未跳过任何盲注,则减益)', + [2] = '{C:inactive,s:0.8}(#1#)', [3] = '{s:0.8}应用所有之前的赌注' } } diff --git a/lovely.toml b/lovely.toml index de7adb90..d744c737 100644 --- a/lovely.toml +++ b/lovely.toml @@ -12,10 +12,7 @@ position = 'after' match_indent = true payload = ''' -if text == 'bunc_Spectrum' -or text == 'bunc_Straight Spectrum' -or text == 'bunc_Spectrum House' -or text == 'bunc_Spectrum Five' then +if string.find(text, "Spectrum") then enable_exotics() unlock_card(G.P_CENTERS.b_bunc_fairy) end @@ -174,62 +171,8 @@ position = 'at' match_indent = true payload = '''elseif G.GAME.won and not BUNCOMOD.content.config.colorful_finishers then''' -# Black Hole 1/2 -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = 'for k, v in pairs(self.I.POPUP) do' -position = 'before' -match_indent = true -payload = ''' - -G.FORCEFIELD_CARDS = G.FORCEFIELD_CARDS or {} - -for index, card in ipairs(G.FORCEFIELD_CARDS) do - if BUNCOMOD.content.config.high_quality_shaders - and card - and not card.removed - and card.states.visible - and index <= 5 then - - love.graphics.setColor(G.C.WHITE) - - local w, h = love.graphics.getWidth(), love.graphics.getHeight() -- Get the size - - card.pinch_canvas = love.graphics.newCanvas(realw, realh) -- Create the black hole canvas (size is important or else it will cut off on fullscreen) - love.graphics.setCanvas(card.pinch_canvas) -- Enable the black hole canvas - - love.graphics.draw(self.CANVAS) -- Draw the old canvas onto the black hole one - - local pinch = G.SHADERS['bunc_pinch'] - - local card_position = { - (card.VT.x + (card.VT.w / 2) + G.ROOM.T.x) * G.TILESCALE * G.TILESIZE * G.CANV_SCALE, - (card.VT.y + (card.VT.h / 2) + G.ROOM.T.y + 0.1) * G.TILESCALE * G.TILESIZE * G.CANV_SCALE} - - local dissolve_mult = 1 - (card.dissolve or 0) - - pinch:send("position", card_position) - pinch:send("screen_size", {w, h}) - pinch:send("radius", (card.config and card.config.forcefield and card.config.forcefield.radius or 160) * (1.2 + math.sin((index * 3.0) + G.TIMERS.REAL / 2.0) / 3.0) * dissolve_mult) - pinch:send("strength", (card.config and card.config.forcefield and card.config.forcefield.strength or -0.5) * (0.8 - math.cos((index * 3.0) + G.TIMERS.REAL / 2.0) / 3.0) * dissolve_mult) - love.graphics.setShader(pinch) -- Set the shader to the black hole canvas - - love.graphics.setCanvas(self.CANVAS) -- Forget about the black hole canvas and switch back to the og canvas - love.graphics.draw(card.pinch_canvas) -- And draw the result of black hole canvas onto the og one - - -- Reset shader: - love.graphics.setShader() - - elseif (not card) or (card.removed) then - table.remove(G.FORCEFIELD_CARDS, index) - end -end - -''' - -# Black Hole 2/2 +# Black Hole 1/1 [[patches]] [patches.pattern] target = 'card.lua' @@ -252,7 +195,7 @@ end [[patches]] [patches.pattern] target = 'functions/misc_functions.lua' -pattern = "local desc_scale = G.LANG.font.DESCSCALE" +pattern = "local desc_scale = *" position = 'before' match_indent = true payload = ''' @@ -273,36 +216,32 @@ local function add_symbol(text, symbol) end end -if string.find(assembled_string, localize('Diamonds', 'suits_singular')) -or string.find(assembled_string, localize('Diamonds', 'suits_plural')) then - assembled_string = add_symbol(assembled_string, '♦') -end - -if string.find(assembled_string, localize('Hearts', 'suits_singular')) -or string.find(assembled_string, localize('Hearts', 'suits_plural')) then - assembled_string = add_symbol(assembled_string, '♥') -end - -if string.find(assembled_string, localize('Spades', 'suits_singular')) -or string.find(assembled_string, localize('Spades', 'suits_plural')) then - assembled_string = add_symbol(assembled_string, '♠') -end - -if string.find(assembled_string, localize('Clubs', 'suits_singular')) -or string.find(assembled_string, localize('Clubs', 'suits_plural')) then - assembled_string = add_symbol(assembled_string, '♣') -end +local suit_symbols = { + Diamonds = '♦', + Hearts = '♥', + Spades = '♠', + Clubs = '♣', + bunc_Fleurons = '✤', + bunc_Halberds = '✠', + paperback_Crowns = '♛', + paperback_Stars = '★', +} +local found_strings = {} -if string.find(assembled_string, localize('bunc_Fleurons', 'suits_singular')) -or string.find(assembled_string, localize('bunc_Fleurons', 'suits_plural')) then - assembled_string = add_symbol(assembled_string, '✤') +-- Ordering the symbol insertion so that symbols appear in the order the words appear in the text +for key, symbol in pairs(suit_symbols) do + local result = string.find(assembled_string, localize(key, 'suits_singular')) or string.find(assembled_string, localize(key, 'suits_plural')) + if result then + table.insert(found_strings, {result, symbol}) + end end +table.sort(found_strings, function(a, b) + return a[1] > b[1] +end) -if string.find(assembled_string, localize('bunc_Halberds', 'suits_singular')) -or string.find(assembled_string, localize('bunc_Halberds', 'suits_plural')) then - assembled_string = add_symbol(assembled_string, '✠') +for _, v in ipairs(found_strings) do + assembled_string = add_symbol(assembled_string, v[2]) end - ''' # Luchador Rework 1/2 @@ -383,7 +322,7 @@ payload = '''if self.name == 'Boss Tag' and not BUNCOMOD.content.config.gameplay # function generate_card_ui() (Temporary extra chips) [[patches]] [patches.pattern] -target = "functions/common_events.lua" +target = 'functions/common_events.lua' pattern = "if main_end then" position = "before" match_indent = true @@ -392,36 +331,36 @@ if (_c.set == 'Default' or _c.set == 'Enhanced') and card and card.ability and t localize{type = 'other', key = 'bunc_temporary_extra_chips', nodes = desc_nodes, vars = {card.ability.temporary_extra_chips}} end''' -# Linked cards drawing 1/4 -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "-- removed first hand drawn context" -position = "before" -match_indent = true -payload = ''' - -G.E_MANAGER:add_event(Event({func = function() +## These don't seem to be needed as of SMOD 1413a. Wouldn't be surprised if it changes again. -''' +# # Linked cards drawing 1/4 +# [[patches]] +# [patches.pattern] +# target = 'game.lua' +# pattern = "if G.GAME.current_round.hands_played == 0 and" +# position = "before" +# match_indent = true +# payload = ''' -# Linked cards drawing 2/4 -[[patches]] -[patches.regex] -target = "game.lua" -pattern = 'drawn_to_hand\(\)\n(.*)return true\n(.*)end\n(.*)' -position = "after" -match_indent = true -payload = ''' +# G.E_MANAGER:add_event(Event({func = function() -return true end})) +# ''' -''' +# # Linked cards drawing 2/4 +# [[patches]] +# [patches.regex] +# target = 'game.lua' +# pattern = '(?[\t ]*).*drawn_to_hand\(\)\n(.*)return true\n(.*)end\n(.*)\n' +# position = "after" +# line_prepend = "$indent" +# payload = ''' +# return true end})) +# ''' # Linked cards drawing 3/4 [[patches]] [patches.pattern] -target = "game.lua" +target = 'game.lua' pattern = "G.FUNCS.draw_from_deck_to_hand()" position = "after" match_indent = true @@ -436,7 +375,7 @@ G.DRAWING_CARDS = G.STATE # Linked cards drawing 4/4 [[patches]] [patches.pattern] -target = "game.lua" +target = 'game.lua' pattern = "G.CONTROLLER:recall_cardarea_focus('pack_cards')" position = "after" match_indent = true @@ -446,14 +385,37 @@ G.E_MANAGER:add_event(Event({func = function() G.DRAWING_CARDS = nil return true ''' -# Linked cards can discard +# Linked cards drawing fix +# A fix for ghost cards [[patches]] [patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if G.GAME.current_round.discards_left <= 0 or #G.hand.highlighted <= 0 then" -position = "at" +target = 'functions/common_events.lua' +pattern = "if from then card = from:remove_card(card) end" +position = "before" match_indent = true -payload = '''if G.GAME.current_round.discards_left <= 0 or #G.hand.highlighted <= 0 or (G.GAME.THE_8_BYPASS and (#G.hand.highlighted > G.hand.config.highlighted_limit)) then''' +payload = ''' + +local in_area = false +for n = 0, #from.cards do + if from.cards[n] == card then + in_area = true + break + end +end +if not in_area and from == G.deck then + return true +end + +''' + +# # Linked cards can discard +# [[patches]] +# [patches.regex] +# target = 'functions/button_callbacks.lua' +# pattern = "(?[\t ]*)if G.GAME.current_round.discards_left <= 0 or #G.hand.highlighted <= 0 or (?.*?) then" +# position = "at" +# line_prepend = "$indent" +# payload = '''if G.GAME.current_round.discards_left <= 0 or #G.hand.highlighted <= 0 or $condition or (G.GAME.THE_8_BYPASS and (#G.hand.highlighted > G.GAME.starting_params.discard_limit)) then''' # Linked cards selection 1/2 [[patches]] @@ -516,14 +478,14 @@ end ''' -# Linked cards selection 2/2 -[[patches]] -[patches.pattern] -target = 'cardarea.lua' -pattern = 'if #self.highlighted >= self.config.highlighted_limit then' -position = 'at' -match_indent = true -payload = '''if (#self.highlighted >= self.config.highlighted_limit) and (not card.ability.group) and (G.GAME and not G.GAME.THE_8_BYPASS) then''' +# # Linked cards selection 2/2 +# [[patches]] +# [patches.pattern] +# target = 'cardarea.lua' +# pattern = 'if #self.highlighted >= self.config.highlighted_limit then' +# position = 'at' +# match_indent = true +# payload = '''if (#self.highlighted >= self.config.highlighted_limit) and (not card.ability.group) and (G.GAME and not G.GAME.THE_8_BYPASS) then''' # Linked cards destruction 1/2 [[patches]] @@ -540,7 +502,6 @@ if self.ability.group and (not self.fake_card) and not (self.area and self.area. end ''' - # Linked cards destruction 2/2 [[patches]] [patches.pattern] @@ -592,7 +553,7 @@ end # Linked cards description [[patches]] [patches.pattern] -target = "functions/common_events.lua" +target = 'functions/common_events.lua' pattern = "if main_end then" position = "before" match_indent = true @@ -604,8 +565,8 @@ if (_c.set == 'Default' or _c.set == 'Enhanced') and card and card.ability and t local all_cards_from_group = {} if card and card.area then if card.area.config.type == 'title' then - for i = 1, #G.deck.cards do - local check_card = G.deck.cards[i] + for i = 1, #G.playing_cards do + local check_card = G.playing_cards[i] if check_card.ability and type(check_card.ability) == 'table' and check_card.ability.group then if check_card.ability.group.id == card.ability.group.id then table.insert(all_cards_from_group, check_card) @@ -668,27 +629,32 @@ end ''' -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = 'if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > 5 then' -position = 'at' -match_indent = true -payload = ''' - -local group_size = 0 - -if G.hand and G.hand.highlighted then - for i = 1, #G.hand.highlighted do - if G.hand.highlighted[i].ability.group then - group_size = group_size + 1 - end - end -end +# # Can play more than 5 cards with linked cards +# [[patches]] +# [patches.pattern] +# target = 'functions/button_callbacks.lua' +# pattern = 'if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > math.max(G.GAME.starting_params.play_limit, 1) then' +# position = 'before' +# match_indent = true +# payload = ''' -if #G.hand.highlighted <= (G.GAME.blind and G.GAME.blind.name == 'cry-Sapphire Stamp' and not G.GAME.blind.disabled and 1 or 0) or G.GAME.blind.block_play or (#G.hand.highlighted > G.hand.config.highlighted_limit and group_size <= G.hand.config.highlighted_limit) then +# local group_size = 0 -''' +# if G.hand and G.hand.highlighted then +# for i = 1, #G.hand.highlighted do +# if G.hand.highlighted[i].ability.group then +# group_size = group_size + 1 +# end +# end +# end +# ''' +# [[patches]] +# [patches.pattern] +# target = 'functions/button_callbacks.lua' +# pattern = 'if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > math.max(G.GAME.starting_params.play_limit, 1) then' +# position = 'at' +# match_indent = true +# payload = 'if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > math.max(G.GAME.starting_params.play_limit, 1, group_size) and not group_exceeds_hand_limit then' # Virtual pack deck alignment [[patches]] @@ -768,7 +734,7 @@ payload = ''' if self.config.center.key == 'j_bunc_cassette' then self:flip() - self:calculate_joker({flip = true}) + SMODS.calculate_context({flip = true, card_flipped = self}) end ''' @@ -782,12 +748,8 @@ position = 'before' match_indent = true payload = ''' -if G.jokers ~= nil and self == G.hand then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_xray' then - v:calculate_joker({emplaced_card = card}) - end - end +if G.jokers ~= nil and self == G.hand and next(SMODS.find_card('j_bunc_xray')) then + SMODS.calculate_context({emplaced_card = card}) end ''' @@ -844,9 +806,8 @@ position = 'after' match_indent = true payload = ''' -if G.jokers ~= nil and self:is(Card) and self.area == G.jokers then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_knight' and not v.debuff then + if G.jokers ~= nil and self:is(Card) and self.area == G.jokers then + if next(SMODS.find_card('j_bunc_knight')) then if break_table.before == nil then break_table.before = {} @@ -861,7 +822,6 @@ if G.jokers ~= nil and self:is(Card) and self.area == G.jokers then end end end -end ''' @@ -874,30 +834,26 @@ position = 'after' match_indent = true payload = ''' -if G.jokers ~= nil and self == break_table.node then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_knight' and not v.debuff then - function do_tables_match(a, b) - return table.concat(a) == table.concat(b) - end +if G.jokers ~= nil and self == break_table.node and next(SMODS.find_card('j_bunc_knight')) then + function do_tables_match(a, b) + return table.concat(a) == table.concat(b) + end - if break_table.before ~= nil then + if break_table.before ~= nil then - break_table.before = {} + break_table.before = {} - for _, v in ipairs(G.jokers.cards) do - table.insert(break_table.before, v.ability.name) - end + for _, v in ipairs(G.jokers.cards) do + table.insert(break_table.before, v.ability.name) + end - if not do_tables_match(break_table.before, break_table.after) then - v:calculate_joker({ break_positions = true }) - end + if not do_tables_match(break_table.before, break_table.after) then + SMODS.calculate_context({ break_positions = true }) + end - break_table.before = nil - break_table.after = nil + break_table.before = nil + break_table.after = nil - end - end end end @@ -910,7 +866,11 @@ target = 'functions/common_events.lua' pattern = 'card:set_edition(edition)' position = 'before' match_indent = true -payload = '''if card.config.center.key == 'j_bunc_jmjb' then edition = poll_edition(nil, nil, true, true) end''' +payload = ''' +if card.config.center.key == 'j_bunc_jmjb' then + edition = poll_edition(nil, nil, true, true) +end +''' # function create_card() (Doorhanger) [[patches]] @@ -922,39 +882,15 @@ match_indent = true payload = ''' if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_doorhanger' and not v.debuff then - if _rarity == nil - or ((type(_rarity) == 'number') and (_rarity < 0.9)) - or ((type(_rarity) == 'string') and (_rarity == 'Common')) then - - _rarity = 0.9 - - if pseudorandom('doorhanger'..G.SEED) > 0.98 then - _rarity = 1 - end - end - end - end -end + if next(SMODS.find_card('j_bunc_doorhanger')) then + if _rarity == nil + or ((type(_rarity) == 'number') and (_rarity < 0.9)) + or ((type(_rarity) == 'string') and (_rarity == 'Common')) then -''' - -# function evaluate_play (Nil Bill) -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'if extra and extra.playing_cards_created then' -position = 'before' -match_indent = true -payload = ''' + _rarity = 0.9 --- TODO Jank temporary solution, result of better calc -if eval_type == 'debuff' then - if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if (v.config.center.key == 'j_bunc_nil_bill' or v.config.center.key == 'j_bunc_neon') and not v.debuff then - v:calculate_joker({debuffed_card = card}) + if pseudorandom('doorhanger'..G.SEED) > 0.98 then + _rarity = 1 end end end @@ -971,7 +907,7 @@ position = 'after' match_indent = true payload = ''' -if center and (not initial) and (old_center ~= center) and center.set == 'Enhanced' then +if G.hand and center and (not initial) and (old_center ~= center) and center.set == 'Enhanced' then SMODS.calculate_context({enhance_card = true, enhanced_card = self}) end @@ -1014,21 +950,6 @@ payload = ''' if hand == 'bunc_Deal' then return end ''' -# Deal hand crash fix for Blue Seal -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "local card = create_card(card_type,G.consumeables, nil, nil, nil, nil, _planet, 'blusl')" -position = 'before' -match_indent = true -payload = ''' - -if _planet == 0 then - _planet = 'c_pluto' -end - -''' - # function level_up_hand (Head in the Clouds) [[patches]] [patches.pattern] @@ -1038,17 +959,12 @@ position = 'after' match_indent = true payload = ''' -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_head_in_the_clouds' and not v.debuff then - if (amount == nil) or not (amount <= 0) then - v:calculate_joker({level_up_hand = hand}) - end - end +if G.jokers ~= nil and next(SMODS.find_card('j_bunc_head_in_the_clouds')) then + if (amount == nil) or not (amount <= 0) then + SMODS.calculate_context({level_up_hand = hand}) end end - -if hand == 'Head in the Clouds' then hand = 'High Card' end +if hand == 'Head in the Clouds' then hand = 'High Card' end -- Prevents Head in the Clouds triggering itself ''' @@ -1061,55 +977,45 @@ position = 'after' match_indent = true payload = ''' -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_trigger_finger' and not v.debuff and is_higlighted and self.area == G.hand then - if pseudorandom('trigger_finger'..G.SEED) < G.GAME.probabilities.normal / v.ability.extra.odds then - v:calculate_joker({highlight_card = true}) - break - end - end - end +if G.jokers ~= nil and next(SMODS.find_card('j_bunc_trigger_finger')) then + SMODS.calculate_context({bunc_trigger_finger_highlight_card = true}) end ''' -# function Card:draw (Vandalism 1/7) -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''self.children.center.states.hover = self.states.hover''' -position = 'before' -match_indent = true -payload = ''' +# # function Card:draw (Vandalism 1/3) +# [[patches]] +# [patches.pattern] +# target = 'card.lua' +# pattern = '''self.children.center.states.hover = self.states.hover''' +# position = 'before' +# match_indent = true +# payload = ''' -if _center.name == 'Vandalism' and (_center.discovered or self.bypass_discovery_center) then - self.children.center = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers'], self.params.bypass_back or (self.playing_card and G.GAME[self.back].pos or G.P_CENTERS['b_red'].pos)) -end +# if _center.name == 'Vandalism' and (_center.discovered or self.bypass_discovery_center) then +# self.children.center = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers'], self.params.bypass_back or (self.playing_card and G.GAME[self.back].pos or G.P_CENTERS['b_red'].pos)) +# end -''' +# ''' -# function Blind:stay_flipped (Vandalism 2/3) -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = '''if self.name == 'The Wheel' and pseudorandom(pseudoseed('wheel')) < G.GAME.probabilities.normal/7 then''' -position = 'before' -match_indent = true -payload = ''' +# I dont think this is needed? +# # function Blind:stay_flipped (Vandalism 2/3) +# [[patches]] +# [patches.pattern] +# target = 'blind.lua' +# pattern = '''if self.name == 'The Wheel' and SMODS.pseudorandom_probability(self, pseudoseed('wheel'), 1, 7, 'wheel') then''' +# position = 'before' +# match_indent = true +# payload = ''' -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_vandalism' and not v.debuff then - if (pseudorandom('vandalism'..G.SEED) < G.GAME.probabilities.normal / v.ability.extra.odds) and (G.STATE == G.STATES.SELECTING_HAND or G.STATE == G.STATES.DRAW_TO_HAND) then - v:calculate_joker({stay_flipped = true}) - return true - end - end - end -end +# if G.jokers ~= nil and next(SMODS.find_card('j_bunc_vandalism')) then +# local ret = SMODS.calculate_context({stay_flipped = true}) +# if ret.stay_flipped then +# return true +# end +# end -''' +# ''' # G.FUNCS.play_cards_from_highlighted (Vandalism 3/3) [[patches]] @@ -1121,11 +1027,7 @@ match_indent = true payload = ''' if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_vandalism' and not v.debuff then - v:calculate_joker({play_cards = true}) - end - end + SMODS.calculate_context({bunc_play_cards = true}) end ''' @@ -1140,11 +1042,7 @@ match_indent = true payload = ''' if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_running_joke' and not v.debuff then - v:calculate_joker({enter_shop = true}) - end - end + SMODS.calculate_context({bunc_enter_shop = true}) end ''' @@ -1198,18 +1096,11 @@ position = 'after' match_indent = true payload = ''' -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_cellphone' and v.ability.extra.active and not v.debuff then - v:calculate_joker({press_play = true}) - break - end - end -end +SMODS.calculate_context({ bunc_press_play = true }) ''' -# G.FUNCS.play_cards_from_highlighted() (Domino 1/5) +# G.FUNCS.buy_from_shop() (Domino 1/4) [[patches]] [patches.pattern] target = 'functions/button_callbacks.lua' @@ -1218,6 +1109,8 @@ position = 'after' match_indent = true payload = ''' +-- BUNCO DOMINO PATCH START + local pre_cardarea = c1.area local pre_card_pos local pre_card_left @@ -1234,9 +1127,11 @@ end if pre_cardarea and pre_cardarea.cards[pre_card_pos - 1] then pre_card_left = pre_cardarea.cards[pre_card_pos - 1] end if pre_cardarea and pre_cardarea.cards[pre_card_pos + 1] then pre_card_right = pre_cardarea.cards[pre_card_pos + 1] end +-- BUNCO DOMINO PATCH END + ''' -# G.FUNCS.play_cards_from_highlighted() (Domino 2/5) +# G.FUNCS.buy_from_shop() (Domino 2/4) [[patches]] [patches.pattern] target = 'functions/button_callbacks.lua' @@ -1246,22 +1141,20 @@ match_indent = true payload = ''' if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_domino' and not v.debuff then - v:calculate_joker({buying_card = true, - card = c1, - pre_cardarea = pre_cardarea, - pre_card_pos = pre_card_pos, - pre_card_left = pre_card_left, - pre_card_right = pre_card_right}) - break - end + for _, v in ipairs(SMODS.find_card('j_bunc_domino')) do + v:calculate_joker({buying_card = true, + card = c1, + pre_cardarea = pre_cardarea, + pre_card_pos = pre_card_pos, + pre_card_left = pre_card_left, + pre_card_right = pre_card_right}) + break end end ''' -# G.FUNCS.play_cards_from_highlighted() (Domino 3/5) +# G.FUNCS.use_card() (Domino 3/4) [[patches]] [patches.pattern] target = 'functions/button_callbacks.lua' @@ -1270,6 +1163,8 @@ position = 'before' match_indent = true payload = ''' +-- BUNCO DOMINO PATCH START + local pre_cardarea = card.area local pre_card_pos local pre_card_left @@ -1289,49 +1184,63 @@ if pre_cardarea and pre_cardarea.cards[pre_card_pos + 1] then pre_card_right = p local function call_getting_booster_card() G.E_MANAGER:add_event(Event{func = function() if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_domino' and not v.debuff then - v:calculate_joker({getting_booster_card = true, - card = card, - pre_cardarea = pre_cardarea, - pre_card_pos = pre_card_pos, - pre_card_left = pre_card_left, - pre_card_right = pre_card_right}) - break - end + for _, v in ipairs(SMODS.find_card('j_bunc_domino')) do + v:calculate_joker({getting_booster_card = true, + card = card, + pre_cardarea = pre_cardarea, + pre_card_pos = pre_card_pos, + pre_card_left = pre_card_left, + pre_card_right = pre_card_right}) + break end end return true end}) end +-- BUNCO DOMINO PATCH END + ''' -# G.FUNCS.play_cards_from_highlighted() (Domino 4/5) +# G.FUNCS.use_card() (Domino 4/4) [[patches]] [patches.pattern] target = 'functions/button_callbacks.lua' -pattern = "card:add_to_deck()" +pattern = "G.CONTROLLER.locks.use = true" position = 'after' match_indent = true payload = ''' - -call_getting_booster_card() +if card.ability.consumeable or card.ability.set == 'Enhanced' or card.ability.set == 'Default' or card.ability.set == 'Joker' then + call_getting_booster_card() +end ''' -# G.FUNCS.play_cards_from_highlighted() (Domino 5/5) -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "e.config.ref_table:use_consumeable(area)" -position = 'before' -match_indent = true -payload = ''' +# # G.FUNCS.use_card() (Domino old) +# [[patches]] +# [patches.pattern] +# target = 'functions/button_callbacks.lua' +# pattern = "card:add_to_deck()" +# position = 'after' +# match_indent = true +# payload = ''' -call_getting_booster_card() +# call_getting_booster_card() -''' +# ''' + +# # G.FUNCS.use_card() (Domino old) +# [[patches]] +# [patches.pattern] +# target = 'functions/button_callbacks.lua' +# pattern = "e.config.ref_table:use_consumeable(area)" +# position = 'before' +# match_indent = true +# payload = ''' + +# call_getting_booster_card() + +# ''' # function CardArea:align_cards() (Taped) [[patches]] @@ -1363,90 +1272,28 @@ match_indent = true payload = ''' if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_stylophone' and not v.debuff then - v:calculate_joker({click = true, other_card = self}) - end - end + SMODS.calculate_context({click = true, other_card = self}) end ''' # function Card:is_suit (Myopia & Astigmatism) [[patches]] -[patches.pattern] +[patches.regex] target = 'card.lua' -pattern = "if next(find_joker('Smeared Joker')) and (self.base.suit == 'Hearts' or self.base.suit == 'Diamonds') == (suit == 'Hearts' or suit == 'Diamonds') then" +pattern = "(?[\t ]*)if (?:next\\(find_joker\\('Smeared Joker'\\)\\) and )?SMODS\\.smeared_check\\(self, suit\\) then" position = 'before' -match_indent = true +line_prepend = "$indent" payload = ''' - -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_myopia' and not v.debuff then - if self.base.suit == 'Spades' and (self.base.suit == 'Spades') == (suit == 'Spades' or suit == 'bunc_Halberds') then - return true - end - if self.base.suit == 'Clubs' and (self.base.suit == 'Clubs') == (suit == 'Clubs' or suit == 'bunc_Halberds') then - return true - end - end - end +if BUNCOMOD.funcs.myopia_check(self, suit) then + return true end - -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.config.center.key == 'j_bunc_astigmatism' and not v.debuff then - if self.base.suit == 'Hearts' and (self.base.suit == 'Hearts') == (suit == 'Hearts' or suit == 'bunc_Fleurons') then - return true - end - if self.base.suit == 'Diamonds' and (self.base.suit == 'Diamonds') == (suit == 'Diamonds' or suit == 'bunc_Fleurons') then - return true - end - end - end +if BUNCOMOD.funcs.astigmatism_check(self, suit) then + return true end +''' -if G.jokers ~= nil then - for _, v in ipairs(G.jokers.cards) do - if v.ability.name == 'Smeared Joker' and not v.debuff then - if self.base.suit == 'bunc_Fleurons' and (suit ~= 'bunc_Fleurons') then - return false - end - if self.base.suit == 'bunc_Halberds' and (suit ~= 'bunc_Halberds') then - return false - end - if (self.base.suit ~= 'bunc_Fleurons' and self.base.suit ~= 'bunc_Halberds') and (suit == 'bunc_Fleurons' or suit == 'bunc_Halberds') then - return false - end - end - end -end - -''' - -# Challenge cards unlocking 1/2 -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "unlock_achievement('rule_bender')" -position = 'before' -match_indent = true -payload = ''' - -local challenge_card - -for i = 1, #G.P_LOCKED do - challenge_card = G.P_LOCKED[i] - - if not challenge_card.unlocked and challenge_card.check_for_unlock and type(challenge_card.check_for_unlock) == 'function' then - challenge_card:check_for_unlock({type = 'win_challenge'}) - end -end - -''' - -# Challenge cards unlocking 2/2 +# Challenge cards unlocking (1/1 [[patches]] [patches.pattern] target = 'functions/common_events.lua' @@ -1473,16 +1320,9 @@ for k, v in pairs(G.playing_cards) do end if G.GAME.last_deck_size ~= deck_size then - local locked_card local difference = deck_size - G.GAME.last_deck_size - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'round_deck_size', round_deck_size_diff = difference}) - end - end + check_for_unlock({type = 'round_deck_size', round_deck_size_diff = difference}) end G.GAME.last_deck_size = deck_size @@ -1515,27 +1355,19 @@ target = 'functions/state_events.lua' pattern = 'G.GAME.current_round.discards_left = math.max(0, G.GAME.round_resets.discards + G.GAME.round_bonus.discards)' position = 'before' match_indent = true -payload = '''G.GAME.money_spend_this_round = 0''' +payload = '''G.GAME.bunc_money_spend_this_round = 0''' # Blind defeat unlocking [[patches]] [patches.pattern] target = 'functions/state_events.lua' -pattern = '''function end_round()''' +pattern = '''check_for_unlock({type = 'round_win'})''' position = 'after' match_indent = true payload = ''' if not G.GAME.blind.disabled then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'defeat_blind', blind = G.GAME.blind}) - end - end + check_for_unlock({type = 'defeat_blind', blind = G.GAME.blind}) end ''' @@ -1549,18 +1381,8 @@ position = 'after' match_indent = true payload = ''' -G.PROFILES[G.SETTINGS.profile].booster_packs_opened = (G.PROFILES[G.SETTINGS.profile].booster_packs_opened or 0) + 1 -if G.PROFILES[G.SETTINGS.profile].booster_packs_opened then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'open_pack', packs_total = G.PROFILES[G.SETTINGS.profile].booster_packs_opened}) - end - end -end + G.PROFILES[G.SETTINGS.profile].booster_packs_opened = (G.PROFILES[G.SETTINGS.profile].booster_packs_opened or 0) + 1 + check_for_unlock({type = 'open_pack', packs_total = G.PROFILES[G.SETTINGS.profile].booster_packs_opened}) ''' @@ -1582,7 +1404,7 @@ position = 'after' match_indent = true payload = ''' -G.GAME.booster_packs_opened = G.GAME.booster_packs_opened + 1 + G.GAME.booster_packs_opened = (G.GAME.booster_packs_opened or 0) + 1 ''' @@ -1596,17 +1418,7 @@ match_indent = true payload = ''' if to_big(mod) < to_big(0) then - G.GAME.money_spend_this_round = G.GAME.money_spend_this_round - mod - - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'ante_down', ante = G.GAME.round_resets.ante}) - end - end + check_for_unlock({type = 'ante_down', ante = G.GAME.round_resets.ante}) end ''' @@ -1629,6 +1441,7 @@ position = 'after' match_indent = true payload = ''' +G.GAME.max_common_jokers = G.GAME.max_common_jokers or 0 local common_joker_tally = 0 for i = 1, #G.jokers.cards do if G.jokers.cards[i].ability.set == 'Joker' and G.jokers.cards[i].config.center.rarity == 1 then common_joker_tally = common_joker_tally + 1 end @@ -1649,15 +1462,7 @@ payload = ''' if used_tarot.edition then G.PROFILES[G.SETTINGS.profile].consumables_with_edition_used = (G.PROFILES[G.SETTINGS.profile].consumables_with_edition_used or 0) + 1 if G.PROFILES[G.SETTINGS.profile].consumables_with_edition_used then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'use_consumable_with_edition', used_total = G.PROFILES[G.SETTINGS.profile].consumables_with_edition_used}) - end - end + check_for_unlock({type = 'use_consumable_with_edition', used_total = G.PROFILES[G.SETTINGS.profile].consumables_with_edition_used}) end end @@ -1683,15 +1488,7 @@ end if (not G.hand.highlighted) or (#G.hand.highlighted == 0) then unlock_all_flipped = false end if unlock_all_flipped and #G.hand.highlighted >= 5 then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'play_all_flipped'}) - end - end + check_for_unlock({type = 'play_all_flipped'}) end ''' @@ -1732,19 +1529,15 @@ payload = ''' G.PROFILES[G.SETTINGS.profile].skips_total = (G.PROFILES[G.SETTINGS.profile].skips_total or 0) + 1 if G.PROFILES[G.SETTINGS.profile].skips_total then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'blind_skipped', skips_total = G.PROFILES[G.SETTINGS.profile].skips_total}) - end - end + check_for_unlock({type = 'blind_skipped', skips_total = G.PROFILES[G.SETTINGS.profile].skips_total}) end ''' +############################# + # REGULAR BOSS BLINDS # +############################# + # G.FUNCS.discard_cards_from_highlighted() (The Paling 1/2) [[patches]] [patches.pattern] @@ -1841,7 +1634,7 @@ match_indent = true payload = ''' if G.GAME.played_ranks ~= nil then - local max_rank = nil + local max_rank = '2' local max_count = -1 for _, rank in ipairs(SMODS.Rank.obj_buffer) do @@ -2015,25 +1808,44 @@ payload = ''' least_played_poker_hand = 'High Card',''' # The Blade +# Patch should work with talisman [[patches]] -[patches.regex] +[patches.pattern] target = 'functions/state_events.lua' -pattern = "(?[\t ]*)else\\s*\\n[\\t ]*mult\\s*=\\s*mod_mult\\(\\s*0\\s*\\)\\s*\\n[\\t ]*hand_chips\\s*=\\s*mod_chips\\(\\s*0\\s*\\)\\s*" -position = 'before' -line_prepend = '$indent' +pattern = "check_and_set_high_score('hand',*" +position = 'after' +match_indent = true payload = ''' if G.GAME.blind and G.GAME.blind.name == 'bl_bunc_blade' and not G.GAME.blind.disabled then local overscore = G.GAME.blind.chips * 1.5 - if type(hand_chips) == 'table' then overscore = to_big(overscore) end + if type(hand_chips) == 'table' then + overscore = to_big(overscore) + end + + if overscore < math.floor(SMODS.calculate_round_score()) then - if (overscore < math.floor(hand_chips*mult) + G.GAME.chips) then + local disp_mult = mult + local disp_chips = hand_chips + + G.E_MANAGER:add_event(Event({ + func = (function() + hand_chips = mod_chips(disp_chips) + mult = mod_mult(disp_mult) + update_hand_text({delay = 0, immediate = true}, {mult = disp_mult, chips = disp_chips, chip_total = math.floor( SMODS.calculate_round_score() ), level = '', handname = ''}) + mult = mod_mult(0) + hand_chips = mod_chips(0) + return true + end) + })) mult = mod_mult(0) hand_chips = mod_chips(0) + delay(0.8) + G.E_MANAGER:add_event(Event({ trigger = 'after', func = (function() @@ -2097,25 +1909,33 @@ end ''' -# function get_new_boss() (Vermilion Trident 2/2) +############################## + # FINISHER BOSS BLINDS # +############################## + + +# create_UIBox_blind_choice +# Allow for modification to displayed blind amount without changing mult [[patches]] [patches.pattern] -target = 'game.lua' -pattern = 'function Game:update(dt)' +target = 'functions/UI_definitions.lua' +pattern = "local blind_amt = *" position = 'after' match_indent = true payload = ''' -if G.GAME.round_resets.blind_choices and G.GAME.round_resets.blind_choices.Boss and G.GAME.round_resets.blind_choices.Boss == 'bl_bunc_final_trident' then - G.GAME.Trident = true -else - G.GAME.Trident = false - G.GAME.ante_purchases = 0 +if BUNCOMOD.funcs.bunc_alias_type(blind_choice.config.bunc_blind_amount_display) == 'function' then + ret = blind_choice.config:bunc_blind_amount_display(blind_choice.config, get_blind_amount(G.GAME.round_resets.blind_ante), blind_choice.config.mult) + if BUNCOMOD.funcs.bunc_alias_type(ret) == "number" then + blind_amt = ret * G.GAME.starting_params.ante_scaling + blind_amt = blind_amt + end end ''' -# G.FUNCS.discard_cards_from_highlighted (Magenta Dagger 1/5) + +# G.FUNCS.discard_cards_from_highlighted (Magenta Dagger 1/4) [[patches]] [patches.pattern] target = 'functions/state_events.lua' @@ -2133,7 +1953,7 @@ end ''' -# G.FUNCS.play_cards_from_highlighted (Magenta Dagger 2/5) +# G.FUNCS.play_cards_from_highlighted (Magenta Dagger 2/4) [[patches]] [patches.pattern] target = 'functions/state_events.lua' @@ -2164,11 +1984,12 @@ end ''' -# G.FUNCS.play_cards_from_highlighted (Magenta Dagger 3/5) +# G.FUNCS.play_cards_from_highlighted (Magenta Dagger 3/4) +# Wildcard for talisman compat [[patches]] [patches.pattern] target = 'functions/state_events.lua' -pattern = "G.FUNCS.evaluate_play()" +pattern = "G.FUNCS.evaluate_play(*" position = 'after' match_indent = true payload = ''' @@ -2179,44 +2000,30 @@ end ''' -# G.FUNCS.play_cards_from_highlighted (Magenta Dagger 4/5) -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = "G.FUNCS.evaluate_play = function(e)" -position = 'after' -match_indent = true -payload = ''' - -local antiscore = G.GAME.blind.antiscore - -''' - -# function update_hand_text (Magenta Dagger 5/5) +# function update_hand_text (Magenta Dagger 4/4) [[patches]] -[patches.pattern] +[patches.regex] target = 'functions/state_events.lua' -pattern = "ease_to = G.GAME.chips + math.floor(hand_chips*mult)," +pattern = "ease_to = G\\.GAME\\.chips \\+ math\\.floor\\((.*)\\)," position = 'at' -match_indent = true -payload = '''ease_to = G.GAME.chips + math.floor(hand_chips * mult) * (antiscore and -1 or 1),''' +payload = '''ease_to = G.GAME.chips + math.floor($1) * (G.GAME.blind.antiscore and -1 or 1),''' -# function get_new_boss() (Turquoise Shield 1/2) -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = 'function Game:update(dt)' -position = 'after' -match_indent = true -payload = ''' +# # function get_new_boss() (Turquoise Shield 1/2) +# [[patches]] +# [patches.pattern] +# target = 'game.lua' +# pattern = 'function Game:update(dt)' +# position = 'after' +# match_indent = true +# payload = ''' -if G.GAME.round_resets.blind_choices and G.GAME.round_resets.blind_choices.Boss and G.GAME.round_resets.blind_choices.Boss == 'bl_bunc_final_shield' then - G.GAME.Shield = true -else - G.GAME.Shield = false -end +# if G.GAME.round_resets.blind_choices and G.GAME.round_resets.blind_choices.Boss and G.GAME.round_resets.blind_choices.Boss == 'bl_bunc_final_shield' then +# G.GAME.Shield = true +# else +# G.GAME.Shield = false +# end -''' +# ''' # function end_round() (Turquoise Shield 2/2) [[patches]] @@ -2226,7 +2033,9 @@ pattern = "function end_round()" position = 'after' match_indent = true payload = ''' -if G.GAME.Shield == true then +if G.GAME.blind:get_type() == 'Boss' then + G.GAME.overscore = 0 +else if type(G.GAME.chips) ~= 'table' then if G.GAME.chips - G.GAME.blind.chips >= 0 then G.GAME.overscore = (G.GAME.overscore or 0) + G.GAME.chips - G.GAME.blind.chips @@ -2328,7 +2137,7 @@ end ''' -# Edition tags 1/5 +# Edition tags 1/4 [[patches]] [patches.pattern] target = 'functions/state_events.lua' @@ -2343,13 +2152,13 @@ end ''' -# Edition tags 2/5 +# Edition tags 2/4 [[patches]] -[patches.regex] +[patches.pattern] target = 'functions/state_events.lua' -pattern = "(?[\t ]*)else\\s*\\n[\\t ]*mult\\s*=\\s*mod_mult\\(\\s*0\\s*\\)\\s*\\n[\\t ]*hand_chips\\s*=\\s*mod_chips\\(\\s*0\\s*\\)\\s*" +pattern = "local nu_chip, nu_mult = G.GAME.selected_back:trigger_effect{context = 'final_scoring_step'*" position = 'before' -line_prepend = '$indent' +match_indent = true payload = ''' for i = 1, #G.GAME.tags do @@ -2358,7 +2167,7 @@ end ''' -# function Card:use_consumeable() Edition tags 3/5 +# function Card:use_consumeable() Edition tags 3/4 [[patches]] [patches.pattern] target = 'card.lua' @@ -2371,96 +2180,35 @@ if used_tarot.edition then if used_tarot.edition.foil then add_tag(Tag('tag_bunc_chips')) play_sound('generic1') + discover_card(G.P_CENTERS['e_bunc_consumable_edition_foil']) elseif used_tarot.edition.holo then add_tag(Tag('tag_bunc_mult')) play_sound('generic1') + discover_card(G.P_CENTERS['e_bunc_consumable_edition_holo']) elseif used_tarot.edition.polychrome then add_tag(Tag('tag_bunc_xmult')) play_sound('generic1') + discover_card(G.P_CENTERS['e_bunc_consumable_edition_polychrome']) elseif used_tarot.edition.bunc_glitter then add_tag(Tag('tag_bunc_xchips')) play_sound('generic1') + discover_card(G.P_CENTERS['e_bunc_consumable_edition_bunc_glitter']) end end ''' -# Edition tags 4/5 +# Edition tags 4/4 [[patches]] [patches.pattern] target = '=[SMODS _ "src/utils.lua"]' -pattern = '-- TARGET: add your own CardAreas for joker evaluation' -position = 'before' -match_indent = true -payload = ''' - -for k, v in ipairs(t) do - if v == G.consumeables and (BUNCOMOD and BUNCOMOD.vars and not BUNCOMOD.vars.jokerlike_consumable_editions) then - table.remove(t, k) - break - end -end - -''' - -# Edition tags 5/5 -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = "local nu_chip, nu_mult = G.GAME.selected_back:trigger_effect{context = 'final_scoring_step', chips = hand_chips, mult = mult}" -position = 'before' +pattern = "function Card:calculate_edition(context)" +position = 'after' match_indent = true payload = ''' -for i=1, BUNCOMOD and BUNCOMOD.vars and BUNCOMOD.vars.jokerlike_consumable_editions and 0 or #G.consumeables.cards do - local _card = G.consumeables.cards[i] - local effects = {} - -- remove base game joker edition calc - local eval = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, edition = true, pre_joker = true}) - - -- Calculate context.joker_main - local joker_eval, post = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, joker_main = true}) - if next(joker_eval) then - table.insert(effects, joker_eval) - for _, v in ipairs(post) do effects[#effects+1] = v end - if joker_eval.retriggers then - for rt = 1, #joker_eval.retriggers do - local rt_eval, rt_post = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, joker_main = true, retrigger_joker = true}) - table.insert(effects, {joker_eval.retriggers[rt]}) - table.insert(effects, rt_eval) - for _, v in ipairs(rt_post) do effects[#effects+1] = v end - end - end - end - - -- Calculate context.other_joker effects - for _, _area in ipairs(SMODS.get_card_areas('jokers')) do - for _, _joker in ipairs(_area.cards) do - local other_key = 'other_unknown' - if _card.ability.set == 'Joker' then other_key = 'other_joker' end - if _card.ability.consumeable then other_key = 'other_consumeable' end - if _card.ability.set == 'Voucher' then other_key = 'other_voucher' end - -- TARGET: add context.other_something identifier to your cards - local joker_eval,post = eval_card(_joker, {full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, [other_key] = _card, other_main = _card }) - if next(joker_eval) then - joker_eval.jokers.juice_card = _joker - table.insert(effects, joker_eval) - for _, v in ipairs(post) do effects[#effects+1] = v end - if joker_eval.retriggers then - for rt = 1, #joker_eval.retriggers do - local rt_eval, rt_post = eval_card(_card, {full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, [other_key] = _card, retrigger_joker = true}) - table.insert(effects, {joker_eval.retriggers[rt]}) - table.insert(effects, rt_eval) - for _, v in ipairs(rt_post) do effects[#effects+1] = v end - end - end - end - end - end - - SMODS.trigger_effects(effects, _card) - local deck_effect = G.GAME.selected_back:trigger_effect({full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_joker = _card.ability.set == 'Joker' and _card or false, other_consumeable = _card.ability.set ~= 'Joker' and _card or false}) - if deck_effect then SMODS.calculate_effect(deck_effect, G.deck.cards[1] or G.deck) end +if not (BUNCOMOD and BUNCOMOD.vars and BUNCOMOD.vars.jokerlike_consumable_editions) and self.config.center.consumeable then + return end ''' @@ -2500,7 +2248,7 @@ end ''' -# Info queue for consumables 1/2 +# Info queue for consumables [[patches]] [patches.pattern] target = 'functions/common_events.lua' @@ -2509,49 +2257,128 @@ position = 'before' match_indent = true payload = ''' if _c.consumeable and (v == 'foil' or v == 'holo' or v == 'polychrome' or v == 'bunc_glitter') then - info_queue[#info_queue + 1] = G.P_CENTERS['bunc_consumable_edition_'..v] - info_queue[#info_queue + 1] = { - key = (v == 'foil') and 'tag_bunc_chips' - or (v == 'holo') and 'tag_bunc_mult' - or (v == 'polychrome') and 'tag_bunc_xmult' - or (v == 'bunc_glitter') and 'tag_bunc_xchips', - set = 'Tag', - specific_vars = (v == 'foil') and {G.P_CENTERS.e_foil.config.extra} - or (v == 'holo') and {G.P_CENTERS.e_holo.config.extra} - or (v == 'polychrome') and {G.P_CENTERS.e_polychrome.config.extra} - or (v == 'bunc_glitter') and {G.P_CENTERS.e_bunc_glitter.config.Xchips}} -else + v = "bunc_consumable_edition_" .. v + ed_key = "bunc_consumable_edition_" .. ed_key +end ''' -# Info queue for consumables 2/2 +# Badge for edition consumables +# G.UIDEF.card_h_popup() [[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = "local t = \\{key = 'e_'\\.\\.v, set = 'Edition', config = \\{\\}\\}((.|\n)*?)(?[\t ]*)end\n" +[patches.pattern] +target = 'functions/UI_definitions.lua' +pattern = '''badges[#badges + 1] = create_badge(localize(v, "labels"), get_badge_colour(v))''' +position = 'before' +match_indent = true +times = 1 +payload = ''' +if v:sub(1, 24) == 'bunc_consumable_edition_' then v = v:sub(25) end +if v == "holo" then v = "holographic" end +''' + +# Remove collection-only editions from debug +# G.FUNCS.use_card() +[[patches]] +[patches.pattern] +target = "engine/controller.lua" +pattern = '''if found_index > #G.P_CENTER_POOLS.Edition then found_index = found_index - #G.P_CENTER_POOLS.Edition end''' +position = "before" +payload = ''' +while G.P_CENTER_POOLS.Edition[found_index] and G.P_CENTER_POOLS.Edition[found_index].skip_debug do + found_index = found_index + 1 +end +''' +match_indent = true + +# Undiscovered consumable edition sprite 1/3 +# Card:set_sprites() override +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/overrides.lua"]' +pattern = "elseif not self.params.bypass_discovery_center and *" +position = 'before' +match_indent = true +payload = ''' +elseif not self.params.bypass_discovery_center and _center.set == "Edition" and not _center.discovered and _center.key:sub(1, 26) == "e_bunc_consumable_edition_" then + local atlas = G.ASSET_ATLAS[SMODS.UndiscoveredSprites["Tarot"].atlas] + local pos = SMODS.UndiscoveredSprites["Tarot"].pos + self.children.center = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, atlas, pos) +''' + +# Undiscovered consumable edition sprite 2/3 +# center DrawStep +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/card_draw.lua"]' +pattern = '''local shared_sprite = (self.ability.set == 'Edition' or self.ability.set == 'Joker') and G.shared_undiscovered_joker or G.shared_undiscovered_tarot''' position = 'after' -line_prepend = "$indent" -payload = '''end''' +match_indent = true +payload = ''' + +if self.ability.set == 'Edition' and self.config.center.key:sub(1, 26) == "e_bunc_consumable_edition_" then + shared_sprite = G.shared_undiscovered_tarot +end + +''' + +# Undiscovered consumable edition sprite 3/3 +# Card:set_edition() override +# Make editioned consumables discover the consumable edition in the collection instead of the regular edition +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/overrides.lua"]' +pattern = "discover_card(G.P_CENTERS['e_' .. (self.edition.type)])" +position = 'at' +match_indent = true +payload = ''' +if self.ability.consumeable then + discover_card(G.P_CENTERS['e_bunc_consumable_edition_'..(self.edition.type)]) +else + discover_card(G.P_CENTERS['e_'..(self.edition.type)]) +end +''' + +# Card:add_to_deck() +# Make editioned consumables discover the consumable edition in the collection instead of the regular edition +[[patches]] +[patches.pattern] +target = 'card.lua' +pattern = "discover_card(G.P_CENTERS['e_'..(self.edition.type)])" +position = 'at' +match_indent = true +payload = ''' +if self.ability.consumeable then + discover_card(G.P_CENTERS['e_bunc_consumable_edition_'..(self.edition.type)]) +else + discover_card(G.P_CENTERS['e_'..(self.edition.type)]) +end +''' + + + + # function card_open() (Filigree Tag) [[patches]] [patches.pattern] target = 'card.lua' -pattern = "SMODS.calculate_context({open_booster = true, card = self})" +pattern = "SMODS.calculate_context({open_booster = true, card = self*" position = 'after' match_indent = true payload = ''' for i = 1, #G.GAME.tags do - if (self.ability.name == 'Standard Pack' or - self.ability.name == 'Jumbo Standard Pack' or - self.ability.name == 'Mega Standard Pack') then - if G.GAME.tags[i]:apply_to_run({type = 'standard_pack_opened'}) then break end + if self.config.center.kind == 'Standard' then + if G.GAME.tags[i]:apply_to_run({type = 'standard_pack_opened'}) then + break + end end end ''' # Fluorescent edition 1/3 +# Prevent flipping [[patches]] [patches.pattern] target = 'card.lua' @@ -2567,6 +2394,7 @@ end ''' # Fluorescent edition 2/3 +# Prevent forced selection [[patches]] [patches.pattern] target = 'cardarea.lua' @@ -2582,6 +2410,7 @@ end ''' # Fluorescent edition 3/3 +# Prevent debuff [[patches]] [patches.pattern] target = 'card.lua' @@ -2600,6 +2429,17 @@ end ''' + + + + + + + +############################## + # NEW VOUCHERS # +############################## + # function Blind:press_play() (Hedge Trimmer) [[patches]] [patches.pattern] @@ -2635,15 +2475,7 @@ if G.GAME.used_vouchers['v_bunc_hedge_trimmer'] then G.PROFILES[G.SETTINGS.profile].hedge_trimmer_usage = (G.PROFILES[G.SETTINGS.profile].hedge_trimmer_usage or 0) + 1 - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'hedge_trimmer_used', used_total = G.PROFILES[G.SETTINGS.profile].hedge_trimmer_usage}) - end - end + check_for_unlock({type = 'hedge_trimmer_used', used_total = G.PROFILES[G.SETTINGS.profile].hedge_trimmer_usage}) end ''' @@ -2738,8 +2570,8 @@ position = 'after' match_indent = true payload = ''' -G.GAME.last_booster_pack = self -G.GAME.rerolled_pack = self.rerolled + G.GAME.last_booster_pack = self + G.GAME.rerolled_pack = self.rerolled ''' @@ -2750,13 +2582,14 @@ target = 'card.lua' pattern = 'if self.ability.set == "Booster" then' position = 'after' match_indent = true -payload = '''if not G.GAME.rerolled_pack then''' +payload = ''' if not G.GAME.rerolled_pack then''' # Shell Game (6/10) (UNSTABLE) [[patches]] [patches.pattern] target = 'card.lua' -pattern = 'G.GAME.pack_choices = self.ability.choose or self.config.center.config.choose or 1' +pattern = 'G.GAME.pack_choices = *' +times = 1 position = 'after' match_indent = true payload = '''end local skip_animation = G.GAME.rerolled_pack and 0 or nil''' @@ -2864,7 +2697,8 @@ position = 'at' match_indent = true payload = '''if self.name == 'Double Tag' and _context.tag.key ~= 'tag_double' and _context.tag.key ~= 'tag_bunc_triple' then''' -# Blind Cards 1/3 + +# Blind Cards 1/2 [[patches]] [patches.pattern] target = 'functions/UI_definitions.lua' @@ -2884,81 +2718,73 @@ end ''' -# Blind Cards 2/3 -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.FUNCS.sell_card = function(e)''' -position = 'before' -match_indent = true -payload = ''' - -G.FUNCS.can_use_blind_card = function(e) - e.config.colour = G.C.GREEN - e.config.button = 'use_blind_card' -end - -G.FUNCS.use_blind_card = function(e) - local card = e.config.ref_table - - local boss = card.ability.blind_card.blind.key - - play_sound('other1') - - e.config.button = nil - - local par = G.blind_select_opts.boss.parent - G.GAME.round_resets.blind_choices.Boss = boss - - if G.blind_select_opts.boss and par and par.config.object then - G.blind_select_opts.boss:remove() - G.blind_select_opts.boss = UIBox{ - T = {par.T.x, 0, 0, 0}, - definition = { - n = G.UIT.ROOT, - config = { - align = "cm", - colour = G.C.CLEAR - }, - nodes = {UIBox_dyn_container({create_UIBox_blind_choice('Boss')}, false, - get_blind_main_colour('Boss'), mix_colours(G.C.BLACK, get_blind_main_colour('Boss'), 0.8))} - }, - config = { - align = "bmi", - offset = { - x = 0, - y = G.ROOM.T.y + 9 - }, - major = par, - xy_bond = 'Weak' - } - } - par.config.object = G.blind_select_opts.boss - par.config.object:recalculate() - G.blind_select_opts.boss.parent = par - G.blind_select_opts.boss.alignment.offset.y = 0 - end - - G.PROFILES[G.SETTINGS.profile].blind_cards_used = (G.PROFILES[G.SETTINGS.profile].blind_cards_used or 0) + 1 - if G.PROFILES[G.SETTINGS.profile].blind_cards_used then - local locked_card - - for i = 1, #G.P_LOCKED do - locked_card = G.P_LOCKED[i] - - if not locked_card.unlocked and locked_card.check_for_unlock and type(locked_card.check_for_unlock) == 'function' then - locked_card:check_for_unlock({type = 'use_blind_card', blinds_total = G.PROFILES[G.SETTINGS.profile].blind_cards_used}) - end - end - end +# # Blind Cards old +# [[patches]] +# [patches.pattern] +# target = 'functions/button_callbacks.lua' +# pattern = '''G.FUNCS.sell_card = function(e)''' +# position = 'before' +# match_indent = true +# payload = ''' - G.FUNCS.end_consumeable(nil, 0.2) -end +# G.FUNCS.can_use_blind_card = function(e) +# e.config.colour = G.C.GREEN +# e.config.button = 'use_blind_card' +# end + +# G.FUNCS.use_blind_card = function(e) +# local card = e.config.ref_table + +# local boss = card.ability.blind_card.blind.key + +# play_sound('other1') + +# e.config.button = nil + +# local par = G.blind_select_opts.boss.parent +# G.GAME.round_resets.blind_choices.Boss = boss + +# if G.blind_select_opts.boss and par and par.config.object then +# G.blind_select_opts.boss:remove() +# G.blind_select_opts.boss = UIBox{ +# T = {par.T.x, 0, 0, 0}, +# definition = { +# n = G.UIT.ROOT, +# config = { +# align = "cm", +# colour = G.C.CLEAR +# }, +# nodes = {UIBox_dyn_container({create_UIBox_blind_choice('Boss')}, false, +# get_blind_main_colour('Boss'), mix_colours(G.C.BLACK, get_blind_main_colour('Boss'), 0.8))} +# }, +# config = { +# align = "bmi", +# offset = { +# x = 0, +# y = G.ROOM.T.y + 9 +# }, +# major = par, +# xy_bond = 'Weak' +# } +# } +# par.config.object = G.blind_select_opts.boss +# par.config.object:recalculate() +# G.blind_select_opts.boss.parent = par +# G.blind_select_opts.boss.alignment.offset.y = 0 +# end + +# G.PROFILES[G.SETTINGS.profile].blind_cards_used = (G.PROFILES[G.SETTINGS.profile].blind_cards_used or 0) + 1 +# if G.PROFILES[G.SETTINGS.profile].blind_cards_used then +# check_for_unlock({type = 'use_blind_card', blinds_total = G.PROFILES[G.SETTINGS.profile].blind_cards_used}) +# end + +# G.FUNCS.end_consumeable(nil, 0.2) +# end -''' +# ''' -# Blind Cards 3/3 (Blind Animation) +# Blind Cards 2/2 (Blind Animation) [[patches]] [patches.pattern] target = 'card.lua' @@ -2976,6 +2802,16 @@ end ''' + + + + + + + + + + # Virtual color, part 1/2 [[patches]] [patches.pattern] @@ -2997,6 +2833,17 @@ match_indent = true payload = '''bunco_virtual = G.C.BUNCO_VIRTUAL, bunco_virtual_dark = G.C.BUNCO_VIRTUAL_DARK,''' + + + + + + + +############################## + # NEW JOKER STICKERS # +############################## + # Scattering Sticker 1/2 [[patches]] [patches.pattern] @@ -3043,7 +2890,7 @@ end ''' -# Hindered Sticker 1/4 +# Stop selling animation when selling hindered joker and mark it as hindered (Hindered Sticker 1/4) [[patches]] [patches.pattern] target = 'card.lua' @@ -3062,7 +2909,7 @@ end ''' -# Hindered Sticker 2/4 +# Prevent hindered jokers from being sold twice (Hindered Sticker 2/4) [[patches]] [patches.pattern] target = 'card.lua' @@ -3071,7 +2918,7 @@ position = 'after' match_indent = true payload = '''not self.ability.bunc_hindered_sold and''' -# Hindered Sticker 3/4 +# Prevent hindered cards from being used (Hindered Sticker 3/4) [[patches]] [patches.pattern] target = 'card.lua' @@ -3080,107 +2927,48 @@ position = 'before' match_indent = true payload = '''if self.ability.bunc_hindered_sold and self.children.use_button then self.children.use_button:remove(); self.children.use_button = nil end''' -# Hindered Sticker 4/4 -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = 'function Card:calculate_joker(context)' -position = 'before' -match_indent = true -payload = ''' - -function Card:calculate_hindered() - if self.ability.bunc_hindered and self.ability.bunc_hindered_sold then - self:start_dissolve({G.C.GOLD}, nil, 1.6) - end -end - -''' - -# Reactive Sticker -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = 'function Card:calculate_joker(context)' -position = 'before' -match_indent = true -payload = ''' - -function Card:calculate_reactive() - if self.ability.bunc_reactive then - local debuffed_blinds = 0 - for _, v in pairs(G.GAME.round_resets.blind_states) do - if v == 'Skipped' then - debuffed_blinds = debuffed_blinds + 1 - end - end - if debuffed_blinds == 1 then - self:juice_up(0.3, 0.3) - end - end -end - -''' - -# Eternal Sticker compat +# Lets Hindered sticker trigger even if debuffed (Hindered Sticker 4/4) [[patches]] [patches.pattern] target = 'functions/common_events.lua' -pattern = 'card:set_eternal(true)' -position = 'at' +pattern = """if card.ability.rental then + local ret = {} + ret[SMODS.Stickers.rental] = card:calculate_sticker(context, 'rental') + return ret, {} + end""" +position = "before" match_indent = true payload = ''' - -if not (card.ability.bunc_scattering or card.ability.bunc_hindered or card.ability.bunc_reactive) then - card:set_eternal(true) +if card.ability.bunc_hindered then + local ret = {} + ret[SMODS.Stickers.bunc_hindered] = card:calculate_sticker(context, 'bunc_hindered') + return ret, {} end - ''' -# Cyan Stake +# Eternal Sticker compat [[patches]] [patches.pattern] -target = 'functions/common_events.lua' -pattern = 'if (area == G.shop_jokers) or (area == G.pack_cards) then' +target = 'card.lua' +pattern = 'function Card:set_eternal(_eternal)' position = 'after' match_indent = true payload = ''' -if G.GAME.modifiers.enable_scattering_in_shop and pseudorandom(('scattering')..G.GAME.round_resets.ante) > 0.7 then - SMODS.Stickers['bunc_scattering']:apply(card, true) -end + if (self.ability.bunc_scattering or self.ability.bunc_hindered) then + _eternal = nil + end ''' -# Pink Stake -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'if (area == G.shop_jokers) or (area == G.pack_cards) then' -position = 'after' -match_indent = true -payload = ''' -if G.GAME.modifiers.enable_hindered_in_shop and pseudorandom(('hindered')..G.GAME.round_resets.ante) > 0.7 then - SMODS.Stickers['bunc_hindered']:apply(card, true) -end -''' -# Magenta Stake -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'if (area == G.shop_jokers) or (area == G.pack_cards) then' -position = 'after' -match_indent = true -payload = ''' -if G.GAME.modifiers.enable_reactive_in_shop and pseudorandom(('reactive')..G.GAME.round_resets.ante) > 0.7 then - SMODS.Stickers['bunc_reactive']:apply(card, true) -end -''' +############################## + # NEW ENHANCEMENTS # +############################## # Cracker Cards 1/3 [[patches]] @@ -3244,9 +3032,9 @@ end [[patches]] [patches.regex] target = 'functions/state_events.lua' -pattern = 'end\n(.*)\}\)\)\n(.*)end\n(.*)end' +pattern = 'end\n(.*)\}\)\)\n(.*)end\n(?[\t ]*)(.*)end' position = "after" -match_indent = true +line_prepend = "$indent" payload = ''' if G.hand.crackers_highlighted and #G.hand.crackers_highlighted >= 1 then @@ -3296,53 +3084,59 @@ calculate_cracker_cards({full_hand = G.play.cards, scoring_hand = scoring_hand, ''' -# Money gain effects -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'function ease_dollars(mod, instant)' -position = 'after' -match_indent = true -payload = ''' - mod = BUNCOMOD.funcs.ease_dollars(mod) - if to_big(mod) == to_big(0) then return end -''' -# Money gain (Talisman skipping is on) + + + + +# # Money gain effects +# [[patches]] +# [patches.pattern] +# target = 'functions/common_events.lua' +# pattern = 'function ease_dollars(mod, instant)' +# position = 'after' +# match_indent = true +# payload = ''' + +# mod = BUNCOMOD.funcs.ease_dollars(mod) +# if to_big(mod) == to_big(0) then return end + +# ''' [[patches]] [patches.pattern] -target = 'main.lua' -pattern = 'mod = mod or 0' -position = 'after' +target = '=[SMODS _ "src/utils.lua"]' +pattern = 'if flags.numerator then context.numerator = flags.numerator end' +position = 'before' match_indent = true payload = ''' - - mod = BUNCOMOD.funcs.ease_dollars(mod) - if to_big(mod) == to_big(0) then return end - +if flags.bunc_new_dollars_mod then context.mod = flags.bunc_new_dollars_mod end ''' # Glitter edition in poll_edition [[patches]] [patches.pattern] target = '=[SMODS _ "src/overrides.lua"]' -pattern = '''if _key == "wheel_of_fortune" or _key == "aura" then -- set base game edition polling''' +pattern = '''_options = { 'e_negative', 'e_polychrome', 'e_holo', 'e_foil' }''' position = 'after' match_indent = true -payload = ''' if BUNCOMOD.content.config.gameplay_reworks then table.insert(_options, 'e_bunc_glitter') end''' +payload = ''' +if BUNCOMOD.content.config.gameplay_reworks and (_key == "wheel_of_fortune" or _key == "aura") then + table.insert(_options, 'e_bunc_glitter') +end +''' -# Back sprite of a card check -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''if true then -self.children.back = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers'], self.params.bypass_back or (self.playing_card and G.GAME[self.back].pos or G.P_CENTERS['b_red'].pos))''' -position = 'at' -match_indent = true -payload = '''if not self.children.back then - self.children.back = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers'], self.params.bypass_back or (self.playing_card and G.GAME[self.back].pos or G.P_CENTERS['b_red'].pos))''' +# # Back sprite of a card check +# [[patches]] +# [patches.pattern] +# target = 'card.lua' +# pattern = '''if true then +# self.children.back = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers'], self.params.bypass_back or (self.playing_card and G.GAME[self.back].pos or G.P_CENTERS['b_red'].pos))''' +# position = 'at' +# match_indent = true +# payload = '''if not self.children.back then +# self.children.back = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers'], self.params.bypass_back or (self.playing_card and G.GAME[self.back].pos or G.P_CENTERS['b_red'].pos))''' # Min Ante for Blind's collection UI [[patches]] @@ -3352,11 +3146,9 @@ pattern = '''ability_text[1] and {n=G.UIT.R, config={align = "cm", padding = 0.0 position = 'after' match_indent = true payload = ''', - ability_text[1] and blind.boss and {n=G.UIT.R, config={align = "cm"}, nodes={ {n=G.UIT.T, config={text = blind.boss.showdown and localize('bunc_final_blind') or (localize('bunc_min_ante')..' '..(blind.boss.min or '?')), scale = 0.3, colour = G.C.UI.TEXT_INACTIVE}} -}}, - +}} ''' # Remove exotic suit customization while locked @@ -3394,12 +3186,16 @@ payload = '''if not from_debuff then [[patches]] [patches.pattern] target = 'card.lua' -pattern = "if G.GAME.blind and G.GAME.blind.in_blind then G.E_MANAGER:add_event(Event({ func = function() G.GAME.blind:set_blind(nil, true, nil); return true end })) end" +pattern = "if G.GAME.blind and G.GAME.blind.in_blind and not self.from_quantum then G.E_MANAGER:add_event(Event({ func = function() G.GAME.blind:set_blind(nil, true, nil); return true end })) end" position = 'before' match_indent = true payload = '''end ''' + + + + # Drawstep bypassing [[patches]] [patches.pattern] @@ -3409,11 +3205,100 @@ position = 'at' match_indent = true payload = '''if SMODS.DrawSteps[k]:check_conditions(self, layer) and not (self.draw_bypass and self.draw_bypass[k]) then SMODS.DrawSteps[k].func(self, layer) end''' -# Locked tarots sprite -# [[patches]] -# [patches.pattern] -# target = 'card.lua' -# pattern = '''elseif self.config.center.consumeable and self.config.center.demo then''' -# position = 'at' -# match_indent = true -# payload = '''elseif self.config.center.consumeable and (self.config.center.demo or (not self.config.center.unlocked and not self.params.bypass_discovery_center)) then ''' \ No newline at end of file + + + + + +# Fix Gameplan messing with hand size too much +# Increasing hand size now only draws to hand if there is hand size to draw to +[[patches]] +[patches.pattern] +target = 'cardarea.lua' +pattern = '''local card_count = math.abs(delta)''' +position = 'after' +match_indent = true +payload = '''card_count = math.min(card_count, math.max(0, self.config.card_limit - #self.cards))''' + +# Fix Gameplan messing with discards +# Increasing hand size now only draws to hand if there is hand size to draw to +[[patches]] +[patches.pattern] +target = 'functions/common_events.lua' +pattern = '''if math.abs(math.max(G.GAME.current_round.discards_left, mod)) == 0 *''' +position = 'before' +match_indent = true +payload = ''' +if G.GAME.current_round.bunc_actual_discards_left and G.GAME.current_round.bunc_actual_discards_left <= 0 then + local new_mod = math.max(0, mod + G.GAME.current_round.bunc_actual_discards_left) + G.GAME.current_round.bunc_actual_discards_left = (G.GAME.current_round.bunc_actual_discards_left or G.GAME.current_round.discards_left) + mod + mod = new_mod +else + G.GAME.current_round.bunc_actual_discards_left = (G.GAME.current_round.bunc_actual_discards_left or G.GAME.current_round.discards_left) + mod +end +''' +[[patches]] +[patches.pattern] +target = 'functions/button_callbacks.lua' +pattern = '''G.GAME.current_round.discards_left = math.max(0, G.GAME.round_resets.discards + G.GAME.round_bonus.discards)''' +position = 'after' +match_indent = true +payload = ''' +G.GAME.current_round.bunc_actual_discards_left = G.GAME.current_round.discards_left +''' +[[patches]] +[patches.pattern] +target = 'functions/state_events.lua' +pattern = '''G.GAME.current_round.discards_left = math.max(0, G.GAME.round_resets.discards + G.GAME.round_bonus.discards)''' +position = 'after' +match_indent = true +payload = ''' +G.GAME.current_round.bunc_actual_discards_left = G.GAME.current_round.discards_left +''' + +# Fix Gameplan messing with voucher and booser pack slots in shops +# For cross-mod jokers +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/utils.lua"]' +pattern = '''SMODS.add_voucher_to_shop()''' +position = 'at' +match_indent = true +payload = ''' +if (G.GAME.starting_params.vouchers_in_shop + (G.GAME.modifiers.extra_vouchers or 0)) > #G.shop_vouchers.cards then + SMODS.add_voucher_to_shop() +end +''' +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/utils.lua"]' +pattern = '''SMODS.add_booster_to_shop()''' +position = 'at' +match_indent = true +payload = ''' +if (G.shop_booster.config.card_limit + (G.GAME.modifiers.extra_boosters or 0)) > #G.shop_booster.cards then + SMODS.add_booster_to_shop() +end +''' + +# End of Gameplay Fixes + + +# Adds joker-specific settings +[[patches]] +[patches.pattern] +target = 'functions/UI_definitions.lua' +pattern = "if card.area and card.area.config.type == 'joker' then" +position = "after" +match_indent = true +payload = ''' + if card.config.center.key == "j_bunc_stylophone" or card.config.center.key == "j_bunc_mousetrap" or card.config.center.key == "j_bunc_trigger_finger" then + local settings_sprite = Sprite(0, 0, 0.5, 0.5, G.ASSET_ATLAS['bunc_settings_icon'] ,{x=0, y=0}) + use = {n=G.UIT.C, config={align = "cr"}, nodes={ + {n=G.UIT.C, config={ref_table = card, align = "cr",maxw = 1.25, padding = 0.1, r=0.08, minh = (card.area and card.area.config.type == 'joker') and 0 or 1, hover = true, shadow = true, colour = G.C.UI.BACKGROUND_INACTIVE, button = card.config.center.key .. '_settings'}, nodes={ + {n=G.UIT.B, config = {w=0.1,h=0.6}}, + {n=G.UIT.O, config={object = settings_sprite, can_collide = false, shadow = true}} + }} + }} + end +''' diff --git a/lovely/compat_patch.toml b/lovely/compat_patch.toml new file mode 100644 index 00000000..ea5000f0 --- /dev/null +++ b/lovely/compat_patch.toml @@ -0,0 +1,15 @@ +[manifest] +version = "1.0.0" +priority = 0 + +# dummy patch to prevent crash on blank toml file +# yes this is jank but lovely cant handle a file with no patches +# and deleting it outright is asking for people to +# accidentally install it incorrectly +[[patches]] +[patches.pattern] +target = 'none' +pattern = '' +position = 'after' +match_indent = true +payload = '' \ No newline at end of file diff --git a/lovely/stake_fix_patch.toml b/lovely/stake_fix_patch.toml new file mode 100644 index 00000000..7f4347c8 --- /dev/null +++ b/lovely/stake_fix_patch.toml @@ -0,0 +1,54 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = -11 + +# [[patches]] +# [patches.pattern] +# target = '=[SMODS _ "src/utils.lua"]' +# pattern = 'local first_pass = not v.wins_by_key and not v.losses_by_key' +# position = 'after' +# match_indent = true +# payload = ''' +# sendDebugMessage(tprint(v), "Bunco") +# first_pass = first_pass and not v.bunco_loaded +# ''' +# times = 2 + +# Fixes game reloading messing with win stats (will turn jokers/decks won with cyan stake into gold stake) +# Shouldn't turn gold stake wins into cyan stake +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/utils.lua"]' +pattern = 'if index > 8 and not first_pass then break end' +position = 'after' +match_indent = true +payload = ''' +if index == 8 and v.bunco_loaded then break end +v.bunco_loaded = true -- Bit hacky, but easiest way to set this after the check +''' +times = 4 + +# Fixes changing game profile messing with win stats (as above) +[[patches]] +[patches.pattern] +target = '=[SMODS _ "src/game_object.lua"]' +pattern = '''table.sort(G.P_CENTER_POOLS[self.set], function(a, b) return a.order < b.order end)''' +position = 'before' +match_indent = true +payload = ''' +local reordered_stakes = {} +for i = 1, #G.P_CENTER_POOLS[self.set] do + local new_order = i + for j = 1, #reordered_stakes do + if G.P_CENTER_POOLS[self.set][reordered_stakes[j]].key == G.P_CENTER_POOLS[self.set][i].above_stake then + new_order = j + 1 + break + end + end + table.insert(reordered_stakes, new_order, i) +end +for index, value in ipairs(reordered_stakes) do + G.P_CENTER_POOLS[self.set][value].order = index +end +''' \ No newline at end of file diff --git a/lovely/talisman_only.toml b/lovely/talisman_only.toml new file mode 100644 index 00000000..ea5000f0 --- /dev/null +++ b/lovely/talisman_only.toml @@ -0,0 +1,15 @@ +[manifest] +version = "1.0.0" +priority = 0 + +# dummy patch to prevent crash on blank toml file +# yes this is jank but lovely cant handle a file with no patches +# and deleting it outright is asking for people to +# accidentally install it incorrectly +[[patches]] +[patches.pattern] +target = 'none' +pattern = '' +position = 'after' +match_indent = true +payload = '' \ No newline at end of file