#Infinite Fusion [Currently not worked on]

1 messages · Page 1 of 1 (latest)

topaz snow
#

Fuse any Jokers together!

This mod aims to add a system that would allow any two or more Jokers to be fused together into a single card and still function.

A fused Joker looks like an undiscovered Joker, and it does all of the effects of the Jokers it consists of (So a Lusty and Wrathful Joker would make a fusion that would trigger on both Hearts and Spades)

The mod has an API that allows other mods to define custom sprites/texts for specific fusions, although it doesn't come with any of them built in.

The mod is currently work in progress, meaning issues are to be expected.
Currently the mod features a special Spectral card that fuses two Jokers - The Experiment (placeholder sprite by Joey J. Jester) it's currently there to allow ease of testing the fusions; In the later versions it will be rarer (if it will even be in the later version)

#

Infinite Fusion on GitHub: https://github.com/SpaD-Overolls/BalatroInfiniteFusion/releases/latest
Community-created companion mod that adds custom art for certain fusions: https://github.com/Depressomane/FuzeFolio

GitHub

made InfiniFusion a Rare Joker

Naturally generated InfiniFusion picks 2 random Jokers using logic that mimics natural card creation logic w/o rarity weights.
Fixed crashes related to InfiniFusion ...

GitHub

The (un)official Balatro Infinite Fusion submod. Contribute to Depressomane/FuzeFolio development by creating an account on GitHub.

#

Known issues:

  • Blueprint/Brainstorm eval_status their target instead of themselves as a part of a fusion this is a SMODS issue

  • Crypid cry_double_scale_calc crash

cedar dove
#

This sounds super cool! How does it decide what the fused joker does???

topaz snow
#

a fused joker does all of the effects of the jokers it consists of

heavy talon
#

Lowkey I feel like it The Experiment could work like Death

#

Select two jokers

#

the left joker fuses with the right joker

topaz snow
#

the issue is that you cant select two jokers

heavy talon
#

I see 🤔

topaz snow
#

also modded jokers need testing because outside of my system being theoretically sound, i dont have actual data on functionality of modded ones

shell ingot
#

Nice, can't wait to try it out

topaz snow
#

the wee joker is definitely just me messing up when writing the loc_var function

heavy talon
#

God I gotta figure out a more consistent way to get Experiment rather then debug+ - Jalamanac and cryptid make that hard kekw

topaz snow
#

you can code a custom key function for debug+

#

or i can

topaz snow
#

just paste that at the very top of function global.handleKeys(controller, key, dt)

#

in debugplus' core

heavy talon
#

I'll try that on for size

topaz snow
#

it'll spawn an experiment when you press y

buoyant zephyr
shell ingot
#

Works fine with basic modded jokers so far 👍

topaz snow
topaz snow
shell ingot
#

You want me to try vanilla + modded fusion?

topaz snow
#

the exact combinations don't really matter and atm I have so little info that any testing a good so dw about it

shell ingot
#

Tried to fuse Joker with Jimball to test

#

Wait it's a crash from my mod wth

#

I don't think JokerEvo likes your fusions much 😬 Will give it a look soon

topaz snow
#

the way fusion works is by impersonating whatever joker it's trying to act as

shell ingot
#

Those are the arguments in said math.max

heavy talon
#

pressing y gives me a goofy ahh cryptid crash

#

after patching

shell ingot
#

Not sure if your mod does something with a card's ability.

topaz snow
#

the way the fusing process works is by copying the data from targets, deleting them and then spawning a fusion

shell ingot
#

How much depth is copied tho

topaz snow
#

everything in card.ability

shell ingot
#

Weird

heavy talon
#

so far so good 🤔 when it comes to fusions

topaz snow
#

I just realized that anything with custom generate_ui won't work properly because I'm rendering the joker descriptions through the info_queue

heavy talon
#

started fusing already fused jokers

#

I can check to see what jokers were involved in the fusions rq

#

It was

#
  • 4 Jimbos in one fusion

  • Walkie Talkie and Riff Raff in the other

#

Okay so apparently fusing it with Exoplanet and Flag of Surrender (Familiar joker)

#

well no strange

#

if you try and fuse too many jokers together at once Cryptid will throw a crash for legendaries, maybe it's scaling jokers in paritcular that are causing the crash?

#

cause it calls cry_double_scale_calc

#

I was trying to fuse all 5 legendaries together

topaz snow
#

I'll need to investigate that

heavy talon
#

In the meantime do you think it's okay if I make a google sheet for people to make custom fusion like names and stuff? It won't be like fusion Jokers so no unique effects

#

🤔

topaz snow
#

I don't mind but I feel it could be a bit early for that

clear dragon
#

lmk if I need to make any fixes for Cryptid support to work smoothly :)

frank forum
#

Since when does Cryptid work smoothly period

shell ingot
#

I added a check to see if the ability amount exists and it doesn't crash anymore 👍

clear dragon
#

I already feel like UI wise, some Jokers will be an issue

#

there should be some way to differentiate what tooltips are for the fused jokers, compared to ones created by the fused jokers

