diff --git a/assets/1x/default/j_jane_honey.png b/assets/1x/default/j_jane_honey.png new file mode 100644 index 0000000..4762938 Binary files /dev/null and b/assets/1x/default/j_jane_honey.png differ diff --git a/assets/2x/default/j_jane_honey.png b/assets/2x/default/j_jane_honey.png new file mode 100644 index 0000000..028bf02 Binary files /dev/null and b/assets/2x/default/j_jane_honey.png differ diff --git a/src/joker.lua b/src/joker.lua index 1075538..a7bbc2c 100644 --- a/src/joker.lua +++ b/src/joker.lua @@ -1,4 +1,4 @@ -for _, v in pairs({"7granddad", "betmma", "oxy", "maxie", "peppino"}) do +for _, v in pairs({"7granddad", "betmma", "honey", "oxy", "maxie", "peppino"}) do SMODS.Atlas { px = 71, py = 95, @@ -110,12 +110,12 @@ local maxie_quotes = { "Need a paw?", "Together as a team!", "Mmm... Milk sounds good right about now.", - "Unlike most other bunnies; I don\'t like carrots.", + "Unlike most other bunnies; I don't like carrots.", "Mmm... Mac and Cheese...", "I am just sitting here.", }, scared = { - "A-ah! S-stop it, please!! You\'re scaring me...!", + "A-ah! S-stop it, please!! You're scaring me...!", "E-eek! B-be careful!!", }, } @@ -125,7 +125,10 @@ SMODS.Joker { atlas = "janemaxie", loc_txt = { name = "Maxie", - text = {"{C:attention}+#1# {}booster pack slot#2#"} + text = { + "{C:attention}+#1# {}booster pack slot#2#", + "{C:inactive,s:0.75,E:1}#3#{C:red,s:1.5,E:1}#4#", + } }, config = {extra = {choices = Cryptid and 2 or 1}}, pos = {x = 0, y = 0}, @@ -134,7 +137,12 @@ SMODS.Joker { cost = 10, rarity = 2, loc_vars = function(_, _, card) - return {vars = {card.ability.extra.choices, card.ability.extra.choices == 1 and "" or "s"}} + return {vars = { + card.ability.extra.choices, + card.ability.extra.choices == 1 and "" or "s", + Jane.sinister and "" or pseudorandom_element(maxie_quotes.normal, pseudoseed("MaxieQuotes")), + Jane.sinister and pseudorandom_element(maxie_quotes.scared, pseudoseed("MaxieQuotes")) or "", + }} end, calculate = function(_, card, context) if context.starting_shop then @@ -145,6 +153,69 @@ SMODS.Joker { end } +SMODS.Joker { + key = "honey", + atlas = "janehoney", + loc_txt = { + name = "Honey{C:dark_edition}#1#", + text = { + "{C:attention}Common#2#{}#3#", + "#4#cannot appear", + "#5#{C:attention}#6#", + "{C:dark_edition}#7#{}#8#{C:inactive,s:0.75,E:1}#9#", + "{C:inactive,s:0.75,E:1}#10#{C:red,s:1.5,E:1}#11#", + } + }, + config = {extra = {is_corrupted = false}}, + pos = {x = 0, y = 0}, + sinis = {x = 2, y = 0}, + soul_pos = {x = 1, y = 0}, + cost = 8, + rarity = 3, + update = function(_, card, _) + if card.added_to_deck and card.children.center and card.children.floating_sprite then + local extra = card.ability.extra or {} + local y = extra.is_corrupted and 1 or 0 + card.children.center:set_sprite_pos({x = 0, y = y}) + card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y}) + end + end, + loc_vars = function(_, _, card) + local is_corrupted = card.ability.extra.is_corrupted + + return {vars = { + is_corrupted and " (Corrupted)" or "", + is_corrupted and " and Uncommon" or "", + is_corrupted and "" or " jokers", + is_corrupted and "jokers " or "", + is_corrupted and "" or "Getting another ", + is_corrupted and "" or "Honey", + is_corrupted and "" or "corrupts ", + is_corrupted and "" or "this Joker", + Jane.sinister and "" or (is_corrupted and "*Her eyes are looking around," or ""), + Jane.sinister and "" or (is_corrupted and "as if she wants to say something...*" or "Buzzzzz! I'll do my best!"), + Jane.sinister and (is_corrupted and "..." or "S-STOP THAT!! YOU'RE FREAKING ME OOOUT!!!") or "", + }} + end, +} + +if Cryptid then + Cryptid.aliases["honey"] = "j_jane_honey" +end + +local orig_rarity = SMODS.poll_rarity + +function SMODS.poll_rarity(_pool_key, _rand_key) + local is_corrupted + + for _, v in pairs(SMODS.find_card("j_jane_honey")) do + is_corrupted = is_corrupted or v.ability.extra.is_corrupted + end + + local rarity = orig_rarity(_pool_key, _rand_key) + return (is_corrupted and (rarity == 1 or rarity == 2)) and 3 or ((is_corrupted ~= nil and rarity == 1) and 1 or rarity) +end + local oxy_quotes = { normal = { "YOU WILL LOSE", @@ -173,7 +244,7 @@ SMODS.Joker { "{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#", } }, - config = {extra = {corrupted_steel = 2.25, is_corrupted = false, milestone = 5, progress = 0, steel = 1.5}}, + config = {extra = {corrupted_steel = 2.5, is_corrupted = false, milestone = 3, progress = 0, steel = 1.5}}, pos = {x = 0, y = 0}, sinis = {x = 2, y = 0}, soul_pos = {x = 1, y = 0}, @@ -197,7 +268,7 @@ SMODS.Joker { is_corrupted and "" or "Destroying ", effective .. (is_corrupted and " round" or " steel card") .. plural, is_corrupted and "" or "corrupts ", - is_corrupted and "Destroying steel cards" or "this joker", + is_corrupted and "Destroying steel cards" or "this Joker", is_corrupted and "prolongs the " or "", is_corrupted and "corruption" or "", Jane.sinister and "" or (is_corrupted and pseudorandom_element(oxy_quotes.normal, pseudoseed("OxyQuotes")) or "We all cut close..."), @@ -207,8 +278,9 @@ SMODS.Joker { update = function(_, card, _) if card.added_to_deck and card.children.center and card.children.floating_sprite then local extra = card.ability.extra or {} - card.children.center:set_sprite_pos({x = 0, y = extra.is_corrupted and 1 or 0}) - card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = extra.is_corrupted and 1 or 0}) + local y = extra.is_corrupted and 1 or 0 + card.children.center:set_sprite_pos({x = 0, y = y}) + card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y}) end end, calculate = function(_, card, context) diff --git a/src/main.lua b/src/main.lua index 028c35f..3703eb5 100644 --- a/src/main.lua +++ b/src/main.lua @@ -322,6 +322,17 @@ function Game:update(dt) G.P_BLINDS["bl_jane_wee"].mult = 22 / blind G.P_BLINDS["bl_jane_descending"].mult = math.floor(8 * math.sqrt(blind)) / blind + local honey = SMODS.find_card("j_jane_honey") + + for _, v in ipairs(honey) do + if not v.ability.extra.is_corrupted and v ~= honey[#honey] then + v.sell_cost = v.sell_cost + honey[#honey].sell_cost + v.ability.extra.is_corrupted = true + honey[#honey]:start_dissolve() + honey[#honey] = nil + end + end + if not Jane.bans_done then delete_hardbans() Jane.bans_done = true