diff --git a/Cryptid.json b/Cryptid.json index f1d6f082f..35ca9ad60 100644 --- a/Cryptid.json +++ b/Cryptid.json @@ -9,12 +9,11 @@ "priority": 114, "badge_colour": "708b91", "badge_text_colour": "FFFFFF", - "version": "0.5.10", + "version": "0.5.11", "dependencies": [ "Steamodded (>=1.0.0~BETA-0711a)" ], "conflicts": [ - "Saturn", "AntePreview (>= 2.0.0~0c16a) (<<3.0.0)", "Cartomancer (<= 4.11)" ], diff --git a/assets/1x/cry_misc.png b/assets/1x/cry_misc.png index 26f1ebcc6..56da675c4 100644 Binary files a/assets/1x/cry_misc.png and b/assets/1x/cry_misc.png differ diff --git a/assets/1x/intercept_sprite.png b/assets/1x/intercept_sprite.png deleted file mode 100644 index e02c8eca5..000000000 Binary files a/assets/1x/intercept_sprite.png and /dev/null differ diff --git a/assets/2x/cry_misc.png b/assets/2x/cry_misc.png index 9273e3ec9..c835b36f2 100644 Binary files a/assets/2x/cry_misc.png and b/assets/2x/cry_misc.png differ diff --git a/assets/2x/intercept_sprite.png b/assets/2x/intercept_sprite.png deleted file mode 100644 index c215870b7..000000000 Binary files a/assets/2x/intercept_sprite.png and /dev/null differ diff --git a/items/blind.lua b/items/blind.lua index 99be5b2d3..f569a5bbd 100644 --- a/items/blind.lua +++ b/items/blind.lua @@ -11,6 +11,7 @@ local oldox = { boss = { min = 2, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 4, @@ -36,6 +37,7 @@ local oldhouse = { boss = { min = 3, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 5, @@ -64,6 +66,7 @@ local oldarm = { boss = { min = 3, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 6, @@ -92,6 +95,7 @@ local oldfish = { boss = { min = 2, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 7, @@ -117,6 +121,7 @@ local oldmanacle = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 8, @@ -142,6 +147,7 @@ local oldserpent = { boss = { min = 5, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 9, @@ -167,6 +173,7 @@ local oldpillar = { boss = { min = 3, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 10, @@ -195,6 +202,7 @@ local oldflint = { boss = { min = 3, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 11, @@ -223,6 +231,7 @@ local oldmark = { boss = { min = 4, max = 10, + yes_orb = true, }, atlas = "nostalgia", order = 12, @@ -251,6 +260,7 @@ local tax = { boss = { min = 2, max = 10, + yes_orb = true, }, atlas = "blinds", order = 2, @@ -303,6 +313,7 @@ local box = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "blinds", order = 13, @@ -329,6 +340,7 @@ local clock = { boss = { min = 2, max = 10, + yes_orb = true, }, config = { tw_bl = { @@ -368,6 +380,7 @@ local trick = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "blinds", order = 14, @@ -404,6 +417,7 @@ local joke = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "blinds", order = 15, @@ -451,6 +465,7 @@ local hammer = { boss = { min = 2, max = 10, + yes_orb = true, }, atlas = "blinds", order = 19, @@ -487,6 +502,7 @@ local magic = { boss = { min = 2, max = 10, + yes_orb = true, }, atlas = "blinds", order = 20, @@ -523,6 +539,7 @@ local windmill = { boss = { min = 4, max = 10, + yes_orb = true, }, atlas = "blinds", order = 16, @@ -547,6 +564,7 @@ local striker = { boss = { min = 4, max = 10, + yes_orb = true, }, atlas = "blinds", order = 1, @@ -571,6 +589,7 @@ local shackle = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "blinds", order = 18, @@ -605,6 +624,7 @@ local pin = { boss = { min = 4, max = 10, + yes_orb = true, }, atlas = "blinds", order = 17, @@ -648,6 +668,7 @@ local scorch = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "blinds", order = 21, @@ -663,11 +684,11 @@ local scorch = { and (context.cardarea == G.play or context.cardarea == "unscored") and not G.GAME.blind.disabled then - return { remove = not context.destroy_card.ability.eternal } + return { remove = not SMODS.is_eternal(context.destroying_card) } end if context.discard and not G.GAME.blind.disabled then for i, card in ipairs(G.hand.highlighted) do - return { remove = not card.ability.eternal } + return { remove = not SMODS.is_eternal(card) } end end end, @@ -699,6 +720,7 @@ local greed = { boss = { min = 1, max = 10, + yes_orb = true, }, atlas = "blinds", order = 22, @@ -764,6 +786,7 @@ local decision = { boss = { min = 4, max = 666666, + yes_orb = true, }, atlas = "blinds", order = 23, @@ -848,6 +871,7 @@ local repulsor = { boss = { min = 4, max = 666666, + yes_orb = true, }, atlas = "blinds_two", order = 24, @@ -899,6 +923,7 @@ local chromatic = { boss = { min = 1, max = 666666, + yes_orb = true, }, atlas = "blinds_two", order = 25, @@ -925,31 +950,29 @@ local landlord = { pos = { x = 0, y = 2 }, dollars = 5, boss = { - min = 1, + min = 4, max = 666666, + yes_orb = true, }, atlas = "blinds_two", order = 26, boss_colour = HEX("c89f13"), - calculate = function(self, blind, context) - if context.after then - local jokers = {} - for i, v in pairs(G.jokers.cards) do - if not v.ability.rental then - jokers[#jokers + 1] = v - end - end - if #jokers > 0 then - G.E_MANAGER:add_event(Event({ - func = function() - local joker = pseudorandom_element(jokers, pseudoseed("cry_landlord")) - joker.ability.rental = true - joker:juice_up() - return true - end, - })) + debuff_hand = function(self, cards, hand, handname, check) + G.GAME.blind.triggered = false + local jokers = {} + for i, v in pairs(G.jokers.cards) do + if not v.ability.rental then + jokers[#jokers + 1] = v end + end + if #jokers > 0 then G.GAME.blind.triggered = true + if not check then + local joker = pseudorandom_element(jokers, pseudoseed("cry_landlord")) + joker:set_rental(true) + joker:juice_up() + G.GAME.blind:wiggle() + end end end, } @@ -973,6 +996,7 @@ local lavender_loop = { min = 3, max = 10, showdown = true, + yes_orb = true, }, atlas = "blinds", order = 91, @@ -1074,6 +1098,7 @@ local vermillion_virus = { min = 3, max = 10, showdown = true, + yes_orb = true, }, atlas = "blinds", order = 90, @@ -1083,7 +1108,7 @@ local vermillion_virus = { local idx --Check for eligible cards (not eternal and not immune) for i = 1, #G.jokers.cards do - if not G.jokers.cards[i].config.center.immune_to_vermillion and not G.jokers.cards[i].ability.eternal then + if not G.jokers.cards[i].config.center.immune_to_vermillion and not SMODS.is_eternal(G.jokers.cards[i]) then eligible_cards[#eligible_cards + 1] = G.jokers.cards[i] end end @@ -1125,6 +1150,7 @@ local sapphire_stamp = { min = 3, max = 10, showdown = true, + yes_orb = true, }, atlas = "blinds", order = 92, diff --git a/items/code.lua b/items/code.lua index ebc8dbc62..56c4accfa 100644 --- a/items/code.lua +++ b/items/code.lua @@ -1243,6 +1243,7 @@ local rework = { return card.ability.set == "Joker" end) return #cards == 1 + and not SMODS.is_eternal(cards[1]) and cards[1].ability.name ~= ("cry-meteor" or "cry-exoplanet" or "cry-stardust" or "cry_cursed" or "Diet Cola") end, @@ -1318,7 +1319,7 @@ local merge = { if #hand ~= 1 or #consumeables ~= 1 - or consumeables[1].ability.eternal + or SMODS.is_eternal(consumeables[1]) or consumeables[1].ability.set == "Unique" then return false @@ -1421,7 +1422,7 @@ local commit = { return card.ability.set == "Joker" and not card.getting_sliced end) return #jokers == 1 - and not jokers[1].ability.eternal + and not SMODS.is_eternal(jokers[1]) and not (type(jokers[1].config.center.rarity) == "number" and jokers[1].config.center.rarity >= 5) end, use = function(self, card, area, copier) @@ -2185,6 +2186,8 @@ local hooked = { and context.post_trigger and not context.forcetrigger and not context.other_context.forcetrigger + and not context.other_context.mod_probability + and not context.other_context.fixed_probability then if not card.ability.cry_hook_triggers_left then card.ability.cry_hook_triggers_left = 8 @@ -4209,7 +4212,7 @@ local alttab = { local tag = nil local type = G.GAME.blind:get_type() local tag_key = Cryptid.get_next_tag() - if tag_Key then + if tag_key then tag = Tag(tag_key) elseif type == "Boss" then tag = Tag(get_next_tag_key()) @@ -4966,7 +4969,7 @@ local cut = { if G.consumeables.cards[i].ability.set == "Code" and not G.consumeables.cards[i].getting_sliced - and not G.consumeables.cards[i].ability.eternal + and not SMODS.is_eternal(G.consumeables.cards[i]) then destructable_codecard[#destructable_codecard + 1] = G.consumeables.cards[i] end diff --git a/items/epic.lua b/items/epic.lua index b11b4be3f..364d4af4c 100644 --- a/items/epic.lua +++ b/items/epic.lua @@ -1454,7 +1454,7 @@ local curse_sob = { check_for_unlock = function(self, args) if Cryptid.safe_get(G, "jokers") then for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key == "j_obelisk" and G.jokers.cards[i].ability.eternal then + if G.jokers.cards[i].config.center.key == "j_obelisk" and SMODS.is_eternal(G.jokers.cards[i]) then unlock_card(self) end end @@ -2052,7 +2052,7 @@ local fleshpanopticon = { return true end, })) - if not card.ability.eternal then + if not SMODS.is_eternal(card) then G.E_MANAGER:add_event(Event({ func = function() play_sound("tarot1") diff --git a/items/exotic.lua b/items/exotic.lua index 32fb917d5..47aa7e82b 100644 --- a/items/exotic.lua +++ b/items/exotic.lua @@ -23,7 +23,7 @@ local gateway = { use = function(self, card, area, copier) local deletable_jokers = {} for k, v in pairs(G.jokers.cards) do - if not v.ability.eternal then + if not SMODS.is_eternal(v) then deletable_jokers[#deletable_jokers + 1] = v end end diff --git a/items/m.lua b/items/m.lua index bfe8af659..1e0107bee 100644 --- a/items/m.lua +++ b/items/m.lua @@ -1662,7 +1662,7 @@ local macabre = { and not v:is_jolly() and v.config.center.key ~= "j_cry_mprime" and not ( - v.ability.eternal + SMODS.is_eternal(v) or v.getting_sliced or Cryptid.safe_get(v.config.center, "pools", "M") ) diff --git a/items/misc.lua b/items/misc.lua index dfa9cd485..fa197856d 100644 --- a/items/misc.lua +++ b/items/misc.lua @@ -236,7 +236,7 @@ local abstract = { context.cardarea == G.hand and context.before and not card.ability.extra.marked - and not card.ability.eternal + and not SMODS.is_eternal(card) and not card.ability.extra.survive --this presvents repitition of shatter chance by shutting it out once it confirms to "survive" and SMODS.pseudorandom_probability( card, @@ -260,7 +260,7 @@ local abstract = { and context.cardarea == G.hand and card.ability.extra.marked and not context.repetition - and not card.ability.eternal + and not SMODS.is_eternal(card) and not (card.will_shatter or card.destroyed or card.shattered) then G.E_MANAGER:add_event(Event({ @@ -423,6 +423,13 @@ local azure_seal = { break end end + if + G.GAME.last_hand_played == "cry_Declare0" + or G.GAME.last_hand_played == "cry_Declare1" + or G.GAME.last_hand_played == "cry_Declare2" + then + _planet = "c_cry_voxel" + end end if G.GAME.last_hand_played == "cry_Declare0" @@ -680,7 +687,7 @@ local baneful1 = { if G.jokers and G.jokers.cards then for i = #G.jokers.cards, 1, -1 do if - not (G.jokers.cards[i].ability.eternal or G.jokers.cards[i].config.center.rarity == "cry_cursed") + not (SMODS.is_eternal(G.jokers.cards[i]) or G.jokers.cards[i].config.center.rarity == "cry_cursed") then return false end @@ -1866,7 +1873,7 @@ local glass_edition = { and context.other_card == card --animation-wise this looks weird sometimes then if - not card.ability.eternal + not SMODS.is_eternal(card) and pseudorandom("cry_fragile_destroy") < cry_prob(card.ability.cry_prob, card.edition.odds, card.ability.cry_rigged) / card.edition.odds then @@ -1894,7 +1901,7 @@ local glass_edition = { end if context.main_scoring and context.cardarea == G.play then if - not card.ability.eternal + not SMODS.is_eternal(card) and pseudorandom("cry_fragile_destroy") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then @@ -2558,7 +2565,9 @@ return { card, "cry_abstract_destroy2", 1, - card and card.ability.extra.odds_after_round or self.config.extra.odds_after_round + card and card.ability and card.ability.extra and card.ability.extra.odds_after_round + or self.config.extra.odds_after_round + or 4 ) then self.ability.extra.marked = true diff --git a/items/misc_joker.lua b/items/misc_joker.lua index e71f92d4a..6312ac037 100644 --- a/items/misc_joker.lua +++ b/items/misc_joker.lua @@ -420,7 +420,7 @@ local queensgambit = { return true end, })) - return { remove = not context.destroying_card.ability.eternal } + return { remove = not SMODS.is_eternal(context.destroying_card) } end end if context.forcetrigger then @@ -1743,7 +1743,7 @@ local sus = { if is_impostor(v) then table.insert(king_of_hearts_cards, v) end - if not v.ability.eternal and not (v.sus and #king_of_hearts_cards == 0) and not is_impostor(v) then + if not SMODS.is_eternal(v) and not (v.sus and #king_of_hearts_cards == 0) and not is_impostor(v) then table.insert(destroyed_cards, v) end end @@ -2801,7 +2801,7 @@ local unjust_dagger = { and not (context.blueprint_card or self).getting_sliced and my_pos and G.jokers.cards[my_pos - 1] - and not G.jokers.cards[my_pos - 1].ability.eternal + and not SMODS.is_eternal(G.jokers.cards[my_pos - 1]) and not G.jokers.cards[my_pos - 1].getting_sliced then local sliced_card = G.jokers.cards[my_pos - 1] @@ -2918,7 +2918,7 @@ local monkey_dagger = { and not (context.blueprint_card or self).getting_sliced and my_pos and G.jokers.cards[my_pos - 1] - and not G.jokers.cards[my_pos - 1].ability.eternal + and not SMODS.is_eternal(G.jokers.cards[my_pos - 1]) and not G.jokers.cards[my_pos - 1].getting_sliced then local sliced_card = G.jokers.cards[my_pos - 1] @@ -3035,7 +3035,7 @@ local pirate_dagger = { and not (context.blueprint_card or self).getting_sliced and my_pos and G.jokers.cards[my_pos + 1] - and not G.jokers.cards[my_pos + 1].ability.eternal + and not SMODS.is_eternal(G.jokers.cards[my_pos + 1]) and not G.jokers.cards[my_pos + 1].getting_sliced then local sliced_card = G.jokers.cards[my_pos + 1] @@ -8076,8 +8076,13 @@ local kscope = { immutable = true, calculate = function(self, card, context) if - (context.end_of_round and G.GAME.blind.boss and not context.individual and not context.repetition) - or context.forcetrigger + ( + context.end_of_round + and G.GAME.blind.boss + and not context.individual + and not context.repetition + and not context.blueprint + ) or context.forcetrigger then local eligiblejokers = {} for k, v in pairs(G.jokers.cards) do @@ -8092,6 +8097,9 @@ local kscope = { local edition = { polychrome = true } eligible_card:set_edition(edition, true) check_for_unlock({ type = "have_edition" }) + if not context.retrigger_joker then + card:juice_up(0.5, 0.5) + end end end end, @@ -8127,11 +8135,12 @@ local cryptidmoment = { rarity = 1, cost = 4, order = 65, + blueprint_compat = true, eternal_compat = false, demicoloncompat = true, atlas = "atlasthree", calculate = function(self, card, context) - if (context.selling_self and not context.blueprint) or context.forcetrigger then + if context.selling_self or context.forcetrigger then for k, v in ipairs(G.jokers.cards) do if v.set_cost then v.ability.extra_value = (v.ability.extra_value or 0) @@ -8139,7 +8148,14 @@ local cryptidmoment = { v:set_cost() end end - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_val_up"), colour = G.C.MONEY }) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_val_up"), colour = G.C.MONEY } + ) end end, cry_credits = { @@ -9564,7 +9580,7 @@ local arsonist = { if context.destroying_card then local eval = evaluate_poker_hand(context.full_hand) if next(eval["Full House"]) then - return not context.destroying_card.ability.eternal + return not SMODS.is_eternal(context.destroying_card) end end end, @@ -9783,7 +9799,7 @@ local huntingseason = { -- If played hand contains three cards, destroy the midd and not context.blueprint and not context.retrigger_joker then - return { remove = not context.destroy_card.ability.eternal } + return { remove = not SMODS.is_eternal(context.destroy_card) } end end, cry_credits = { diff --git a/items/spectral.lua b/items/spectral.lua index 2fddd2ed6..d1842cded 100644 --- a/items/spectral.lua +++ b/items/spectral.lua @@ -340,7 +340,7 @@ local trade = { can_use = function(self, card) local usable_count = 0 for _, v in pairs(G.vouchers.cards) do - if not v.ability.eternal then + if not SMODS.is_eternal(v) then usable_count = usable_count + 1 end end @@ -366,7 +366,7 @@ local trade = { end end end - if v.ability.eternal then + if SMODS.is_eternal(v) then can_use = false end if can_use then @@ -516,7 +516,7 @@ local replica = { })) end for i = 1, #G.hand.cards do - if not G.hand.cards[i].ability.eternal then + if not SMODS.is_eternal(G.hand.cards[i]) then G.E_MANAGER:add_event(Event({ func = function() copy_card(chosen_card, G.hand.cards[i]) @@ -1345,7 +1345,7 @@ local summoning = { local used_consumable = copier or card local deletable_jokers = {} for k, v in pairs(G.jokers.cards) do - if not v.ability.eternal then + if not SMODS.is_eternal(v) then deletable_jokers[#deletable_jokers + 1] = v end end diff --git a/items/spooky.lua b/items/spooky.lua index 592e285b4..c27e96a3c 100644 --- a/items/spooky.lua +++ b/items/spooky.lua @@ -764,7 +764,7 @@ local flickering = { return { vars = { 5, card.ability.flick_tally or 5 } } end, apply = function(self, card, val) - if not card.ability.eternal or G.GAME.modifiers.cry_sticker_sheet then + if not SMODS.is_eternal(card) or G.GAME.modifiers.cry_sticker_sheet then card.ability[self.key] = val if card.ability[self.key] then card.ability.flick_tally = 5 @@ -1123,7 +1123,7 @@ local ghost = { card:start_dissolve() for i = 1, #G.jokers.cards do if G.jokers.cards[i].ability.cry_possessed then - if G.jokers.cards[i].ability.eternal then + if SMODS.is_eternal(G.jokers.cards[i]) then G.jokers.cards[i].ability.cry_possessed = nil else G.jokers.cards[i]:start_dissolve() @@ -1394,7 +1394,7 @@ local candy_dagger = { and not (context.blueprint_card or self).getting_sliced and my_pos and G.jokers.cards[my_pos + 1] - and not G.jokers.cards[my_pos + 1].ability.eternal + and not SMODS.is_eternal(G.jokers.cards[my_pos + 1]) and not G.jokers.cards[my_pos + 1].getting_sliced then local sliced_card = G.jokers.cards[my_pos + 1] diff --git a/items/stake.lua b/items/stake.lua index 67c5f7be8..08a4a6485 100644 --- a/items/stake.lua +++ b/items/stake.lua @@ -133,7 +133,7 @@ return { local temp_hand = {} local hasHand = false for k, v in ipairs(G.hand.cards) do - if not v.ability.eternal then + if not SMODS.is_eternal(v) then temp_hand[#temp_hand + 1] = v hasHand = true end diff --git a/items/tag.lua b/items/tag.lua index faf0a5382..e34612a10 100644 --- a/items/tag.lua +++ b/items/tag.lua @@ -1460,6 +1460,7 @@ local clone = { G.CONTROLLER.locks[lock] = true tag:yep("+", G.C.BLUE, function() local copy = copy_card(context.card) + copy:add_to_deck() if context.card.area then context.card.area:emplace(copy) else diff --git a/lib/content.lua b/lib/content.lua index 93cae300c..78d04bf3e 100644 --- a/lib/content.lua +++ b/lib/content.lua @@ -789,14 +789,6 @@ SMODS.Atlas({ px = 73, py = 95, }) - --- CCD Clarifier Sprite -SMODS.Atlas({ - key = "cry_clarifier", - path = "intercept_sprite.png", - px = 71, - py = 95, -}) SMODS.Atlas({ key = "glowingSleeve", path = "sleeve_cry_glowing.png", diff --git a/lib/forcetrigger.lua b/lib/forcetrigger.lua index d252555d6..297788de5 100644 --- a/lib/forcetrigger.lua +++ b/lib/forcetrigger.lua @@ -110,7 +110,7 @@ function Cryptid.forcetrigger(card, context) my_pos and G.jokers.cards[my_pos + 1] and not card.getting_sliced - and not G.jokers.cards[my_pos + 1].ability.eternal + and not SMODS.is_eternal(G.jokers.cards[my_pos + 1]) and not G.jokers.cards[my_pos + 1].getting_sliced then local sliced_card = G.jokers.cards[my_pos + 1] @@ -417,7 +417,7 @@ function Cryptid.forcetrigger(card, context) for i = 1, #G.jokers.cards do if G.jokers.cards[i] ~= card - and not G.jokers.cards[i].ability.eternal + and not SMODS.is_eternal(G.jokers.cards[i]) and not G.jokers.cards[i].getting_sliced then destructable_jokers[#destructable_jokers + 1] = G.jokers.cards[i] diff --git a/lib/overrides.lua b/lib/overrides.lua index 225d19940..da7f845af 100644 --- a/lib/overrides.lua +++ b/lib/overrides.lua @@ -120,15 +120,45 @@ local dft = Blind.defeat function Blind:defeat(s) dft(self, s) local obj = self.config.blind - -- Ignore blinds with loc_vars because orb does not properly work with them yet - if obj.boss and (obj.boss.no_orb or obj.loc_vars) then + if + (obj.boss and obj.boss.yes_orb) + or ( + obj.name == "The Hook" + or obj.name == "The Ox" + or obj.name == "The House" + or obj.name == "The Wall" + or obj.name == "The Wheel" + or obj.name == "The Arm" + or obj.name == "The Club" + or obj.name == "The Fish" + or obj.name == "The Psychic" + or obj.name == "The Goad" + or obj.name == "The Water" + or obj.name == "The Window" + or obj.name == "The Manacle" + or obj.name == "The Eye" + or obj.name == "The Mouth" + or obj.name == "The Plant" + or obj.name == "The Serpent" + or obj.name == "The Pillar" + or obj.name == "The Needle" + or obj.name == "The Head" + or obj.name == "The Tooth" + or obj.name == "The Flint" + or obj.name == "The Mark" + or obj.name == "Amber Acorn" + or obj.name == "Verdant Leaf" + or obj.name == "Violet Vessel" + or obj.name == "Crimsion Heart" + or obj.name == "Cerulean Bell" + ) + then + else return end if - self.name ~= "cry-Obsidian Orb" --Stop impossible blind combinations from happening - and self.name ~= "The Sink" - and (self.name ~= "cry-oldarm" or not G.GAME.defeated_blinds["bl_psychic"]) + (self.name ~= "cry-oldarm" or not G.GAME.defeated_blinds["bl_psychic"]) and (self.name ~= "The Psychic" or not G.GAME.defeated_blinds["bl_cry_oldarm"]) and (self.name ~= "cry-oldarm" or not G.GAME.defeated_blinds["bl_cry_scorch"]) and (self.name ~= "cry-scorch" or not G.GAME.defeated_blinds["bl_cry_oldarm"]) @@ -219,10 +249,7 @@ local rcc = reset_castle_card function reset_castle_card() rcc() G.GAME.current_round.cry_nb_card = { rank = "Ace" } - if not G.GAME.current_round.cry_dropshot_card then - G.GAME.current_round.cry_dropshot_card = {} - end - G.GAME.current_round.cry_dropshot_card.suit = "Spades" + G.GAME.current_round.cry_dropshot_card = { suit = "Spades" } local valid_castle_cards = {} for k, v in ipairs(G.playing_cards) do if not SMODS.has_no_suit(v) and not SMODS.has_enhancement(v, "m_cry_abstract") then @@ -232,16 +259,10 @@ function reset_castle_card() if valid_castle_cards[1] then --Dropshot local castle_card = pseudorandom_element(valid_castle_cards, pseudoseed("cry_dro" .. G.GAME.round_resets.ante)) - if not G.GAME.current_round.cry_dropshot_card then - G.GAME.current_round.cry_dropshot_card = {} - end G.GAME.current_round.cry_dropshot_card.suit = castle_card.base.suit --Number Blocks local castle_card_two = pseudorandom_element(valid_castle_cards, pseudoseed("cry_nb" .. G.GAME.round_resets.ante)) - if not G.GAME.current_round.cry_nb_card then - G.GAME.current_round.cry_nb_card = {} - end G.GAME.current_round.cry_nb_card.rank = castle_card_two.base.value G.GAME.current_round.cry_nb_card.id = castle_card_two.base.id end @@ -971,7 +992,7 @@ function create_card(_type, area, legendary, _rarity, skip_materialize, soulable end end if - card.ability.eternal + not SMODS.is_eternal(card) and G.GAME.modifiers.cry_enable_flipped_in_shop and pseudorandom("cry_flip" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 then @@ -1651,7 +1672,7 @@ G.FUNCS.skip_booster = function(e) for i = #G.jokers.cards, 1, -1 do if not ( - G.jokers.cards[i].ability.eternal + SMODS.is_eternal(G.jokers.cards[i]) or G.jokers.cards[i].config.center.rarity == "cry_cursed" ) then @@ -1731,7 +1752,7 @@ local end_roundref = end_round function end_round() if ((#G.hand.cards < 1 and #G.deck.cards < 1 and #G.play.cards < 1) or (#G.hand.cards < 1 and #G.deck.cards < 1)) - and G.STATE ~= G.STATES.NEW_ROUND + and G.STATE == G.STATES.SELECTING_HAND then if Cryptid.enabled("set_cry_poker_hand_stuff") == true diff --git a/lib/ui.lua b/lib/ui.lua index 212b69de0..4c69aad88 100644 --- a/lib/ui.lua +++ b/lib/ui.lua @@ -237,7 +237,7 @@ SMODS.DrawStep({ local card_type = self.ability.set or "None" if card_type ~= "Default" and card_type ~= "Enhanced" and self.playing_card then interceptorSprite = interceptorSprite - or Sprite(0, 0, G.CARD_W, G.CARD_H, G.ASSET_ATLAS["cry_clarifier"], { x = 0, y = 0 }) + or Sprite(0, 0, G.CARD_W, G.CARD_H, G.ASSET_ATLAS["cry_misc"], { x = 3, y = 1 }) interceptorSprite.role.draw_major = self interceptorSprite:draw_shader("dissolve", nil, nil, nil, self.children.center) end diff --git a/lovely/Probability.toml b/lovely/Probability.toml index ca2100142..0011207c6 100644 --- a/lovely/Probability.toml +++ b/lovely/Probability.toml @@ -46,5 +46,5 @@ payload = ''' if (SMODS.has_enhancement(scoring_hand[i], 'm_glass') and not scoring_hand[i].debuff and SMODS.pseudorandom_probability(scoring_hand[i], 'glass', 1, scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra) - and not scoring_hand[i].ability.eternal then''' + and not SMODS.is_eternal(scoring_hand[i]) then''' match_indent = true \ No newline at end of file diff --git a/lovely/code.toml b/lovely/code.toml index 75a2aefca..315720407 100644 --- a/lovely/code.toml +++ b/lovely/code.toml @@ -815,4 +815,4 @@ if G.GAME.last_hand_played == "cry_Declare0" or G.GAME.last_hand_played == "cry_ _planet = "c_cry_voxel" end ''' -match_indent = true +match_indent = true \ No newline at end of file diff --git a/lovely/seal.toml b/lovely/seal.toml index eed6ca963..9fad4fdb4 100644 --- a/lovely/seal.toml +++ b/lovely/seal.toml @@ -12,7 +12,7 @@ pattern = '(?[\t ]*)if destroyed then \n' position = 'before' line_prepend = '$indent' payload = ''' -if scoring_hand[i]:calculate_seal({destroying_card = scoring_hand[i], full_hand = G.play.cards}) and not scoring_hand[i].ability.eternal then +if scoring_hand[i]:calculate_seal({destroying_card = scoring_hand[i], full_hand = G.play.cards}) and not SMODS.is_eternal(scoring_hand[i]) then destroyed = true end diff --git a/lovely/stake.toml b/lovely/stake.toml index 653680677..c1b4bdcbc 100644 --- a/lovely/stake.toml +++ b/lovely/stake.toml @@ -83,13 +83,13 @@ position = "before" payload = ''' if self.ability.name == "The Hanged Man" then for i = 1, #G.hand.highlighted do - if G.hand.highlighted[i].ability.eternal then return false end + if SMODS.is_eternal(G.hand.highlighted[i]) then return false end end end if self.ability.name == "Death" then local rightmost = G.hand.highlighted[1] for i=1, #G.hand.highlighted-1 do if G.hand.highlighted[i].T.x > rightmost.T.x then rightmost = G.hand.highlighted[i] end end - for i=1, #G.hand.highlighted do if G.hand.highlighted[i].ability.eternal and rightmost ~= G.hand.highlighted[i] then return false end end + for i=1, #G.hand.highlighted do if SMODS.is_eternal(G.hand.highlighted[i]) and rightmost ~= G.hand.highlighted[i] then return false end end end ''' match_indent = true @@ -103,7 +103,7 @@ pattern = "for k, v in ipairs(G.hand.cards) do temp_hand[#temp_hand+1] = v end" position = "at" payload = ''' for k, v in ipairs(G.hand.cards) do - if not v.ability.eternal then + if not SMODS.is_eternal(v) then temp_hand[#temp_hand+1] = v end end @@ -117,7 +117,7 @@ match_indent = true target = "card.lua" pattern = "if G.hand.highlighted[i] ~= rightmost then" position = "at" -payload = "if G.hand.highlighted[i] ~= rightmost and not G.hand.highlighted[i].ability.eternal then" +payload = "if G.hand.highlighted[i] ~= rightmost and not SMODS.is_eternal(G.hand.highlighted[i]) then" match_indent = true @@ -127,7 +127,7 @@ match_indent = true target = "card.lua" pattern = "G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 then" position = "at" -payload = "G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 and not context.other_card.ability.eternal then" +payload = "G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 and not SMODS.is_eternal(context.other_card) then" match_indent = true @@ -137,7 +137,7 @@ match_indent = true target = "card.lua" pattern = "if self.ability.name == 'Sixth Sense' and #context.full_hand == 1 and context.full_hand[1]:get_id() == 6 and G.GAME.current_round.hands_played == 0 then" position = "at" -payload = "if self.ability.name == 'Sixth Sense' and #context.full_hand == 1 and context.full_hand[1]:get_id() == 6 and not context.full_hand[1].ability.eternal and G.GAME.current_round.hands_played == 0 then" +payload = "if self.ability.name == 'Sixth Sense' and #context.full_hand == 1 and context.full_hand[1]:get_id() == 6 and not SMODS.is_eternal(context.full_hand[1]) and G.GAME.current_round.hands_played == 0 then" match_indent = true