topaz snow
#

atm the default is to ignore the info_queue of subjokers

clear dragon
#

that's smart, I'm fine with that tbh

shell ingot
frank forum
#

lol I was thinking the same thing

frank forum
shell ingot
#

Idk I picked the first one I saw in that mod's thread

frank forum
#

yeah it's from when I was pointing out it could be eternal

#

which obv is not what you want for as joker like this

heavy talon
#

What is virtual packs from

#

👀

#

I'm actually curious on that

#

Oh Bunco

#

I haven't used that in FOREVER just because of mod incompat galore

frank forum
#

i've had very little problem with bunco

#

polymino cards are useless though

rose moat
#

Oh neat

#

I should test my jokers on this to ensure I'm not doing things in weird ways

heavy talon
# topaz snow I don't mind but I feel it could be a bit early for that

I was mostly thinking the idea could be a side mod that implements it that's a requirement, but uh, here it is:

https://docs.google.com/spreadsheets/d/1prtEOIO9ktFJ4okG37D79r5GKsG5FiqLwXr3ORQcs9k/edit?usp=sharing

Some basic rules I wouldn't mind seeing if possible:

  1. Please don't nuke the spreadsheet I trust the modding thread

  2. We're going off of raw fusion rules here. Not fusion jokers where additional abilities are implemented.

  3. Have fun

topaz snow
#

it's still two separate triggers

frank forum
heavy talon
heavy talon
#

+8 then another +8 as 2 different triggers

topaz snow
#

🤷

heavy talon
#

I think +16 is fine because it isn't 2 seperate effects that are happening

#

Like if it was like Ramen + Jolly Joker I could get it

#

x2 mult that decreases, and +8 mult

topaz snow
#

I'll need to add a function to return all loc_vars as a table so the summ could be displayed properly (cus those values aren't actually static)

heavy talon
topaz snow
#

custom ui doesn't display properly, idk what I'll do about that
atm I have one exception coded for that (misprint always showing foresight when fused)

topaz snow
#

I think it could be solved through a hook? I'd need to learn how cryptid works more in depth for this

mild fjord
#

Hear me out: Infinite Craft Balatro

#

That's what I think when I see this mod

topaz snow
#

this mod is inspired by pokemon infinite fusion, "infinite craft"-y jokers are possible but not for this mod

topaz snow
frank forum
#

I mean to really make something like infinite craft it'd need an ai engine

#

And I mean that in the machine learning sense

topaz snow
#

ok so after thinking about this I realized the source of the sixth sense not working

heavy talon
#

but that means 2 things

#

an always online connection

#

and lua using http

topaz snow
#

I'll need to add an edge case, although I'll need to see if there's a way to ret calc_joker w/o triggering retriggers

#

because if I just pass sixth sense's true through infinifusion it'll retrigger the entire fusion despite the fact retriggers are already handled through being separate calculate calls

topaz snow
topaz snow
topaz snow
#

fixed sixth sense right now

#

the broken blueprint/brainstorm notifs are strange bcos they dont happen on joker_main

#

wait

#

i think thats a smods bug

topaz snow
#

going to investigate cryptid after the next update because being functional with mods less encompassing than cryptid is enough for me to feel confident enough to add the api

topaz snow
#

almost got the api to work

shell ingot
#

Feels bad for big joker mods that wants to add an interaction for each jokers 😅 Not sure I'd even do it.

#

Could always be a collaborative effort 🤔

topaz snow
#

infinifusion itself will probably not include any combinations

topaz snow
#

@heavy talon infinifusion api

#

Infinite Fusion [WIP]

#

current todo list:

  • investigate cryptid crash
  • clean up the code that fuses jokers
  • draw a new sprite for the experiment
  • write a function to create random fusion
  • perhaps naturally spawning fusions?
topaz snow
shell ingot
#

Nope, evo don't work on fusion

#

Does your mod recognize which card is an infinite fusion and which is not? i'll add a check to prevent the evo tooltip from showing

topaz snow
#

infinite fusions have self.infinifusion

#

or card.infinifusion within smods api

shell ingot
#

Alright

#

There we go, no longer shows up, this will prevent tooltip bloat 👍

topaz snow
#

i'll need to make sure various ability values are synced up between fusions, because for example the egg doesnt work because it adds extra value to itself and then that extra value is trapped within the subjoker table

#

how do i download images from google sheets

buoyant zephyr
topaz snow
#

i think it could be resolved by a hook on my side

#

depending on how its done and what we are talking about because i dont know much cryptid

buoyant zephyr
#

the exotic that doubles all values on the leftmost joker

#

It understandably but unfortunately doesn't work on the fused jokers

topaz snow
#

so cry_double_scale_calc?

buoyant zephyr
#

It is not double scale, it's a secret third thing since it affects even non scaling jokers

topaz snow
#

i'll need to get more info on how it all works and i think i could make it work

topaz snow
#

practically a tech demo

#

like even the egg doesnt work atm

topaz snow
topaz snow
topaz snow
topaz snow
topaz snow
#

