diff --git a/functions/pokefamily.lua b/functions/pokefamily.lua index befe931d..cd878238 100644 --- a/functions/pokefamily.lua +++ b/functions/pokefamily.lua @@ -185,6 +185,7 @@ local default_family_list = { { "bramblin", "brambleghast" }, { "tinkatink", "tinkatuff", "tinkaton" }, { "wiglett", "wugtrio" }, + { "cetoddle", "cetitan" }, { "gimmighoul", "gholdengo", "gimmighoulr" }, { "ruins_of_alph" }, {{key = "imposter_professor", form = 0}, {key = "imposter_professor", form = 1}}, diff --git a/localization/en-us.lua b/localization/en-us.lua index aeb8b93b..0cda8842 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -5552,6 +5552,26 @@ return { "contains a scoring {C:attention}5{}, {C:attention}6{}, or {C:attention}7{}", } }, + j_poke_cetoddle = { + name = 'Cetoddle', + text = { + "Gains {X:red,C:white}X#1#{} Mult for every", + "{C:attention}Glass Card{} that is destroyed", + "{C:inactive}(Currently {}{X:red,C:white}X#2#{}{C:inactive} Mult){}", + "{C:inactive,s:0.8}(Evolves with an {C:attention,s:0.8}Ice Stone{C:inactive,s:0.8})" + } + }, + j_poke_cetitan = { + name = 'Cetitan', + text = { + "Gains {X:red,C:white}X#1#{} Mult for every", + "{C:attention}Glass Card{} that is destroyed", + "{br:4}text needs to be here to work", + "Scores double if every card", + "held in hand is {C:attention}Glass{}", + "{C:inactive}(Currently {}{X:red,C:white}X#2#{}{C:inactive} Mult){}", + } + }, j_poke_annihilape = { name = 'Annihilape', text = { diff --git a/pokemon/pokejokers_33.lua b/pokemon/pokejokers_33.lua index 58388668..100f846e 100644 --- a/pokemon/pokejokers_33.lua +++ b/pokemon/pokejokers_33.lua @@ -1,306 +1,447 @@ --- Wugtrio 961 -local wugtrio={ - name = "wugtrio", - pos = {x = 4, y = 4}, - config = {extra = {chips = 120, Xmult = 1.5}}, - loc_vars = function(self, info_queue, center) - type_tooltip(self, info_queue, center) - return {vars = {center.ability.extra.Xmult, center.ability.extra.chips}} - end, - rarity = 2, - cost = 6, - stage = "One", - atlas = "Pokedex9", - gen = 9, - ptype = "Water", - blueprint_compat = true, - calculate = function(self, card, context) - if context.cardarea == G.jokers and context.scoring_hand then - if context.joker_main then - local score_chips = false - local score_mult = false - if next(context.poker_hands['Three of a Kind']) then score_mult = true end - for k, v in ipairs(context.scoring_hand) do - if v:get_id() == 5 or v:get_id() == 6 or v:get_id() == 7 then - score_chips = true - break - end - end - if score_mult and score_chips then - return { - message = localize('poke_dig_ex'), - colour = G.C.MULT, - chip_mod = card.ability.extra.chips, - Xmult_mod = card.ability.extra.Xmult, - card = card - } - elseif score_chips then - return { - message = localize{type = 'variable', key = 'a_chips', vars = {card.ability.extra.chips}}, - colour = G.C.CHIPS, - chip_mod = card.ability.extra.chips, - card = card - } - elseif score_mult then - return { - message = localize{type = 'variable', key = 'a_xmult', vars = {card.ability.extra.Xmult}}, - colour = G.C.MULT, - Xmult_mod = card.ability.extra.Xmult, - card = card - } - end - end - end - end, - attributes = {"xmult", "chips", "hand_type", "rank", "five", "six", "seven"}, -} --- Bombirdier 962 --- Finizen 963 --- Palafin 964 --- Varoom 965 --- Revavroom 966 --- Cyclizar 967 --- Orthworm 968 --- Glimmet 969 --- Glimmora 970 --- Greavard 971 --- Houndstone 972 --- Flamigo 973 --- Cetoddle 974 --- Cetitan 975 --- Veluza 976 --- Dondozo 977 --- Tatsugiri 978 --- Annihilape 979 -local annihilape={ - name = "annihilape", - pos = {x = 2, y = 6}, - config = {extra = {mult_mod = 5, chip_mod = 7}}, - loc_vars = function(self, info_queue, center) - type_tooltip(self, info_queue, center) - return {vars = {center.ability.extra.mult_mod, center.ability.extra.chip_mod, center.ability.extra.mult_mod * (1 + G.GAME.current_round.hands_played), - center.ability.extra.chip_mod * (1 + G.GAME.current_round.hands_played)}} - end, - rarity = "poke_safari", - cost = 11, - stage = "Two", - ptype = "Fighting", - atlas = "Pokedex9", - gen = 9, - blueprint_compat = true, - calculate = function(self, card, context) - if context.individual and context.cardarea == G.play and not context.other_card.debuff then - if context.other_card:get_id() == 2 or - context.other_card:get_id() == 3 or - context.other_card:get_id() == 5 or - context.other_card:get_id() == 7 then - return { - chips = card.ability.extra.chip_mod * (1 + G.GAME.current_round.hands_played), - mult = card.ability.extra.mult_mod * (1 + G.GAME.current_round.hands_played), - card = card - } - end - end - end, - attributes = {"chips", "mult", "rank", "two", "three", "five", "seven"}, -} --- Clodsire 980 --- Farigiraf 981 -local farigiraf={ - name = "farigiraf", - pos = {x = 4, y = 6}, - config = {extra = {Xmult_multi = 2.2, score = false}}, - loc_vars = function(self, info_queue, center) - type_tooltip(self, info_queue, center) - if pokermon_config.detailed_tooltips then - info_queue[#info_queue+1] = {set = 'Other', key = 'holding', vars = {"Cryptid"}} - info_queue[#info_queue+1] = { set = 'Spectral', key = 'c_cryptid', vars = {2}} - end - return {vars = {center.ability.extra.Xmult_multi}} - end, - rarity = "poke_safari", - cost = 8, - stage = "One", - ptype = "Psychic", - atlas = "Pokedex9", - gen = 9, - perishable_compat = true, - blueprint_compat = true, - eternal_compat = true, - calculate = function(self, card, context) - if context.cardarea == G.jokers and context.scoring_hand then - if context.before and next(context.poker_hands['Two Pair']) and not context.blueprint then - card.ability.extra.score = true - end - if context.after then - card.ability.extra.score = false - end - end - if context.individual and not context.end_of_round and context.cardarea == G.play and card.ability.extra.score then - local first_face = nil - local last_face = nil - for i = 1, #context.scoring_hand do - if context.scoring_hand[i]:is_face() then - first_face = context.scoring_hand[i]; - break - end - end - for i = #context.scoring_hand, 1, -1 do - if context.scoring_hand[i]:is_face() and context.scoring_hand[i] ~= first_face then - last_face = context.scoring_hand[i]; - break - end - end - if context.other_card == first_face or context.other_card == last_face then - return { - x_mult = card.ability.extra.Xmult_multi, - colour = G.C.RED, - card = card - } - end - end - end, - add_to_deck = function(self, card, from_debuff) - if not from_debuff then - if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then - local _card = create_card('Spectral', G.consumeables, nil, nil, nil, nil, 'c_cryptid') - _card:add_to_deck() - G.consumeables:emplace(_card) - card_eval_status_text(_card, 'extra', nil, nil, nil, {message = localize('k_plus_spectral'), colour = G.C.SECONDARY_SET.Spectral}) - end - end - end, - attributes = {"holding", "face", "xmult", "hand_type"}, -} --- Dudunsparce 982 -local dudunsparce={ - name = "dudunsparce", - pos = {x = 5, y = 6}, - config = {extra = {card_slots = 1, pack_slots = 1, voucher_slots = 1, form = 0}}, - loc_vars = function(self, info_queue, center) - type_tooltip(self, info_queue, center) - local alt_key = nil - if center.ability.extra.form == 1 then - alt_key = "j_poke_dudunsparce2" - if pokermon_config.detailed_tooltips then - info_queue[#info_queue+1] = {key = 'tag_coupon', set = 'Tag'} - info_queue[#info_queue+1] = {set = 'Other', key = 'holding', vars = {"Coupon Tag"}} - end - end - return {vars = {center.ability.extra.card_slots, center.ability.extra.pack_slots, center.ability.extra.voucher_slots}, key = alt_key} - end, - rarity = "poke_safari", - cost = 9, - stage = "One", - ptype = "Colorless", - atlas = "Pokedex9", - gen = 9, - perishable_compat = true, - blueprint_compat = false, - eternal_compat = true, - set_ability = function(self, card, initial, delay_sprites) - if initial then - if pseudorandom('dudunsparce') < (1/6) then - card.ability.extra.form = 1 - self:set_sprites(card) - end - end - end, - set_sprites = function(self, card, front) - if card.ability and card.ability.extra and card.ability.extra.form == 1 then - card.children.center:set_sprite_pos({x = 8, y = 3}) - else - card.children.center:set_sprite_pos({x = 6, y = 3}) - end - end, - add_to_deck = function(self, card, from_debuff) - change_shop_size(card.ability.extra.card_slots) - SMODS.change_booster_limit(card.ability.extra.pack_slots) - SMODS.change_voucher_limit(card.ability.extra.voucher_slots) - if card.ability.extra.form == 1 then - self:set_sprites(card) - if not from_debuff then - G.E_MANAGER:add_event(Event({ - func = (function() - add_tag(Tag('tag_coupon')) - play_sound('generic1', 0.9 + math.random()*0.1, 0.8) - play_sound('holo1', 1.2 + math.random()*0.1, 0.4) - return true - end) - })) - card_eval_status_text(card, 'extra', nil, nil, nil, {message = localize('poke_wowthree')}) - end - end - end, - remove_from_deck = function(self, card, from_debuff) - change_shop_size(-card.ability.extra.card_slots) - SMODS.change_booster_limit(-card.ability.extra.card_slots) - SMODS.change_voucher_limit(-card.ability.extra.card_slots) - end, - attributes = {"passive"}, -} --- Kingambit 983 -local kingambit={ - name = "kingambit", - pos = {x = 0, y = 0}, - config = {extra = {Xmult = 2,}}, - loc_vars = function(self, info_queue, center) - type_tooltip(self, info_queue, center) - return {vars = {center.ability.extra.Xmult, }} - end, - rarity = "poke_safari", - cost = 11, - gen = 9, - stage = "Two", - ptype = "Metal", - atlas = "Pokedex9", - perishable_compat = true, - blueprint_compat = true, - eternal_compat = true, - calculate = function(self, card, context) - if context.cardarea == G.jokers and context.scoring_hand then - if context.joker_main then - return { - message = localize{type = 'variable', key = 'a_xmult', vars = {card.ability.extra.Xmult}}, - colour = G.C.XMULT, - Xmult_mod = card.ability.extra.Xmult - } - end - end - if context.individual and not context.end_of_round and context.cardarea == G.play then - local king_count = 0 - for _, playing_card in ipairs(G.playing_cards) do - if playing_card:get_id() == 13 then king_count = king_count + 1 end - end - if king_count == 1 then - local has_king = nil - for k, v in pairs(context.full_hand) do - if v:get_id() == 13 then - has_king = true - break - end - end - if has_king and not context.other_card:is_face() then - local Xmult = card.ability.extra.Xmult/2 - if Xmult > 1 then - return { - x_mult = Xmult, - card = card - } - end - end - end - end - end, - attributes = {"xmult", "rank", "king", "face", "full_deck"}, -} --- Great Tusk 984 --- Scream Tail 985 --- Brute Bonnet 986 --- Flutter Mane 987 --- Slither Wing 988 --- Sandy Shocks 989 --- Iron Treads 990 -return {name = "Pokemon Jokers 961-990", - list = {wugtrio, annihilape, farigiraf, dudunsparce, kingambit}, -} +-- Wugtrio 961 +local wugtrio={ + name = "wugtrio", + pos = {x = 4, y = 4}, + config = {extra = {chips = 120, Xmult = 1.5}}, + loc_vars = function(self, info_queue, center) + type_tooltip(self, info_queue, center) + return {vars = {center.ability.extra.Xmult, center.ability.extra.chips}} + end, + rarity = 2, + cost = 6, + stage = "One", + atlas = "Pokedex9", + gen = 9, + ptype = "Water", + blueprint_compat = true, + calculate = function(self, card, context) + if context.cardarea == G.jokers and context.scoring_hand then + if context.joker_main then + local score_chips = false + local score_mult = false + if next(context.poker_hands['Three of a Kind']) then score_mult = true end + for k, v in ipairs(context.scoring_hand) do + if v:get_id() == 5 or v:get_id() == 6 or v:get_id() == 7 then + score_chips = true + break + end + end + if score_mult and score_chips then + return { + message = localize('poke_dig_ex'), + colour = G.C.MULT, + chip_mod = card.ability.extra.chips, + Xmult_mod = card.ability.extra.Xmult, + card = card + } + elseif score_chips then + return { + message = localize{type = 'variable', key = 'a_chips', vars = {card.ability.extra.chips}}, + colour = G.C.CHIPS, + chip_mod = card.ability.extra.chips, + card = card + } + elseif score_mult then + return { + message = localize{type = 'variable', key = 'a_xmult', vars = {card.ability.extra.Xmult}}, + colour = G.C.MULT, + Xmult_mod = card.ability.extra.Xmult, + card = card + } + end + end + end + end, + attributes = {"xmult", "chips", "hand_type", "rank", "five", "six", "seven"}, +} +-- Bombirdier 962 +-- Finizen 963 +-- Palafin 964 +-- Varoom 965 +-- Revavroom 966 +-- Cyclizar 967 +-- Orthworm 968 +-- Glimmet 969 +-- Glimmora 970 +-- Greavard 971 +-- Houndstone 972 +-- Flamigo 973 +-- Cetoddle 974 +local cetoddle = { + name = "cetoddle", + config = {extra = {Xmult_mod = 0.25, Xmult = 1}}, + loc_vars = function(self, info_queue, card) + type_tooltip(self, info_queue, card) + return {vars = {card.ability.extra.Xmult_mod, card.ability.extra.Xmult}} + end, + designer = "Sonfive", + rarity = 2, + cost = 6, + enhancement_gate = 'm_glass', + item_req = "icestone", + stage = "Basic", + ptype = "Water", + gen = 9, + blueprint_compat = true, + perishable_compat = false, + calculate = function(self, card, context) + if context.remove_playing_cards and not context.blueprint then + local glass_cards = 0 + for _, removed_card in ipairs(context.removed) do + if removed_card.shattered then glass_cards = glass_cards + 1 end + end + if glass_cards > 0 then + G.E_MANAGER:add_event(Event({ + func = function() + G.E_MANAGER:add_event(Event({ + func = function() + card.ability.extra.Xmult = card.ability.extra.Xmult + + card.ability.extra.Xmult_mod * glass_cards + return true + end + })) + SMODS.calculate_effect( + { + message = localize { type = 'variable', key = 'a_xmult', vars = { card.ability.extra.Xmult + + card.ability.extra.Xmult_mod * glass_cards } } + }, card) + return true + end + })) + return nil, true + end + end + if context.using_consumeable and not context.blueprint and context.consumeable.config.center.key == 'c_hanged_man' then + -- Glass Joker updates on Hanged Man and no other destroy consumable + local glass_cards = 0 + for _, removed_card in ipairs(G.hand.highlighted) do + if SMODS.has_enhancement(removed_card, 'm_glass') then glass_cards = glass_cards + 1 end + end + if glass_cards > 0 then + card.ability.extra.Xmult = card.ability.extra.Xmult + + card.ability.extra.Xmult_mod * glass_cards + return { + message = localize { type = 'variable', key = 'a_xmult', vars = { card.ability.extra.Xmult } } + } + end + end + if context.joker_main then + return { xmult = card.ability.extra.Xmult } + end + return item_evo(self, card, context, "j_sonfive_cetitan") + end, +} +-- Cetitan 975 +local cetitan = { + name = "cetitan", + config = {extra = {Xmult_mod = 0.5, Xmult = 1}}, + loc_vars = function(self, info_queue, card) + type_tooltip(self, info_queue, card) + return {vars = {card.ability.extra.Xmult_mod, card.ability.extra.Xmult}} + end, + designer = "Sonfive", + rarity = "poke_safari", + cost = 8, + enhancement_gate = 'm_glass', + stage = "One", + ptype = "Water", + gen = 9, + blueprint_compat = true, + perishable_compat = false, + calculate = function(self, card, context) + if context.remove_playing_cards and not context.blueprint then + local glass_cards = 0 + for _, removed_card in ipairs(context.removed) do + if removed_card.shattered then glass_cards = glass_cards + 1 end + end + if glass_cards > 0 then + G.E_MANAGER:add_event(Event({ + func = function() + G.E_MANAGER:add_event(Event({ + func = function() + card.ability.extra.Xmult = card.ability.extra.Xmult + + card.ability.extra.Xmult_mod * glass_cards + return true + end + })) + SMODS.calculate_effect( + { + message = localize { type = 'variable', key = 'a_xmult', vars = { card.ability.extra.Xmult + + card.ability.extra.Xmult_mod * glass_cards } } + }, card) + return true + end + })) + return nil, true -- This is for Joker retrigger purposes + end + end + if context.using_consumeable and not context.blueprint and context.consumeable.config.center.key == 'c_hanged_man' then + -- Glass Joker updates on Hanged Man and no other destroy consumable + local glass_cards = 0 + for _, removed_card in ipairs(G.hand.highlighted) do + if SMODS.has_enhancement(removed_card, 'm_glass') then glass_cards = glass_cards + 1 end + end + if glass_cards > 0 then + card.ability.extra.Xmult = card.ability.extra.Xmult + + card.ability.extra.Xmult_mod * glass_cards + return { + message = localize { type = 'variable', key = 'a_xmult', vars = { card.ability.extra.Xmult } } + } + end + end + + if context.joker_main then + local count = 0 + local hail = false + for i=1, #G.hand.cards do + if SMODS.has_enhancement(G.hand.cards[i], 'm_glass') then + count = count + 1 + end + end + if count == #G.hand.cards then + hail = true + end + if hail then + return { xmult = (card.ability.extra.Xmult * 2) } + else + return { xmult = card.ability.extra.Xmult } + end + end + end, +} +-- Veluza 976 +-- Dondozo 977 +-- Tatsugiri 978 +-- Annihilape 979 +local annihilape={ + name = "annihilape", + pos = {x = 2, y = 6}, + config = {extra = {mult_mod = 5, chip_mod = 7}}, + loc_vars = function(self, info_queue, center) + type_tooltip(self, info_queue, center) + return {vars = {center.ability.extra.mult_mod, center.ability.extra.chip_mod, center.ability.extra.mult_mod * (1 + G.GAME.current_round.hands_played), + center.ability.extra.chip_mod * (1 + G.GAME.current_round.hands_played)}} + end, + rarity = "poke_safari", + cost = 11, + stage = "Two", + ptype = "Fighting", + atlas = "Pokedex9", + gen = 9, + blueprint_compat = true, + calculate = function(self, card, context) + if context.individual and context.cardarea == G.play and not context.other_card.debuff then + if context.other_card:get_id() == 2 or + context.other_card:get_id() == 3 or + context.other_card:get_id() == 5 or + context.other_card:get_id() == 7 then + return { + chips = card.ability.extra.chip_mod * (1 + G.GAME.current_round.hands_played), + mult = card.ability.extra.mult_mod * (1 + G.GAME.current_round.hands_played), + card = card + } + end + end + end, + attributes = {"chips", "mult", "rank", "two", "three", "five", "seven"}, +} +-- Clodsire 980 +-- Farigiraf 981 +local farigiraf={ + name = "farigiraf", + pos = {x = 4, y = 6}, + config = {extra = {Xmult_multi = 2.2, score = false}}, + loc_vars = function(self, info_queue, center) + type_tooltip(self, info_queue, center) + if pokermon_config.detailed_tooltips then + info_queue[#info_queue+1] = {set = 'Other', key = 'holding', vars = {"Cryptid"}} + info_queue[#info_queue+1] = { set = 'Spectral', key = 'c_cryptid', vars = {2}} + end + return {vars = {center.ability.extra.Xmult_multi}} + end, + rarity = "poke_safari", + cost = 8, + stage = "One", + ptype = "Psychic", + atlas = "Pokedex9", + gen = 9, + perishable_compat = true, + blueprint_compat = true, + eternal_compat = true, + calculate = function(self, card, context) + if context.cardarea == G.jokers and context.scoring_hand then + if context.before and next(context.poker_hands['Two Pair']) and not context.blueprint then + card.ability.extra.score = true + end + if context.after then + card.ability.extra.score = false + end + end + if context.individual and not context.end_of_round and context.cardarea == G.play and card.ability.extra.score then + local first_face = nil + local last_face = nil + for i = 1, #context.scoring_hand do + if context.scoring_hand[i]:is_face() then + first_face = context.scoring_hand[i]; + break + end + end + for i = #context.scoring_hand, 1, -1 do + if context.scoring_hand[i]:is_face() and context.scoring_hand[i] ~= first_face then + last_face = context.scoring_hand[i]; + break + end + end + if context.other_card == first_face or context.other_card == last_face then + return { + x_mult = card.ability.extra.Xmult_multi, + colour = G.C.RED, + card = card + } + end + end + end, + add_to_deck = function(self, card, from_debuff) + if not from_debuff then + if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then + local _card = create_card('Spectral', G.consumeables, nil, nil, nil, nil, 'c_cryptid') + _card:add_to_deck() + G.consumeables:emplace(_card) + card_eval_status_text(_card, 'extra', nil, nil, nil, {message = localize('k_plus_spectral'), colour = G.C.SECONDARY_SET.Spectral}) + end + end + end, + attributes = {"holding", "face", "xmult", "hand_type"}, +} +-- Dudunsparce 982 +local dudunsparce={ + name = "dudunsparce", + pos = {x = 5, y = 6}, + config = {extra = {card_slots = 1, pack_slots = 1, voucher_slots = 1, form = 0}}, + loc_vars = function(self, info_queue, center) + type_tooltip(self, info_queue, center) + local alt_key = nil + if center.ability.extra.form == 1 then + alt_key = "j_poke_dudunsparce2" + if pokermon_config.detailed_tooltips then + info_queue[#info_queue+1] = {key = 'tag_coupon', set = 'Tag'} + info_queue[#info_queue+1] = {set = 'Other', key = 'holding', vars = {"Coupon Tag"}} + end + end + return {vars = {center.ability.extra.card_slots, center.ability.extra.pack_slots, center.ability.extra.voucher_slots}, key = alt_key} + end, + rarity = "poke_safari", + cost = 9, + stage = "One", + ptype = "Colorless", + atlas = "Pokedex9", + gen = 9, + perishable_compat = true, + blueprint_compat = false, + eternal_compat = true, + set_ability = function(self, card, initial, delay_sprites) + if initial then + if pseudorandom('dudunsparce') < (1/6) then + card.ability.extra.form = 1 + self:set_sprites(card) + end + end + end, + set_sprites = function(self, card, front) + if card.ability and card.ability.extra and card.ability.extra.form == 1 then + card.children.center:set_sprite_pos({x = 8, y = 3}) + else + card.children.center:set_sprite_pos({x = 6, y = 3}) + end + end, + add_to_deck = function(self, card, from_debuff) + change_shop_size(card.ability.extra.card_slots) + SMODS.change_booster_limit(card.ability.extra.pack_slots) + SMODS.change_voucher_limit(card.ability.extra.voucher_slots) + if card.ability.extra.form == 1 then + self:set_sprites(card) + if not from_debuff then + G.E_MANAGER:add_event(Event({ + func = (function() + add_tag(Tag('tag_coupon')) + play_sound('generic1', 0.9 + math.random()*0.1, 0.8) + play_sound('holo1', 1.2 + math.random()*0.1, 0.4) + return true + end) + })) + card_eval_status_text(card, 'extra', nil, nil, nil, {message = localize('poke_wowthree')}) + end + end + end, + remove_from_deck = function(self, card, from_debuff) + change_shop_size(-card.ability.extra.card_slots) + SMODS.change_booster_limit(-card.ability.extra.card_slots) + SMODS.change_voucher_limit(-card.ability.extra.card_slots) + end, + attributes = {"passive"}, +} +-- Kingambit 983 +local kingambit={ + name = "kingambit", + pos = {x = 0, y = 0}, + config = {extra = {Xmult = 2,}}, + loc_vars = function(self, info_queue, center) + type_tooltip(self, info_queue, center) + return {vars = {center.ability.extra.Xmult, }} + end, + rarity = "poke_safari", + cost = 11, + gen = 9, + stage = "Two", + ptype = "Metal", + atlas = "Pokedex9", + perishable_compat = true, + blueprint_compat = true, + eternal_compat = true, + calculate = function(self, card, context) + if context.cardarea == G.jokers and context.scoring_hand then + if context.joker_main then + return { + message = localize{type = 'variable', key = 'a_xmult', vars = {card.ability.extra.Xmult}}, + colour = G.C.XMULT, + Xmult_mod = card.ability.extra.Xmult + } + end + end + if context.individual and not context.end_of_round and context.cardarea == G.play then + local king_count = 0 + for _, playing_card in ipairs(G.playing_cards) do + if playing_card:get_id() == 13 then king_count = king_count + 1 end + end + if king_count == 1 then + local has_king = nil + for k, v in pairs(context.full_hand) do + if v:get_id() == 13 then + has_king = true + break + end + end + if has_king and not context.other_card:is_face() then + local Xmult = card.ability.extra.Xmult/2 + if Xmult > 1 then + return { + x_mult = Xmult, + card = card + } + end + end + end + end + end, + attributes = {"xmult", "rank", "king", "face", "full_deck"}, +} +-- Great Tusk 984 +-- Scream Tail 985 +-- Brute Bonnet 986 +-- Flutter Mane 987 +-- Slither Wing 988 +-- Sandy Shocks 989 +-- Iron Treads 990 +return {name = "Pokemon Jokers 961-990", + list = {wugtrio, cetoddle, cetitan, annihilape, farigiraf, dudunsparce, kingambit}, +}