ty

odd pollen
#

Do I pin the sheet?

topaz snow
#

i dont see why not

topaz snow
clear dragon
#

It might need to be hardcoded to search the ability table at a higher depth for infinifusion jokers

topaz snow
#

the fusion keeps the original ability tables within self.infinifusion

clear dragon
topaz snow
clear dragon
clear dragon
#

It only goes depth 2 in the table so, ability.extra.something gets changed but ability.infinifusion.extra.something wouldn’t

#

I want to also loop through infinifusion tables if that is detected

topaz snow
#

infinifusion is not within the ability table

clear dragon
#

And then there’s the double scale crash, idk why that happens but could be a similar thing with depth 2

clear dragon
#

yeah then I will definitely need to account for that

topaz snow
#

i think i could handle it on my end, although i'll need to see how its used on cryptid's end

#

ya i think i can write a hook that'll convert it into infinifusion

topaz snow
clear dragon
#

Cryptid loads very late, it might be easier to add the hook on Cryptid’s end once you program it

shell ingot
#

What if fusioning two of the same jokers default to the original joker sprite?

#

Also spoilers: Fusioning two Boredom doesn't make it better

#

Oh yea are fusions not bp'able by default or it's just an UI moment?

heavy talon
#

WIP on the "M Incarnate" concept I had

topaz snow
heavy talon
#

here we go

#

first jonkler completed

topaz snow
heavy talon
#

Alright so

#

I feel like the companion mod is gonna be called Fuze Folio, I made a copy of the starter pack to get everything all set up NODDERS

#

Gonna probably get it into a git where people can pull requests to add stuff later

topaz snow
#

added the thing to force joker sprite if the fusion is made up of entirely the same joker + experimenting with procedural effects

#

atm the procedural resize is only wee and square, and i need to figure out how to fix soul pos

topaz snow
unkempt flume
#

oh boy time to fuse scary face into smiley face, then fuse that into sock and buskin, then fuse that into reserved parking

topaz snow
#

added a system to resync ability values that should persist through fusion calc (like extra cost) + made it so the cost of the fusion is a summ of the costs of the jokers its made of (before it was just resetting to $1)

#

need to add proper sticker/edition compat and then i'll release 0.0.3

topaz snow
#

after that the mod should be entirely vanilla compatible?

shell ingot
topaz snow
#

I don't have a way to see if the blueprints are trying to check compatibility with infinifusion

shell ingot
#

You do transfer ability values on fusion, why not blueprint_compat only if its true?

topaz snow
#

it checks against the center every frame

#

i could probably patch it to work properly now that i look at it but idk if it would work for modded jokers

topaz snow
#

ok so im thinking and if i restructure some of the code a bit i could allow fusion api to be more than just visuals + allow people to use it for crosscompat with other fusion mods

topaz snow
topaz snow
#

new release

#

current version should support every Joker from vanilla rn

topaz snow
topaz snow
#

i would like to begin tackling cryptid compat rn but since i dont know anything about cryptid i would be very glad to hear of any specific issues

shell ingot
#

Blueprints jokers can't copy the calculate function or whatever's used by the fusion?

topaz snow
#

blueprints rely on the return table from calculate function and fusions cant return the return tables properly

#

the only thing returning anything in calculate is an edgecase for sixth sense because it has to return true to have its effect work

topaz snow
frank forum
#

why green and yellow?

topaz snow
#

thats a cryptid guy

frank forum
#

ph i see

#

brain did a stupid

topaz snow
#

im adding compat to the cryptid guys

frank forum
topaz snow
# topaz snow

@clear dragon dont know much about cryptid, so idk if this is a catch-all solution or if it will be problematic in specific contexts, but putting this at the top of cry_misprintize should make infinifusion compatible with it

    calculate_infinifusion(card, nil, function(i)
        cry_misprintize(card, override, force_reset, stack)
    end)
end```
#

it definitely works with gemini though

#

sticking a similar block at the start of any function that messes with the card's ability should have the similar result of making it work with infinifusion

topaz snow
#

the second argument is context

#

atm the only use for context is context.no_edition, which strips the card of its edition for the duration of the infinifusion calc (currently only add_to_deck and remove_from_deck use this to prevent negative from counting for every subjoker)

topaz snow
#

card.infus_editions contains either a table of edition keys (upon initial fusion process) or a string of the edition key and exists only for creation of the fusion and the duration of no_edition calc

topaz snow
#

i should add a infinifusion_incompat so certain jokers can mark themselves unfusable (main culprit being ace of equilibrium rn)

#

like this seems like it would be very annoying to fusionproof

topaz snow
heavy talon
#

@topaz snow Do i need to change anything from the starter pack for these newer versions if there is any breaking changes?

heavy talon
#

Posted the stuff on Git and bumped the version dependency in main.lua up to 0.0.3

#

lemme know if anyone has any issues and I can fix em when I get off of work 2nite

dusty sable
#

There is a ai generator on civit ai that generates balatro jokers

#

I wonder if theres a way to hook it to this and get some type of sprites for this

heavy talon
#

Again no ai art please

cedar dove
heavy talon
#

I wouldn't want to include ai art in the first place

topaz snow
heavy talon
#

Sounds good

#

May or may not make a seperate thread to keep discussions specifically on the Fuze folio project there debating about it atm

heavy talon
#

@topaz snow one more think I can think of. Is there any way for us to be able to display the "fusions" as a seperate tab potentially in collection? For the named ones at least in Fuze Folio if they're registered, or is that getting a little too deep into it

#

or even in the joker tab

heavy talon
#

crash log when using Nostalgic Googol Play Card with a infusion jonkler

heavy talon
#

also made a much funnier placeholder image for FuzeFolio's fusions kekw

topaz snow
topaz snow
# heavy talon also

Looking at the code the error happens because an infinifusion is trying to check if there's a valid fusion for itself but something about the situation has destroyed it's fusion table

heavy talon
#

It's because of Nostalgic GPC I think? Lemme test with Ankh to see if the same thing happens

topaz snow
#

The crash can be avoided by adding a safeguard but the fact there was no fusion table is concerning

topaz snow
heavy talon
#

🤔 Nostalgic Googol Play Card might do it differently

#

because it makes two copies of the leftmost jonkler

#

nope Ankh does the SAME exact thing

#

I'm using the git pulled ver. idk if that's a problem or not

#

Lemme test if it's with any jonkler rq if not uh

#

just the Fuze Folio ones

topaz snow
#

maybe I broke something (or cryptid did?), I'll need to investigate

topaz snow
#

looking at my hook, the error could be avoided by delaying the sprites I think?

#

either way I should update the function (as well as saving/loading) to account for the api

#

atm the fusion fetches it's api counterpart on creation/load and it doesn't persist, when it probably should

#

wait I realize what happens with the error

#

infinifusion's copy receives the fusion data too late

#

I should probably patch my code to be in the actual function itself instead of hooking

#

yup I need to patch it in

#

although tbh the crash is strange because if there's no fusion table the fusion should assume it's made of two basic jokers

topaz snow
#

strange

#

i made the patch and yet it still crashes with ankh but for a different reason

thorny pewter
#

What's happens if you have a blueprint then a
Brainstorm+ another joker

topaz snow
topaz snow
thorny pewter
#

So infinite loop

topaz snow
#

so blueprint+joker+brainstorm would copy the joker to the right, the leftmost joker and also add +4 mult

topaz snow
thorny pewter
#

Like the blueprint is copying the
Brainstorm+ k
Joker so it would give 4 mult then copy the blueprint that Copys the joker that then gives 4 mult ect ect

topaz snow
#

wait you mean brainstorm/blueprint outside of the fusion?

thorny pewter
#

Yes

topaz snow
#

fusions cant be blueprinted

thorny pewter
#

Ah ok

#

That makes sense

#

To stop those pesky infinite loops

topaz snow
#

its a technical limitation

#

blueprint/brainstorm rely on the return table from calculate_joker and fusions cant give those

thorny pewter
#

But we can fuse fusions?

topaz snow
#

yes

thorny pewter
#

Omg I can't wait for this to be done

topaz snow
#

rn its mostly vanilla compatible outside of ankh apparently

thorny pewter
#

Il mostly probably use it as incantation for jokers tbh

#

Wait can it do multiple of the same joker

topaz snow
#

yes

thorny pewter
#

Ok

topaz snow
thorny pewter
#

Lol

#

Is there a limit

#

Or should I have like 100 jimbos

#

Could*

topaz snow
#

there's no coded limit but if you have too many it'll probably crash

thorny pewter
#

Ok il guessing it also does not work with editions ?

topaz snow
topaz snow
thorny pewter
#

Ok that's kinda what I meant like each jokers editions don't count

#

So a polychrome and a foil it will choose 50/50

topaz snow
#

yes

thorny pewter
#

Ah ok I'm guessing it's not easy or possible to program it to do both

topaz snow
#

infinifusion is still a single joker, it just acts as multiple for calculations

thorny pewter
#

Ye ok makes sense

topaz snow
#

edition is outside of card.ability so it doesnt get carried over into the subjoker data anyway

#

the only things infinifusion keeps about the subjokers are their key and their ability data

thorny pewter
#

1 last question then I'ma head to bed does his also work with scaling jokers

topaz snow
#

it should work with almost any joker

thorny pewter
#

Ok well I'ma head to bed so gn

topaz snow
#

UPD: figured out the crash

#

it was trying to grab the rarity colour

#

when infinifusion has no rarity

#

i made it grab the badge colour instead

topaz snow
#

with the next version i want to introduce infinifusion_incompat as a joker property, a new function to spawn fusions and a debugplus command to spawn fusions from fusion key/joker keys

topaz snow
shell ingot
#

That's cool

topaz snow
#

also wrote a new fusion function for this, still need to test it but theoretically it should allow creating jokers using both physical cards and just keys together as one fusion

#

so for example you could make a tarot that infuses the basic joker into a random joker and it'd be just create_infinifusion{contents = {G.jokers[#], 'j_joker'}}

shell ingot
#

Oh are you going to add consumables that does like "Fuses leftmost joker with Joker" or something?

topaz snow
#

idk if i'll do that but its good to have the option for that out there

#

i also would like to add joker as an infinifusion property to allow registering fusions from non-infinitefusion fusion mods so theres potential crosscompat between those

#

im also considering adding properties to define custom behaviours for fusions but im a bit on the fence about that

topaz snow
topaz snow
#

@heavy talon oops all 20s needs fixing btw it seems i put in the wrong keys when making the initial file

heavy talon
#

🤔

#

I can also take a look at it when I get home I forgot to push my progress from last nigth

clear dragon
topaz snow
#

for example putting thiscalculate = function(self, card, context) if context.joker_main then if next(context.poker_hands[card.infinifusion[1].ability.type]) then local mult = 0 for i = 1, #card.infinifusion do mult = mult + card.infinifusion[i].ability.t_mult end if mult ~= 0 then return { message = localize{type='variable',key='a_mult',vars={mult}}, mult_mod = mult } end end end endinside m incarnate will make it fire off a single +16 instead of 2 +8s

#

also SMODS.InfiniFusion.joker to define a preexisting joker as a fusion result

#

rn the only thing stopping me from releasing the update is that idk how to actually insert the new command into debugplus from my side of the mod

topaz snow
topaz snow
#

should i turn infinifusion into a rare joker?
what im thinking i could do is change its default behaviour (no fusion data = fusion of 2 basic jokers) so it picks two random (compatible and in_pool) jokers instead

#

maybe write an in_pool for it thats rng-based so its actually rarer than normal rares

shell ingot
#

Encountering natural infinifusions sounds cool

heavy talon
heavy talon
#

Hmnm I'm thinking of a fusion idea rn to try and make more experiments egg

#

Maybe referencing the Mycologist from Inscryption

topaz snow
#

TODO for the next update:

  • unfusion function
  • natural infinifusions
  • first compat layer (writing a list of jokers to automatically tag as infinifusion_incompat)
  • fusion collection
tiny niche
#

Let's go

topaz snow
topaz snow
#

todo: rewrite the currenr ability syncs because i realized theyre kinda stupid the way they are right now

#

i actually sync every fusions "global" ability values by changing them to all be the same

#

when keeping the individual values desynced and just adding them together for infinifusion's own ability table would make much more sense

shell ingot
#

Its to save like scaling mult etc?

topaz snow
#

kinda? there are some values i'd like to have synced between fusions (atm the two it actively syncs is extra value and perish tally) and the current version syncs them literally (by adding them together/keeping the minimum value respectively) and then setting that value across all of the subjokers when doing that and then applying it only to the main fusion makes more sense

#

at least in case of extra value

#

perish tally i should probably keep the way it is rn, but sell value should definitely be kept per joker and then just summed together into the infinifusion's own ability table

topaz snow
#

had to cheat a little to see this in action but now infinifusions can spawn naturally

#

i decided to not code in any rng for its in_pool because the fusion itself is completely random

#

well, not "completely" - i wrote a custom check for it so various pool stuff still applies

topaz snow
#

trying to test this while having a mod that adds more jokers was a bad idea

heavy talon
#

What happened lol

topaz snow
#

trying to find a specific joker in the shop when theres a mod that adds a billion jokers

heavy talon
#

Cryptid? kekw

#

You can disable cryptid's Jokers in the settings

topaz snow
#

nope, defusion

heavy talon
#

Oh defused

#

Yeah I don't use defused normally since I usually like making a concentrated effort for my jokers

topaz snow
#

ok it works so far

#

(natural infinifusions should have a rare badge)

topaz snow
topaz snow
frank forum
topaz snow
#

its not rlly an issue it was just a bit annoying trying to test this one specific feature

frank forum
#

Almost all the mods I personally use add jokers. I have over 950 in game

topaz snow
#

not infinifusion but defused and cryptid incompat apparently?

#

something with flipped card

frank forum
#

Oh I'm gonna have to look into that. Oh the joys is maintaining code i didn't write as someone who... can't really code

#

In not at mt PC right now, can you screenshot around the line it mentions?

#

In the DeFused code

topaz snow
#

its probably a cryptid thing

#

cus doublesided

frank forum
#

Yeah I usually just ask in modding-dev for help with stuff like this. But it might already be being done right on "my" end

topaz snow
#

unrelated but /infuse is actually a game changer because it allows to test out fusions w/o actually crashing the game

#

because all invalid fusions just fizzle due to how debugplus works

topaz snow
#

will commit once more and i think that might be it for today

heavy talon
topaz snow
#

still got a random crash with cryptid with the same issue from waaay back so will have to investigate

lavish talon
#

This looks quite fun, do the fused jokers only appear naturally or through other methods too

topaz snow
#

I think once the mod is more or less finalized I'll change it to be like soul (you're still basically getting a free joker slot) but rn it's just a normal spectral

#

cryptid compat is currently being investigated but this release should be fully vanilla compatible if I'm not missing anything

lavish talon
#

Maybe the soul like spectral should let you select one card and it picks a random other one possibly removing negatives or other editions

#

If that makes sense

topaz snow
#

it already technically removes editions

#

only 1 edition stays

frank forum
#

I mean if you're gonna make it rare like soul I think you should still get to pick both cards

#

And maybe for people who sent care about balance, make a toggle to turn it back to normal spectral spawn rate

topaz snow
#

ye I'm thinking the effect will remain basically the same other than maybe making it "fuse selected joker with a random Joker next to it", which is still complete control)

frank forum
topaz snow
#

tbh it's still insane to me that all of it just works

topaz snow
#

wait

#

is double scale crash just a general cryptid crash

frank forum
topaz snow
#

your jokers are defused

#

for now

topaz snow
#

current todo:

  • unfusion/defusion functionality
  • change fusion searching function to allow for multiple fusions using the same combo
  • fix used_jokers (no idea if its actually broken or not but i should investigate it just in case)
  • allow for duplicates of infinifusion
  • make it so jokers with a valid infinifusion tag generate a fusion table even when spawned through non-infuse means
  • fusion collection (will require a lot of work)
  • draw new art for the experiment (current idea - soul-like card with a dna splicer as the soul_pos)
shell ingot
#

fusion collection about to do a bajillion pages

heavy talon
#

Cause I mean if it's based on the Splicers from Pokémon that's baller

topaz snow
#

I think I'll do the final art myself but ye it'll be based on the pokemon splicers because this entire mod is a pokemon fangame reference

heavy talon
#

Mhm

topaz snow
shell ingot
#

Oh ok

topaz snow
#

by default it'll probably be empty unless I hardcode an exception to show a generic infinifusion if there's 0 registered ones

shell ingot
#

Can natural fusions have jokers from other mods?

topaz snow
#

natural infinifusion can pick any joker as long as it's unlocked, compatible with fusion and is in pool

#

need to challenge-proof it still but yeah

shell ingot
#

Neat

topaz snow
rose moat
#

wonder if you can sample colours from the jokers you have and then make a dynamic sprite based off that

topaz snow
#

tbh i'd be happy if i could figure out how to fix soul_pos sprite when resizing the joker so my dynamic sizing system could work properly w/o beheading the generic infinifusion

rose moat
#

oh it has no soul pos

topaz snow
#

the issue with soul_pos is that it seems like you cant resize it

#

eremel said it could be done with a lovely patch but i'll need to look into it again later

rose moat
#

I mean anything can be done with a lovely patch

#

But that doesn't surprise me considering nothing in the base game has a soul and resizes

#

seems like it has sizes(?)

#

unless this is a case of steamodded not doing it right

#

or something else overwriting it

topaz snow
#

the issue is in how Card:draw handles it afaik

#

changing floating_sprite's T.h/T.w/VT.h/VT.w doesnt do anything

cyan slate
#

is there anyway to assign art to infifusions

#

liek they're made automatically so

#

how would you even theoretically add art to them

topaz snow
cyan slate
#

i'd love to submit art

topaz snow
topaz snow
topaz snow
dusty sable
#

like i dislike ai art being used where a human could make the art but since this is very literally infinite and infinite combos, i think this is one of the very very very very minimal actual use cases for it

rose moat
#

I mean we could also just do some simple shader stuff

#

like applying colours from one joker onto another

dusty sable
#

yea we could but imo it would be cooler to have jokers actually fuse and have custom sprites even if it is a bot that did it

#

and besides that we can slowly get some ideas from it to make real art to add to the mod that a real person could actually make look better and obviously not ai made

heavy talon
dusty sable
#

and since its for a fun little mod and not to be sold or anything its basically the least unethical use of the tool (but yea it is still using other peoples art)

cyan slate
#

how come the main mod wont have art

topaz snow
#

my goal with the mod is to provide a functional game mechanic and a system to utilize it

#

you don't need a billion assets to have the mechanic itself

gloomy canyon
#

Jo

#

The Joker was in my shop and my game instantly crashed, i have Cryptid and BalatroInfiniteFusion installed

topaz snow
#

hm

#

it seems like a joker within the fusion had a function for loc_vars but it didn't return anything

#

so it broke

#

should be a one line fix

heavy talon
#

Though I may need to get a lot more balatro coding experience if I wanna make jonklers work properly in some use cases for more custom stuff

#

@topaz snow sorry for random ping but when considering the rarity of the eventual final card (Heading rn since Pokémon for a name like Stitch or Splice) is that gonna be like 0.3% rarity?

topaz snow
#

not sure what the question is here

heavy talon
#

I explained it stupidly but uh

#

I was trying to say like the spawn rate compared to vanilla spectrals I think?

#

cause I know both Black Hole and Soul have a 0.3% chance

#

of spawning

heavy talon
#

WIP of my idea for Sponsorship

#

(still gotta edit it a bit)

#

headcanonical lore is an old promotion from the "glory days"....

#

before Joker Cola became Joke

#

gotta test in game to see how it translates

topaz snow
heavy talon
#
  • if some of these fusions get kinda busted, ESPECIALLY Legendary + another joker
#

I feel like if I learn a decent grip of Balatro coding I'd love to make some unique stuff for Legendaries

topaz snow
gleaming portal
topaz snow
#

update: i've finished coding defusion

#

i need to rewrite the debug plus command for it bcos my current one isnt very user friendly but it all works

#

also in the next version im adding /infuse all to fuse all currently owned jokers

topaz snow
topaz snow
#

solved the double scale crash, so after the next update infinifusion should be stable

#

cant promise that it'll be 100% functional in cryptid bcos the other two compat changes are going to be done by cryptid, not me, but when its done i think it should work smoothly

#

current shortterm todo:

  • rewrite a bit of split_infinifusion to work better
  • rewrite /defuse to be more user-friendly
  • delete the procedural scaling for wee/square bcos its more trouble than its worth
topaz snow
#

will push the current state of the code rn w/o new release bcos the split function is still heavy wip

clear dragon
#

ok I'm kinda stuck right now with compat

--Infinifusion Compat
    --for some reason this doesn't actually update the values
      if card and card.infinifusion then
          if card.config.center == card.infinifusion_center or card.config.center.key == 'j_infus_fused' then
              calculate_infinifusion(card, nil, function(i)
                  print(i)
                  if
                      (not force_reset or G.GAME.modifiers.cry_jkr_misprint_mod)
                      and (G.GAME.modifiers.cry_misprint_min or override or card.ability.set == "Joker")
                      and not stack or (not Card.no(card.infinifusion[i], "immune_to_chemach", true) and not Card.no(card.infinifusion[i], "immutable", true))
                  then
                      if G.GAME.modifiers.cry_jkr_misprint_mod and card.ability.set == "Joker" then
                          if not override then
                              override = {}
                          end
                          override.min = override.min or G.GAME.modifiers.cry_misprint_min or 1
                          override.max = override.max or G.GAME.modifiers.cry_misprint_max or 1
                          override.min = override.min * G.GAME.modifiers.cry_jkr_misprint_mod
                          override.max = override.max * G.GAME.modifiers.cry_jkr_misprint_mod
                      end
                      if G.GAME.modifiers.cry_misprint_min or override and override.min then
                          cry_misprintize_tbl(card.infinifusion[i].key, card.infinifusion[i], "ability", nil, override, stack)
                      end
                  else
                      cry_misprintize_tbl(card.infinifusion[i].key, card.infinifusion[i], "ability", true)
                  end
              end)
          end
      end

for some reason although it misprintizes the correct tables, none of the values get permanently changed

topaz snow
clear dragon
#

alr lemme test

topaz snow
#

just putting it at the start

clear dragon
#

oh you already handle the heavy lifting, nice

#

that works

#

oh I see how now

#

because you temporary replace card.ability, etc. for misprintize and other funcs to handle

topaz snow
#

calculate_infinifusion executes the code for each subjoker

#

ye

clear dragon
#

alr perfect

#

now what if I...

#

ok it didnt crash actually, nice

#

I 100% thought it would break against my spaghetti code

topaz snow
#

double_scale is handled on my end on the newest commit

#

I need to update the WIP fusion splitting to ensure the split off jokers automatically set their double_scale data if they have it but yeah

#

Splitting is WIP but it works for the most part

#

btw fusion suppresses "on_apply" for editions on initial fusion bcos I feel like it shouldn't reapply stuff like glitched or oversaturated

topaz snow
topaz snow
#

actually I should probably build a system to store applied editions and only suppress duplicate calls

topaz snow
#

irl stuff + apparently balatroAP has a major crash, so probably no updates today/tomorrow

topaz snow
#

latest infinifusion commit + latest cryptid commit should make infinifusion stable with cryptid

thorny pewter
#

Bro I just realized this would be op after with Gemini

topaz snow
topaz snow
#

might bother adding consumable support for infinifusion

#

cus cryptid nostalgic deck

topaz snow
#

update on consumable support: it looks feasible and is already partially functional after a single change

topaz snow
#

update: its barely functional atm but i think it could work and thats kinda insane

#

like rn i have it queueing the events with the assumption the use conditions dont change but if i redo the queueing to take a new can_use check after executing each use before actually queueing the next one, infinifusion will be 100% compatible with consumables

topaz snow
thorny pewter
topaz snow
#

also fused consumables aren't as useful as fused jokers bcos just think of the conflicts

#

like Moon x Stars

thorny pewter
#

Ye fair

thorny pewter
#

But still I want to have my perkeo copying 20 souls at a time in 1 go

topaz snow
#

how would u end up with a perkeoble soul

thorny pewter
#

Equilibrium

#

Or pointer

#

Or any other joker that gives soul cards

topaz snow
#

an op scenario is op even without the fusions I think

thorny pewter
#

Btw what is the new deck about

topaz snow
#

beta balatro

#

consumables and jokers share their cardarea

thorny pewter
#

Wait so this is in cryptid

#

Or just regular balatro

topaz snow
#

infinifusion is standalone but I've worked with mathisfun to ensure its compatible with cryptid

thorny pewter
#

What I'm still on the deck not the mod

topaz snow
#

ah

thorny pewter
#

But it's good that it's standalone

topaz snow
#

nostalgic deck is upcoming deck for cryptid

thorny pewter
#

Ok

topaz snow
#

for a more indepth, standalone mod based on beta balatro, there's balatro archived

thorny pewter
#

Ah ok

#

I almost said something stupid

#

But il say it anyway since I'm stupid

#

When do we get fused tags

topaz snow
#

why

clear dragon
#

But Archived will most likely have this too

topaz snow
#

current idea for how to implement the usage of infinifused consumables:
as of right now, the calc inserts an event before each subcard's use_consumable to ensure the card has the correct ability table
I could grab the number of the events existing by that point, then after running use_consumeable I can grab all of the newly created event tables and store them
and by the time my inserted event runs I can run a quick use check
if the check fails, I run over the table of stored events and set them all to be empty instant events

topaz snow
topaz snow
#

what I'm thinking is that if I get the consumable fusion to work, I'll cut the dynamic scaling and instead make a bunch of generic alts that'll get applied based on priority

#

so like:

  1. exotic [cryptid]
  2. legendary
  3. consumable
  4. basic joker
thorny pewter
#

my disapointment is irmesuarable and my day is ruined

topaz snow
topaz snow
topaz snow
#

consumable support is almost finalized, i just need to add loc_vars for vanilla cards (without them a bunch of the cards crash)

thorny pewter
#

the one that allows you to chose as many options does not work

thorny pewter
#

i think i have a blueprint

fierce spruce
#

That might be a blueprint

scarlet heart
#

Can they get stacked and just display a ×x?

thorny pewter
frank forum
thorny pewter
topaz snow
#

does it crash? or does the effect not happen?

#

if the fusion happens but the effect doesn't from from within it, it seems like that'd be a jens almanac issue because of checking G.jokers directly instead of using SMODS.find_card

topaz snow
thorny pewter
#

Not makes a crash log it

#

I can't get to my computer this sec tho so I can give it later if need be

thorny pewter
topaz snow
topaz snow
#

newest commit has consumable support + api

#

im thinking of adding voucher support too

topaz snow
#

this was easier than i thought

shell ingot
#

Not sure what would be the point of voucher fusion

topaz snow
topaz snow
topaz snow
#

I'm also considering wiring support for other centers but idk how fruitful that'd be

topaz snow
#

@clear dragon currently working on consumable fusions and it appears cryptid's code cards need some sanity checks for compat
it's mostly just removing duplicate ui elements if such exist before creating new ones like this

topaz snow
#

also cryptid's planets dont work within infinifusion due to generate_ui issue

#

it seems like its similar to the issue i was having with vanilla planets before i made the patch to the function

#

idk why it would be the case for cryptid

clear dragon
#

👍

#

When you find any fixes feel free to make a PR

frank forum
#

it'd only be usewful if they could show up in the shop prefused

#

and well.. it'd just redeem both

shell ingot
#

True

topaz snow
#

atm busy so not a lot of updates on my projects but by the next update any possible fusion could be overriden to have custom effects through the api

sick marlin
#

Lord just imagine how insane that’d make Cryptid

topaz snow
#

still busy but something for the todo list:

  • automatically generate infinifusion support for jokers that use og fusion jokers system
swift smelt
#

is this still being updated?

topaz snow
#

not currently bcos I'm busy with irl stuff

scarlet heart
#

Then the question goes: do you think the mod is functional enough now?

topaz snow
#

it's functional enough to play around with but I'd rather do more work on it before telling people that it's functional enough

grim warren
#

Any chance this is going to get polished up/updated anytime soon?
Love the mod, it has just started to cause crashes within the last few updates of SMOD

topaz snow
#

not sure when I'll have the time for infinifusion unfortunately

#

smods is introducing a lot of changes that I'll need to investigate

shell ingot
#

Infinicomeback

topaz snow
#

true....

grim warren
#

No worries. When you've got time you've got time. Til then we'll make do 🙂

proper slate
topaz snow
# proper slate if i get some free time i can do some testing

there's no testing to be done tbh
it was known that there were issues back when the mod was in active development and considering smods changed a bunch of underlying systems while the mod wasnt being maintained that means that there's definitely more issues

barren ledge
#

is there limit how many jokers it can hold?

#

cuz if not, then i am about to blow up my PC

topaz snow
topaz snow
#

Infinite Fusion [Currently not worked on]

#

added this so ppl know its unsupported rn, it would probably require a completely rewrite for new calc and i cant rlly do that rn

rotund flower
#

wth is this

topaz snow
# rotund flower wth is this

?
infinite fusion is completely incompatible with modern versions of smods, but even if it was compatible it doesn't do anything that could've caused this