#Lovely - A runtime lua injector for LOVE2D
1 messages · Page 4 of 1
mostly just over lovely patches can cauwse the game to crash before the crash handler has a chance to load
though lovely and steamodded could work off the same file
if that's convenient then absolutely
I mean steamodded is already fairly deeply tied to lovely so I'm down
we might be able to implement a lovely runtime feature that queries the metadata for fields
steamodded's side will require a main_file to actually load anything, so lovely mods could still use it without relying on anything steamodded, or optionally load something if steamodded happens to be present
actualy if you do this could I also disable other patches at runtime?
dynamic buffer patching would be interesting but I wasn't talking about that. could you clarify what you meant?
not without reloading the lua runtime
(and lovely itself)
which isn't that hard
I meant just loading my code before the file is loaded so if the file has syntax errors it doesnt' effect my code's abiltiy to run
ah yeah, gotcha
I mean if my code ran before any patches were applied could that work?
so the crash handler can catch syntax errors
yeah
its okay now cause I can catch then in every file except main
because I load it before the game requires any files
so then we need some standard for what this file is named
i have mod.json in my drafts but I'm not fully convinced
also if it is a toml file we need a way to parse it
i don't mind toml files if that makes things easier and there's a lua parser for it, but I'd prefer json personally
toml is almost always my choice because it works as a human-editable data format
but hmm, let me think
okay propsal for this.
New patch type where I specifcy a buffer and file to laod. When lovely gets the request to load that file, it loads the raw text, then before applying patches, hands the buffer and patch info to my code. My code can then run and do whatever it does, then I can basically remove patches and modify the buffer however I see fit, and then I return the new patches and buffer to you, where you continue what you were doing normally.
if you implement a standardized function then I can call it from native code with the buffer
might also be intresting supporting lua pattern matching as a pattern type
aren't lua patterns just worse regexes
yeah but they are a bit simplere as they don't need to be escaped in strings cause they use %, and they would probably be more portable as they are included with the lua runtime
the annoying thing with that is that we need to dip into the runtime to actually apply the pattern
and at this point we're not working with the buffer as though it's a contiguous bit of text
so my bet is that we would need to do a ton of allocations to pass that data across the FFI boundary, and then do some wonky string rope manipulation to fit it back in aok
okay fair enough
I do like the idea though
I'm going back and forth on this in my head
I need lovely metadata to be set in an agnostic way
but it would also be super convenient for devs if smods and lovely were able to share
maybe I can ignore non-lovely fields within the metadata file
that might be nice
[lovely]
name = ""
author = ""
version = 1.0.0
# everything after this point is ignored by lovely
[smods]
...
if we are using toml could you exoirt a toml parser throguh lovely?
levergeing your built in parser
definitely but it would be tricky to convert the native struct as a table
actually it shouldn't be that hard. iirc there are several functions within lua that let you setup and define tables
yeah
can you just have the toml parser give you each key and value as they pop up and then you don't even need a native struct?
Rust-isms would make that harder than just converting whatever data we get to a table
I can probably write a macro that converts a typed datastructure to a generic table automatically
also I appreciate that convo in #💻・modding-dev because it reminded me to update the version of lovely on thunderstore lmao
also I'm weighing the idea of making a 0.8 release and then, once all of this feature stuff is implemented, going for a full release
it seems a toml.lua library exists but requires loading a dll/dynamic lib file (not too big a deal though since we can do this from any location through ffi)
though actually i haven't explored if/how that works with mac/unix
I think that exposing this functionality through lovely is S tier, but if it's not viable then that also works
lovely discord server? I'm feeling meh about it, but I'm curious to hear what you guys think.
4
8
apperently chat was feeling meh about it too
not super surprised
it's a somewhat niche dev-facing tool so the userbase doesn't really necessitate its own server
ironically niche
waiting on google to let me spend my money, then we can look into lovely Android support
no promises
I accident https://discord.gg/VU5cQ7cK
For that it will be on the other discord lol
Hey, guys, I'm having the same trouble as this issue in the lovely github: https://github.com/ethangreen-dev/lovely-injector/issues/79
I tried running the lines in the run_lovely.sh manually, got lovely to load, but then it shows a screen saying "No game"
do you have a custom steam installation folder by any chance?
No, paths in the script match my installation
oh yeah this invite expired
Same here
I managed to turn off windows defender and it says all my antivirus protection apps are off, and yet downloading lovely is still getting blocked sadly
downloading? you're using chrome?
yeah
alright
I dont have firefox and when trying microsoft edge it proceeded to get blocked again
Guess Ima download firefox
edge is chromium based so
you're welcome 👍
I've downloaded and put the version.dll into my balatro files, but every time I go to launch steam just deletes it
thanks, I figured it out
Windows keeps deleting the 0.5.0-beta6 file (for pokermon) after I already force chrome to keep it 😅
Any tips?
Got it! Had to disable real-time protection
that only works temporarily
https://github.com/Steamopollys/Steamodded/wiki/01.-Getting-started#using-windows-defender
Hey all, version v0.6.0 is out. This notably includes a fix for crashes most often encountered by users of Dimserene's modpack. https://github.com/ethangreen-dev/lovely-injector/releases/tag/v0.6.0
(Plus some other fun stuff)
👀
Does this also mean we’ll get a Thunderstore update for Lovely (and as a result Steamodded)?
yup
I'm going to let this cook for a while to make sure that everything is aok
and then I'll submit the version tomorrow
actually yamper, you can't, I've blocked your computer from running lovely
(jk jk give it a go)
good riddance
hell yeah
I made a PR to add patch file paths to patch log messages
Possibly Lovely bug, a pattern patch that's targeting 4*G.CARD_W, is landing in a position with 4.25*G.CARD_W,.
God forwarding is trash wtf
Here I thought you jsut copied the link but nah
it's.. a poor implementation of a good telegram feature, lol
I know not only telegram ofc, but that's kinda the dichotomy (discord vs tele) in somr communities, so that's my point of comparison
it's better than nothing
yeah I find it definitelynice to have
Pattern patched supports wild cards
Imma be honest I forgot about them until thinking why that would matcv
Looks like under the hood it uses wild-match which does not have escape characters
...unfortunate it seems
Yeah
Seems like you could just use the ? Wildcard to match the * or use regex patch, although they have issues kf their own
is there no way to toggle off wildcards?
Maybe it could be an opt in to enable wildcards as they're rarely used anyways
not right now I don't think
it would probably be opt out to not break backwards compatibility
I meant in rust in general, figured that it's not an option in lovely otherwise someone would've suggested it
Can someone help me figure out an issue? I followed the tutorial on the Git repo... And I get this error
I copied the command from the repo to the launch command on Steam
And I don't really get what's going on?
I checked the log file in the Lovely folder in the mods directory
stack traceback:
[love "boot.lua"]:352: in function <[love "boot.lua"]:348>
[C]: at 0x7ffc1b392fa0
[C]: in function 'require'
main.lua:14: in main chunk
[C]: in function 'require'
[love "boot.lua"]:323: in function <[love "boot.lua"]:126>
[C]: in function 'xpcall'
[love "boot.lua"]:362: in function <[love "boot.lua"]:355>
[C]: in function 'xpcall'
It gives me this
I have no idea what this means or how to fix it...
I mean we could just add a property and then just compare it plain instead of wildcarded
you don't need that step unless you're running linux/steam deck
Also verify game files on steam, you have an old version of steamodded still installed that can't run alongside lovely
I already got it, but thanks all the same!
That arg is for Linux only, you don't need it if you're on Windows.
Oh wow thanks Discord for not showing me messages until I respond
Glad you figured it out!
It would probably be best to replace wildmatch with something that supports escape characters
because it's pretty inexcusable to not have them
... but in the meantime you should replace this with a regex. it won't be very complex.
I think replacing the * with a ? would work too
It did get switched to a regex
also lovely's at 120k downloads on github
on my way to download lovely -120k times
Any value in being able to pin/prefer certain versions of the game?
Might be useful for devs
idk
seems difficult causwe games don't have a standard method of versions
at least not one I'm aware of
each platform has a depot version
In detail how do i install the current version
calls it a dangerous file
still not letting me download
you should be able to tell your browser to keep the download
says dangerous download blocked
is there like an arrow or something you can click for more options?
no just says delete from history
not sure
you'll probably have better luck in #⚙・modding-general
steam doesn't have modding capabilities all steam does is let people upload files on the workshop to get downloaded
it is up to the game to add modding support
When i runned lovely, it appear 2 error:
- priority is 999999, expected to i32
- expected "",""
whats the lovely crash report
do we not support negative priorties?
I think we do after 0.5.0-beta6?
that's unfortunate
So i know that some antiviruses mark Lovely as a trojan bc it works like one, but recently it's having some strange issues. On my dad's computer, Norton (i dont personally use Norton cuz its trash) quarantined the version.dll file. So i tried to install v0.6.0, and even on my own computer, Brave browser didn't allow the download. I downloaded it with Edge, and ran it through Virus Total and got this:
yes lovely behaves like a trojan so it is flagged as one. See: https://github.com/Steamopollys/Steamodded/wiki/01.-Getting-started#about-anti-virus-issues
Some of those say Adware though? And it used to Download and run without much issue, but now it seems to be tripping more things, including the Brave Browser (probably Chromium in general) and Norton (which i can't for the life of me figure out how to add an exclusion)
tbh theres usually a couple weird or different results on virtus total. Lovely doesn't have ads, and if you want you can check the source code
Also the chrome safe download thing was one of the first to trigger on it
thanks for the clarification - I've used it prior and know it's fine, but was running into weird new issues and didn't see anyone talking about it, so i thought i'd ask
a
b
cba
@vernal coral
Hi really noob dumb question but when the install instructions on github say "Open the .zip archive" does that mean I extract it first and THEN do that, or do it without extracting first. I assume extract the .zip first.
you can open without extracting and it will automatically extract the file when you drag it out usually, or you can extract the archive then copy the file over. it doesn't really matter
Oh cool
not all archiving softwares do that I think
e.g. MacOS Archive Utility
extracting the entire .zip is the only option
Idea a special type of module patch that just returns the full path to the passed file (or maybe an object with the full path and some other info)
Then we could use it on non-Lua things like shaders and images or just use it on . to get our mod path
I keep crashing when trying to select a deck in my game and it seems to be referencing a lua file in the lovely folder in my mods folder, anyone able to help?
can give the full error if needed
if anyone is able to help id appreciate it, thanks
Are you on mac?
it seems to be crashing because of cryptid glass shader
@silk creek I think I have a fix for the problem you were having last night. Let me know when you're available to try a test build out.
@solar pebble Just woke up haha, should be able to test it in a half hour or so
give this one a go when you get a chance
Will do! Also feel free to send it as a different filename if you want, I'm renaming them anyway lol. (Changing it back to liblovely when testing, dw)
OK, seems to be working. Main menu screen animation is stuttering again though
in-game seems to be running fine
Heard. I'm not sure what the lag would be caused by. Could be Lovely, could also equally be something else.
I think it's a success or you're no longer crashing
It wasn't doing it on older versions tbf, definitely a success though! Seems stable and working
I have extremely limited experience with lua, but I'm kinda tempted to poke around myself with whatever was changed just for fun. Probably don't have the expertise to actually create a useful pull request, but still kinda interested to see what all was broken/fixed
I am not on Mac
I am having some weird issues with lovely. It seems to freeze when trying to patch any mods.
It is a fresh install of the game, only mod in the folder is steamodded
Both the Balatro gamefiles folder and the dll itself are whitelisted and the antivirus is turned off
Running on windows 11
Running Balatro this is what i get, the game never leaves the black screen
Make sure you're not accidentally clicking on the console window as it'll freeze the game
it seems to happen regardless of if i tab to the console or not
Hmm, alright. Does the game start if you delete steamodded?
Hmm
Install this by itself and see if the game runs https://github.com/WilsontheWolf/DebugPlus
(This doesn't require Steamodded)
what we're doing here is figuring out if the issue is because of Steamodded or patch injection at large
it does launch
Try installing this version https://codeload.github.com/Steamopollys/Steamodded/zip/8dda590cc8b98ccbf37b7d5d9667f5cd0151cfd5
That's from a couple days ago
do i need to change the name for it to be recognised?
it is now stuck
as per the code, that never matters (yet it somehow still does on mac allegedly)
nope, new one for me
weird
@night elm share the latest log file in Balatro/Mods/lovely/log when you get a chance
should be this one
Hold on a sec
Could you try going into your steamodded folder > src and edit logging.lua, then delefs line 6 (client = socket.connect("localhost", 12345)) then try launching it
it works!
my guess is that they have a process that already has an open handle on that port
@night elm Windows button + R, powershell.exe, paste this Get-Process -Id (Get-NetTCPConnection -LocalPort 12345).OwningProcess, press enter
throws an error
`Get-NetTCPConnection : No se encontraron objetos MSFT_NetTCPConnection cuya propiedad 'LocalPort' sea igual a '12345'.
Compruebe el valor de la propiedad e inténtelo de nuevo.
En línea: 1 Carácter: 18
- Get-Process -Id (Get-NetTCPConnection -LocalPort 12345).OwningProcess
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- CategoryInfo : ObjectNotFound: (12345:UInt16) [Get-NetTCPConnection], CimJobException
- FullyQualifiedErrorId : CmdletizationQuery_NotFound_LocalPort,Get-NetTCPConnection
Get-Process : No se puede enlazar el argumento al parámetro 'Id' porque es nulo.
En línea: 1 Carácter: 17
- Get-Process -Id (Get-NetTCPConnection -LocalPort 12345).OwningProcess
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- CategoryInfo : InvalidData: (:) [Get-Process], ParameterBindingValidationException
- FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetProcessC
ommand`
such a weird issue (~.~)
thank you both for the troubleshooting tho!
much appreciated
I mean I don't see the point of keeping the python debug socket at all
Some people said they used it when I removed it
The Python console does have a few features the lovely console and DebugPlus don't have
Actually winder if we could modify the Python console to read the lovsly logs so it doesn't need a socket
surely
im lost an brain to small
it cant find what its looking at from what i can tell
got fed up put json5 into the main folder and it worked
parrot mod that also uses lovely said
i hate java
... what
playing around with embedding lovely patch metadata within lua dumps:
this would be a first step towards making lovely easier to develop for. lots more ideas in the pipeline, but this is the easiest at the moment
oh yeah I'm also worried that it might cause issues with multiline patches
I don't think it should be too bad, unless you rely on patching something after someone else patches it
And it needs multiline
I could see at least one patch being affected by that
We've broken more patches at a time before
not sure if you saw my last response but im not on mac
@vapid bramble give this a go
That works now, thanks so much 🎉
@twin bluff
Why am I being pinged?
another instance of the logging port causing the game to hang
So is it common for lovely to be flagged as malware, trojan and hacktool all at once?
its also adware apparently
Im extremely scared to mod balatro because of these warnings
Yes, read this -
https://github.com/Steamodded/smods/wiki#step-1-anti-virus-setup
the adware one is weird, none of what lovely does is remotely similar to advertising
i mean ik this is all false positives from heuristic stuff, but adware is a particularly false positive, yk?
man I really need to start signing my releases
sorry about scaring you, av vendors have gotten really aggressive towards stuff like lovely as of late
@solar pebble any ETA for a 0.7.0 release? extended patch targets would be kinda useful to have available, esp with SMODS.calculate_context (and to some degree SMODS.calculate_individual_effect, though that one can be hooked easier) becoming important patch targets to add custom calculation
If everything works out then it should be sometime this week. Maybe Friday? I want to get https://github.com/ethangreen-dev/lovely-injector/pull/107 reviewed and merged before I make a release.
Sounds good 👍
awesome
I really love the icon
taking inspiration from Xcode
🤔
idk but the PR doesn't look reviewed or merged to me

I don't mind waiting for some time longer
the installer method currently only focuses on Balatro
@solar pebble did you ever use the VM to test the things on mac?
Random idea some kind of love.lovelylog function or smth that if it exists is called when lovely logs something (not the game)
just waiting on the new lovely update
also working on a cool implementation to the MTJ mod https://scryfall.com/card/lci/135/brasss-tunnel-grinder-tecutlan-the-searing-rift
{2}{R} • Legendary Artifact // Legendary Land — Cave • When Brass's Tunnel-Grinder enters, discard any number of cards, then draw that many cards plus one. At the beginning of your end step, if you descended this turn, put a bore counter on Brass's Tunnel-Grinder. Then if there are three or more bore counters on it, remove those counters and tra...
v.0.7.0 is released https://github.com/ethangreen-dev/lovely-injector/releases/tag/v0.7.0
Damn
This bugs me so much
I cannot stress this enough: devs read the release notes as there might have been some very subtle changes made to the way in which patches are applied.
In my testing it's been 1:1 but you should test 0.6.0 against 0.7.0 and see if there are any differences. https://sourceforge.net/projects/winmerge/ is useful for this
will probably make my implementation of double sided easier
winmerge is goated
Technically we could patch other mods and love internals (I've made a mod that patches love internals 6 months ago) but the pr fixed their dumps and a panic for patches with / in the name
hii, mod a mod this weekend by patching the exe and then porting the diffs into lovely, went great ❤️
was only confused about the exact behavior of match_indent, like wondering if there's any implicit whitespace stripping(?), and then what about multiline patches, etc
and i'm not here to open issues or complain, great work, just sharing my hiccups >u<
last one is that my mod conflicts with SteamModded, so i included two patches for that hunk and (depending on whether sm is installed or not) one always fails. this seems kida topical given the new patch scope feature, and it'd be great to be able to specify a-la times that one patch is for sm and one isn't (suppressing spurious applications/warnings or emitting one if both apply)
so, 'whitespace docs' and 'is there an idiom for that' ❤️
yeah by default it will strip whitepsace to match your target (so you don't need like 8 tabs In your target).
And for the patches failing we just suck it up (or try to find something else to patch)
it might be nice to group patches though so if one of the group fails it's okay but if both it warns
alternatively: compat patches in a sep. file, dependent patch-sets that error if they don't pass/fail unanimously (think init/free pairs), or a particularly clever regex c:<
i don't usually mod things so idk what communities have the most interesting tooling, vry curious but beside the point -- thx for making in happen on an accessible foundation here c:
probs need:
- patch identifier field
- error condition field
- condition syntax
[patch.pattern]
identifier = "some_id"
err_hook = "set some_id.errored true"
can_error = false
# other patch
[patch.pattern]
err_cond = "some_id.errored is true"
or something
idk
@solar pebble sorry to bother you but saw you’re active right now! Any ideas as to why my mod menu isn’t appearing?
no worries! do you have smods installed?
lovely by itself will only show that fancy console window
I do! It’s in my mods folder
figured! move that mods folder to %AppData%/Balatro/Mods and you'll be golden :-)
well move the folder named Mods to %AppData%/Balatro
Should my version.dll be there too or does that stay in the other folder?
nope, version.dll will always live next to the Balatro application (Balatro.exe)
AH it worked!! Thank you so much I’d been struggling for over an hour trying to figure that out. You’re the best!!!
no worries! never be afraid to reach out if you're having a hard time. mods can be tricky :-)
the instructions clearly say game directory and mod directory are not the same 
remember the 98% though
What's the syntax like to do a lovely patch in another mod?
target = '=[SMODS modid "path/to/file.lua"]'
modid is _ for smods itself
Ty
What would the patch be for a non-smods mod
depends how it's loading
if it's a lovely module then it will be =[lovely modulename "path/to/file.lua"]. With lovely 0.7.0 above you can add --dump-all to lovely and then you can look in your dump folder for the right file and the txt file beside it will have it's target
So can Cartomancer now dispense with that weird hack of wrapping the nfs module to patch the Steamodded file in lua
yes
how would i use the --dump-all utility? struggling to find info on that
im sure its some obvious console thing but i dunno
ohh figured it out
for easy searchable reference for others: you go into the properties for balatro on steam, then add --dump-all to the launch options here
maybe i'm the only one that's confused about this but maybe i'm not and this will be useful to someone
Idek how to put --dump-all in run_lovely.sh lmao
iirc run_lovely.sh --dump-all should work
otherwise replace LD_PRELOAD=liblovely.so love Balatro.exe "$@" with LD_PRELOAD=liblovely.so love Balatro.exe --dump-all "$@"
Hello there
Is there a way to conditionally load a lovely patch if a specified mod is present?
No
Lovely patches are code so you can just do an if statement in your patch
Or if your patch is simple enough you can use hooking instead of patching
I see. Thank you
this is an update lovely momenty
Still has the "panic in a function that cannot unwind" which isn't an update lovely moment.
Pretty sure that's still a thing in 0.7.1
that just happens after ever panic and isn't userful\
also did you miss the #1255696773599592458 message
just want to report that I just now was trying to setup Steamodded on a new, prebuilt PC, and I ran into the same issue brought up in this discussion, and this fixed this issue for me
Unsure if this is related, but does anyone know the fix for lovely essentially crashing every .exe i try to run?
I tried this, but it did not work for me I think
It's doing this for two seemingly unrelated programs im trying to launch (an itch.io game and the setup for docker desktop installer?)
you have two problems:
- you have an absolutely ancient version of lovely. like wayyyyyyyyyyyyyyyyy old. update ASAP.
- you have the lovely
dwmapi.dllorversion.dllfile in your downloads folder. delete it. that's why lovely is running when you run .exe files from in there.
updated it to 0.7.1! same issue
did you delete the lovely .dll from your downloads folder?
It'll either be version.dll or dwmapi.dll
dwmapi.dll was the culprit!
that's the one!
my god i was pulling my hair out
there's a reason why lovely is now a .zip :-)
you're absolutely not the first person that this has happened to haha
homeworks late but at least i can do it now lmfao
well dang, you can blame me if you want. not sure if your teacher would get it though
youre a lifesaver thanks!
np! good luck with your homework
would it be possible to show lovely version in panic messages or is that too much a concern of causing issues
so I can use less brainpower in doing support for lovely panics
I've just gone down a rabbit hole trying to figure out why the stacktraces cuts off the chunk name which would show the offending file. Got all the way to the lovely injector code where it creates the chunk, and it doesn't quite match up with what I'm seeing
I don't see why the name would be cut off or end with a right bracket
This is the only useful thing I need from the stacktrace and it's cut off for a reason I really can't find. Any insights?
I'm at least reasonably sure that steammodded is not cutting off any strings, it comes straight from debug.getinfo
@twin bluff this is more relevant to you i think
I think lua just does this. If you are using SMODS, use SMODS.load_file it has better chunk names
I'm not a modder just a user
Just happen to be able to read stacktraces and source code
yeah I think its just a thing that lua does where it truncates long chunk names and it decided to truncate the end and not the beginning
But that's on lovely then, right? It should keep patched in chunk names shorter so the important parts are included
Rather than just dumping in the entire file path
nah, lovely doesn't have anything to do with chunk names
No it would be howbeer the mod dev is loadng the chunk and luajit
I dug into lovely and the chunk names are created from the file path from what I can tell. https://github.com/ethangreen-dev/lovely-injector/blame/4a6533eb9654219b36485f8bb6c017760b57566a/crates/lovely-core/src/patch/module.rs#L57
That's only for lovely modules
that's specifically for module patches and they follow a chunk naming pattern of =[lovely {}...] so they're pretty easy to identify (and short)
Does lua just lop off the end of the chunk name as soon as it gets a long one, or can it be salvaged somehow
I believe that there's 2 copies of the chunk name, a short a and longer one
You did this in v0.7.0 thanks for the quick fix
That's it you're my sworn enemy now
It is, they contain buffer names
its twice as annoying to navigate dumps now
what's the point of them?
buffer names for you to specify when declaring patch targets
tbh I'm for keeping them
you're not really meant to navigate dumps that much and it's nice having the name of the buffer output for weirdly named buffers and makes it easier to find what to target when combined with dump all
Any chance of a payload argument for patches.copy, for when the patch is only a line or two and a unique lua file feels excessive?
Or is there a way to specify EOF to patches.pattern?
Should have led with that question
not with pattern, but with regex
$(?!\n) works for that I think
Ah right. I had a crack with regex, trying to match for $(?![\r\n]) but with no success
Will that check through the entire file contents before finding a match, or is Lua's implementation smart enough to jump straight to EOF?
it'd be rust if anything, but regex is inefficient so it probably goes thru the entire file if I had to guess
Hm, same issue as with my attempt, UnsupportedLookAround
Seems like the rust-lang regex doesn't support lookahead at all, that's surprising
For now i think the most robust way might just be patches.copy with a single-line lua file
interesting, guess I've never actually tried to do that
There have been a few times in the last few days where users have reported being unable to delete version.dll due to file permissions issues. Any guesses as to what could cause this?
#⚙・modding-general message
#⚙・modding-general message
yeah it's really odd. iirc you can emulate lookaround with capture groups
at least possibly
it's been a while since I've played with lookarounds
Would you be comfortable with complicating patches.copy a bit more to handle a payload argument instead of file sources?
#1214591552903716954 message
It's far from a critical feature, but would let me remove my single-line init.lua file
Targeting a single line near the end feels a bit too brittle if there are future changes, and my best efforts with matching EOL with regex have failed
very reasonable request, I'll take a swing at this after work today
Thanks!
heya. game is crashing, and i am unsure why. I haven't played in god knows how long sooooo.... i dunno what the hell im doing.
Oops! The game crashed:
main.lua:2078: bad argument #1 to 'load' (function expected, got nil)
Additional Context:
Balatro Version: 1.0.1n-FULL
Modded Version: 1.0.0~ALPHA-1420a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.7.1
Platform: Windows
Stack Traceback
(3) global C function 'load'
(4) main chunk of file 'main.lua' at line 2078
(5) global C function 'require'
(6) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x28859538 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x28859588 (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(7) global C function 'xpcall'
(8) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(9) global C function 'xpcall'
(10) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
At what point does lovely create dump files? Is it after pattern and regex patches but before copy and modules?
After all patches applied, modules get their own file / buffer name
Including copy patches? I'm not seeing them showing up Sorted!
look harder, they definitely show up in the dumps from my experience kk
Is that module dump disabled by default?
That would make sense, i suppose it's not necessary to dump modules because they'd be unmodified
--dump-all did the trick, but causes a panic with error for target =[SMODS Handy "config"] contains a non-terminating null char: NulError
... huh
Handy also manages its own config in a very unusual way with compress_and_save("config/Handy.jkr", Handy.config.current) instead of using the Steamodded-friendly lua-based config
uh huh
Game saves all data in such way. Is it wrong?
steamodded stores config in plain text
this means not only can it be patched by lovely without such complications, but it can also be edited manually
So I should replace it with love.filesystem.write("config/Handy.jkr", STR_PACK(Handy.config.current))?
Looks like it's works
Guys, is there any partciular reason why the same lovely patches, from the same mod, with the same modlist, would load for an user but not for another one? (the two users are using the same smods/lovely version)
Sounds like a riddle asked by a hunchback at the gates of a labyrinth
Lmaooo
I'm having trouble helping someone that has the same mod version as me and same smods/lovely, but their patches are apparently not loading, but mine are
Which makes no sense to me
Need more info about the nature of the problem. My bet would be their antivirus removing Lovely's .dll though
Could also be a hidden .lovelyignore file inside the mod's folder
I sent them my mods folder, told them to replace theirs with mine and now it works. So it was something inside the Mods folder. Might've been this, but I don't know what could've created this .lovelyignore file
Disabling the mod in Smods' Mod menu will do that
It was enabled, but still not loading them patches
Are they on a different platform
The platform shouldn't matter on lovely 0.7.0+ but it did on older ones and it's possible there's some unknown bug
seems like patching other mods is broken on macos
How so?
this patch does not work on macos
so ive been trying to get mods to load, but when i go to extract the lovely file it doesnt unpack properly and it just says file type dll and not application extension...would anyone know how to fix that
responding to me or aikoyori?
balatro loads, but i dont get the mods tab in game
is there the console?
im very new to modding..sorry you might have to explain a bit more
when you launch balatro, does a second black window come up?
yeah is this what you mean
lovely is working fine then. Follow the guide from here https://github.com/Steamodded/smods/wiki#method-3a-direct-download
thanks!
@solar pebble ok so I'll put it here again just for the record so the patch that patches another steamodded mod doesn't work on macOS
works fine on Windows
can you run it with --dump-all and see if it dumps those
the patched files?
i don't recall any steamodded files being dumped at all
someone told me to run that already
and which version do you have?
0.7.1
okay and what does your dumps folder look like with --dump-all
interesting
Seems like lovely modules are not accessible in threads
print also doesn't seem to work in said threads (idk if they work on bog standard love)
Does lovely work on steam deck?
it should, steam deck is basically linux in a valve-shaped hat

@solar pebble I can confirm on my mac dump-all doesn't seem to detect SMODS and similar dumps
seems to work on linux native though which is odd
Heyo @solar pebble ;
Balatro is on Xbox Game Pass now and is downloadable on PC, but is structured differently:
#⚙・modding-general message
#⚙・modding-general message
Any interest in trying to support it?
there's been a very small amount of talk about it in the lovely discord
TIL there's a separate discord
absolutely
I'll prepare myself for a whole new wave of the same 4 issues being posted in #⚙・modding-general but with the Cooler Daniel installation folder instead
is there a way to add mod dependency conditions to lovely patches
not directly as lovely doesn't know what mods you have beyond their folder names. you can either bake the condition into the patch payload or have multiple patches where only one ever hits depending on what mod is or isn't loaded


I'm already using the latter
the former is interesting 
I'm trying to make my Vietnamese mod no longer depend on smods by having it load an alternative patch when smods is not around
You could patch in a call to your own mod's function with something like require('vietnamesemod.compat').check_smods() and then just do the necessary checks and changes within that instead
@solar pebble Sorry to bother, any update on the Xbox PC Mod Support?
Hyped! Thanks in advance!
LETS GO IM SO HYPED
@solar pebble thank you for working on this project, take as much time as you need
I indeed worked tonight, made some progress. It's ending up to be more complicated so I'll need to rework some parts of lovely before I can make a release.
Most important is a proper sig scanner so we can figure out where all the doodads are in memory.
and also maybe macOS other mod patching fix (i can help test)
I'm not sure why thatd happening
made a PR to fix a minor bug I ran into when getting lovely to work alongside a modpack manager im working on https://github.com/ethangreen-dev/lovely-injector/pull/154
I'm planning on reviewing all of the PRs tomorrow. Didn't end up having time to work on GamePass support today, had other plans.
so uh is there still no easy way to patch smods files or is it just not in the readme
if patch relies on mod folder name then it's still not great (because anyone can name folder however they want)
it doesn't rely on any mod folder name
'=[SMODS _ "src/utils.lua"]', '=[SMODS modid "path/to/file.lua"]'
any plans on adding "alternative" patch target? not entirely sure how good of an idea it is, but in my silly lovely patches at home I needed to support patch pattern for 2 different steamodded versions.
logic would be that if main patch target couldnt match anything in the file, alternative pattern is used
also no issues, very convenient feature
does bit defender hate lovely or something? I tried making exceptions and even disabling it it still keeps quarantining it. I uninstalled bit defender and game and mods run just fine, reinstalled bit defender and the game just wont open
here are the logs as requested
the issue is that patching other mods on mac does not work
please refer to the directory on line 2 of the file for platform
gamepass support is almost there
just fixing some weird bugs and I think we'll be golden
damn gamepass got hands
It always does
will there be instructions on how to get mods set up on the game pass version once it gets supported?
No, they will do all of the work only for themselves and never release anything publicly or answer questions about how they did it.
Probably delete the whole github page as well just to spite us
Hey got a Question my Windows Defender pops up the whole time and says there is something wrong with the dll is that normal ?
yeah
lovely works by injecting code into balatro while it runs, which is also a thing viruses do, so antivirus programs are like "holy shit potential virus‽¿?”
Everybody Stare at this man
Oops! The game crashed:
main.lua:4064: bad argument #1 to 'load' (function expected, got nil)
Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0305c-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.7.1
Platform: Windows
Stack Traceback
(3) global C function 'load'
(4) main chunk of file 'main.lua' at line 4064
(5) global C function 'require'
(6) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x230beff8 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x230bf048, gammacorrect:false, title:Balatro, externalstorage:false (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(7) global C function 'xpcall'
(8) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(9) global C function 'xpcall'
(10) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
Someone help
damn gamepass got hands
Is recursive mod folder loading a feature on the roadmap? It would fix the common issues caused by nested mod folders that a lot of newbies run into, and also solve a challenge for BMM and similar mod managers trying to distribute feature mods consisting of multiple sub-mods.
From what I remember, no. There’s a manifest which iirc would allow for extra folders besides lovely to search for but I’d imagine said manifest would have similar depth rules that lovely injects do already.
Imo, it doesn’t fix the problem it just acts as a band-aid.
Sure current mods it wouldn’t be a problem, but anyone in the future could have a double-nested mod repo and have this bug happen the same way it would now for nested mods.
What are the obstacles to implementing it? Is it more complex than recursively searching for lovely.toml and lovely/*.toml files?
That I don’t know, I figure this has been discussed in the lovely discord but I forgor to join and I can’t the link anywhere.
It took me a while to find when I went hunting a month ago. Not sure if it's meant to be sneaky and semi-private, but: https://discord.gg/qJCEquPKB8
Couldn't find any mention of nesting or recursive searching
Will delete if requested
Generally I'm just opposed to doing this. Now you have people making multiple mods in a folder, and it gets harder to determine where a patch is defined. It also makes some behaviour more confusing like how does lovely ignore behave with this?
Making patch sources and patch file locations less obvious would be a downside, but could be fixed by adding some basic mod metadata to patch files. Just an id would be enough, right?
Deriving patch metadata from folder name and structure doesn't seem like a great solution regardless of whether nested folders are allowed or not.
I'd suggest .lovelyignore would just ignore any .toml files in the same folder and not recurse any child folders of that.
Hey! idk how easy it would be, but I think it could be a great idea to make old lovely terminals close when disabling/enabling mods directlly from the mods option? i often find myself having 2-4 lovely terminals in the background and it's harder to navigate through other windows using alt tabs
would have been handy just about now 
I have a patch that targets vanilla code, but smods changes that line so I have to copypaste patch with different target but the same replacement
or use regex, I guess
This is a side effect of smods. It's spawning a new balatro process but the old one doesnt fully quit so it's terminal sticks around
There's a more clean way of restartinf but it's not compatible with lovely so it can't be used
that's sad, thanks for the info though!
speaking of which, auto-restart when enabling/disabling mods or pressing R in crash screen doesn't work on Mac
this thing
hello, i was wondering about a rare use case, not sure if i should create an issue for it on github. does lovely actually work with anything other than balatro.exe on windows? on linux i can bundle a game by zipping it then doing cat $(realpath $(which love)) game.love >game and use lovely on it by doing LD_PRELOAD=/path/to/liblovely.so ./game, but when balatro is packaged with cat on windows and has version.dll in its dir, lovely prints logs during the game's startup but none of the patches take effect
That should work. Are you sure your mods are in the right spot? On windows they would be in your wineprefix's appdata. You can probably find it with find ~ -name lovely if you don't know where that is
Also if you run wine manuskly it has a different pregix then when run through steam
this doesn't seem to be working for me and i don't know why. am i just stupid?
Wrapped a bunch of money and hand level stuff in to_big() and couldn't find a way to make it crash with or without Talisman. Some of this could probably stand to be done more elegantly but ...
Talisman is not primarily a Steamodded mod and only uses smods loading for things specific to steamodded
talisman.lua is just appended to main.lua, so you would target it by patching main.lua with a priority greater than that of the copy patch that does this (that priority being 0)
for other files loaded by talisman, I don't think it follows those naming conventions
ah i see
Out of sheer curiosity, any updates on the Gamepass mod support?
This was the last update #⚙・modding-general message
I've got other things to prioritize atm (mac fixes, gamepass support) but I've not forgotten about this
peak actually
Take your time champ, we rooting for you for ya
thank you for your work
@harsh glacier can you pin this 👉 👈
Gotcha, had no idea. Appreciate it
Totally fine, it provides more context than copying and pasting anyways
at least invite links are allowed here
I mean it wasn't deleted
gamepass
experimental gamepass support. smods is probably broken so try it with DebugPlus.
MASSIVE
this one will do a better job at telling you when an error occurs (since gamepass doesn't seem to have a crash handler)
what I NEED is for people to test out DebugPlus with this
lovely is installed into C:\XboxGames\Balatro\Content and mods are installed into %AppData%/love/Mods
I tried with debugplus, debug works but it doesn't open the console with . should I change something?
Crashed at launch with these mods (Cryptic v0.5.5 and Balatro Ultimate Speedup Mod-152-v1-00-1737377317)
I'll try debugplus next
With debugPlus it launched
(I removed the cryptic mod and it's dependencies)
Have you tried using Nopeus as a speed-up mod instead or this is a gamepass test?
I haven't. Never heard of it.
Nopeus crashed the game when I openned the settings
And I don't even get a message to show you guys. Everything closes instantly
Also, what's the key to type commands with DebugPlus?
I tried my / key and it does nothing
Maybe it's because I have an Azerty keyboard?
Nevermind, it's my "other" / key, the one that looks like this "➗"
You and me, never got to make it work either
Maybe there's a setting to change the keybind?
I have tried DebugPlus and a few commands. It works well.
Did you manage to open the console? I press \ but it won't open
cool, glad it's been working. anything that depends on smods will be broken until they fix things on their end, so don't expect to play any modded content
yeah, this is a weird quirk of the gamepass version
you wont get a crash screen, it just dies
Divide key on the numpad
I thought the point of Debugplus was to get one? I didn't get one when Nopeus crashed the game with debugplus installed.
Can we detect if there is a crash handler or not
Or do we just have to hardcode that "gamepass doesn't have a crash handler, we'll install one"
you can just extract smods crash handler and use it standalone
you should just be able to take this patch file https://github.com/Steamodded/smods/blob/main/lovely/crash_handler.toml and lua file https://github.com/Steamodded/smods/blob/main/src/crash_handler.lua as is
crazy
Lovely injector was flagged as a Trojan/malware by my antivirus. Got it from the official GitHub page. Anyone else have this problem?
that's normal
it's because it's an injector
and antiviruses don't really jive with that
Preciate the help 🙏
antivirus and the web browser itself fucking yeeted my download into nothingness
no literally
- regular download: Network error
- unzipped download: Insufficient Permissions
it tends to do that
What other download options do i have left? Or is my PC not worthy of Lovely Injector?
You just need to temporarily disable your AV when you download Lovely, install it into the Balatro installation folder, then whitelist the file or folder so that the AV doesn't delete it when you turn it back on again.
i haven't tried disabling AV with an unzipped download yet
nor have i even tried disbaled AV using any download method at all
i'm gonna try later
why is this happening
This is unrelated to Lovely, but due to an issue with Cryptid 0.5.5.
Try updating Steamodded to 0315b specifically
ok thank you
is there xbox game pass support?
somewhat. you can find it in the lovely discord
lovely itself works fine but mod support isn't very consistent
@spring garnet
@frank birch ^^ feel free to join the lovely server as well
it would be a better place to chat about your pr and general dev stuff
i cant extract the verison dll. it says i need administration permission but ti snot giving me the promt to input my passowrdD?
no mac binaries yet because the CI is broken

+ added good thing
- removed bad thing
I should make that my next changelog
- Mac can patch smods loaded stuff properly
- module patches without load_now now ignore the before (Its now optional) and are just always accessible. Allows moduels to be loaded in threads without specifying multiple patches
- the lovely module is now always accessible. Allows it to be accessed in threads and also when restarted using loves methods
- print now works in threads
- no longer panics if an extensionless file is in the lovelt folder (I think)
rested-in-peace mac users waiting to be revived
Once I get home from work I can make a Mac build
me using Lovely-integrated LuaJIT: I am 4 parallel universes ahead of you
(The lovely integrated build doesn't have the new module patches IIRC)
at least I don't have to use that immediately, my last mention of it in lovely server really sucked and there already existed a non-patch solution
the Mac fix took a ridiculous amount of effort to fix
it doesn't seem like it after the fact but man, that sucked
Mac builds uploaded to release
@solar pebble I didn't promote it to the latest rleease idk what your process is
They could probably have some more useful description (like #1214591552903716954 message) but are fine
tweaked it a bit
cool, https://github.com/ethangreen-dev/lovely-injector/releases/tag/v0.8.0 is out. read the release notes for details.
I've also updated lovely on thunderstore
and it should be available in BMM
uh
lovely crashes when using --dump-all
and just stops responding when not using it
ehhh, it's probably caused by some mods 💀
I ran again with only smods and it's totally fine
sucks to be backward incompatible
it should be backwards compatible. install 0.7.1 and see if that crash still happens.
uh............
you have a mod which is trying to apply a two part patch, and only one part is succeeding
there's a reasonable chance that the mod in question has an update which fixes this
method 1, you can manually disable mods by creating an empty file named .lovelyignore in their folder, so do that one by one until it stops crashing
method 2, look near line 489 of functions/common_events.lua in your lovely dump for anything different from vanilla code and search the mods folder for .toml files containing a relevant string
method 2 is usually faster but it has more things that you have to know how to do
yeah that'd do it :v
so ive tried to delete all my mods whilst still having lovely, but whenever i check my deck ingame i get this crash
any suggestions?
This is probably caused by you removing all of your mods, not by Lovely. You'll need to figure out which one it is by readding them one by one
Start with smods, obviously
ok
but i want to be able to still get achievements
which i cant do with any mods i think?
so im trying to completely reverse it to its vanilla state
@solar pebble forgot to ping
smods has an option to re-enable achievements iirc
you can run LOVELY_MOD_DIR=$(mktemp -d) Balatro.exe to launch the game in "vanilla mode" without having to delete version.dll or temporarily undo any of lovely's setup
unfortunately LOVELY_MOD_DIR=/dev/null results in a segfault
this is gnu mktemp, might be different on macos
I believe adding --vanilla works
i should've just read the docs😔😔
--vanilla panics and segfaults for me
$ nix run /home/misc/work/ana/balatro -- --vanilla
INFO - [♥] Lovely 0.8.0
INFO - [♥] Running in vanilla mode
ERROR - [♥] lovely-injector has crashed:
panicked at crates/lovely-core/src/lib.rs:470:75:
called `Option::unwrap()` on a `None` value
ERROR - [♥] lovely-injector has crashed:
panicked at library/core/src/panicking.rs:225:5:
panic in a function that cannot unwind
thread caused non-unwinding panic. aborting.
Aborted (core dumped)
on 0.8.0, built from aec360bd8ca86da8191852f469fae4b2940d10f9 (current master HEAD)
it's a nix cli thing yeah
otherwise nix would consider vanilla on option passed to it and fail because it's unrecognized
i can try to repro it on mint or sth
if convenient. the arg parser needs to be replaced, it's been causing issues
was able to reproduce it on mint and arch, without any nix packages or nixos non-standard fuckery. so it's probably a linux wide issue (?)
$ wget --progress=bar:force:noscroll \
https://github.com/ethangreen-dev/lovely-injector/releases/download/v0.8.0/lovely-x86_64-unknown-linux-gnu.tar.gz \
-O - | tar -xzf -
# -- irrelevant output --
$ LD_PRELOAD=$PWD/liblovely.so ./love-11.5-x86_64.AppImage Balatro.love --vanilla
INFO - [♥] Lovely 0.8.0
INFO - [♥] Running in vanilla mode
INFO - [♥] Lovely 0.8.0
INFO - [♥] Running in vanilla mode
INFO - [♥] Lovely 0.8.0
INFO - [♥] Running in vanilla mode
ERROR - [♥] lovely-injector has crashed:
panicked at crates/lovely-core/src/lib.rs:470:75:
called `Option::unwrap()` on a `None` value
ERROR - [♥] lovely-injector has crashed:
panicked at library/core/src/panicking.rs:225:5:
panic in a function that cannot unwind
thread caused non-unwinding panic. aborting.
Aborted (core dumped)
(my nix package runs native love, for other distros i used the appimage since it was already there in the drive shared between VMs)
same error with arch's love-11.5 package, except no repititions of "Lovely 0.8.0" and "Running in vanilla mode"
$ LD_PRELOAD=$PWD/liblovely.so love Balatro.love --vanilla
INFO - [♥] Lovely 0.8.0
INFO - [♥] Running in vanilla mode
ERROR - [♥] lovely-injector has crashed:
panicked at crates/lovely-core/src/lib.rs:470:75:
called `Option::unwrap()` on a `None` value
ERROR - [♥] lovely-injector has crashed:
panicked at library/core/src/panicking.rs:225:5:
panic in a function that cannot unwind
thread caused non-unwinding panic. aborting.
Aborted (core dumped)
Ah, this is probably due to a logical error in how we setup the lovely rt when mods are disabled.
Line 470
It looks like inject_metadata is still being called even in vanilla mode, which refers to self.loadbuffer, which hasn't been properly set
I'll get a PR up for this sometime this weekend. How pressing is the issue?
IIRC you can also try with --disable-mods. (don't ask why they both exist)
doesn't disable anything
and the issues isn't pressing at all, i have my LOVELY_MOD_DIR=$(mktemp -d) hack anyway
ok!
thanks for the report. I rarely use Linux nowadays (not by choice) so I never would've caught this.
i read through the code too, is adding patch_table = Default::default().with_loadbuffer(loadbuffer); a fix? i can make a PR with that if so
(of course ill test it, but just wanna know if initialising something to leave it unused is ok here)
patch_table = not loadbuffer =, was a typo
argument parsing is such a mess in lovely good god
the correct solution here is to (inside of lovely-unix) check for the --vanilla flag and, if present, immediately return from the ctor function.
if args.contains(&"--vanilla".to_string()) || args.contains(&"-v".to_string()) {
return 1;
}
that is a sufficient hack. we'll likely redo it when we get around to refactoring arg management
made a pr, it's done like the screenshot beacuse otherwise it PANIC: unprotected error in call to Lua API (attempt to call a table value)s
the pr also includes the nix package and dev shell i build & modify the project with
(the otherwise in question is when i tried RUNTIME.get().map(...).unwrap_or anything)
Heya Meth (or whoever else can answer this question), what's the lovely-x86_64-unknown-linux-gnu.tar.gz release for? The manual instructions for proton/wine specify the user should get the windows version
Possibly for other Love2D games with proper Linux builds?
Ah. Yeah that could make sense
or if you run balatro natively
But nobody's actually doing that, right? (this is for me rewriting smods' install instructions)
Of course you do. No need to add it to the install instructions though right?
yeah it's fine
i do too👀
my server does 
(lovingly)
modding on non-steam is disallowed by #📜・modding-rules
(btw)
well just non-pc
yeah but it implies the official windows & mac builds
not really
also running the offical build with a native engine is still the offical build
definitely counts as the official build yeah
to be fair old steamodded literally modified the build
there's no rule against modifying the builds, ive always taken "only PC modding" to mean don't port to or pirate mobile
but it's non-specific enough to include linux although noone cares about that
I'm having an issue where the lovely window isn't popping up. I'm on a mac (os15.6) and am using these instructions https://github.com/Steamodded/smods/wiki/Installing-Steamodded-mac . I have it placed correctly in the in the same folder as the application and am using terminal to start the game. any help would be really appreciated!
Lovely does not have a window on macos, that seems to be a mistake in the guide. You should see a bunch of lines in the console that look vaguely like INFO - [G] XXXXXXXXX
thank you!
Ah shit, that's my bad. Would you mind updating that part of the mac guide Wilson?
I can also create a PR, but I'm still very unfamiliar with how modded balatro works on mac
I updated the main parts but the troubleshooting stuff nerds to be redone still
Am.on phone so I'm not doing it now
thanks
yeah will still need to update the common issues section to remove all the stuff about "second window", and preferably have the full error message when lovely fails to find balatro (I have no idea what happens in such cases)
I've got some problems with lovely where it has an error going in every game I try to launch, any ideas on how to correct this ?
Try this
then remove/rename version.dll file in that folder
(if you are trying to remove lovely)
Having problem with setting up Smods
good mod
lovely patch viewer/debugger thing. test it
just gives you a nice way to tell how the patches applied
Updated with more fun changes
another set of test binaries
lovely virus?
New update, not super functional but I mainly want to hear about performance in the project scope
big chunky timeline viewer
navigation is pretty messed up still but you can sorta navigate it righ the arrow keys
current iteration
fixed a lot of bugs by making the internal timeline authoritative
it's starting to work well I think
hi yes
oh hi not sure if this is the best place to talk about it but we were kinda not sure about the android pr as we have some other methods now and some other stuff
Mostly was wondering
- how would this be distributed (would it just be have to build it from source?)
- does it make sense for us to have several techniques for android?
it might make more sense to continue this convo in the lovely discord
https://discord.gg/9pBx24eY
idk whats happening here
Oops! The game crashed:
Syntax error: card.lua:1461: '<eof>' expected near 'end'
A bad lovely patch has resulted in this crash.
Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0827c-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.8.0
Platform: Windows
Stack Traceback
(3) C function 'function: 0x147b2ed8'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 896
(6) global C function 'require'
(7) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x147b8808 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x147b8ce8, gammacorrect:false, title:Balatro, externalstorage:false (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(8) global C function 'xpcall'
(9) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(10) global C function 'xpcall'
(11) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
it was fine a few hours ago thats whats bugging me
you updated something
one of your mods was relying on some piece of code for its patches, and some other mod has changed it
i might need build instructions on linux
fixed it
-# nix fixes this
all my friends moved to nix except me
the AUR fixes this
Can I get a link to the Lovely discord, please, the one above expired and I'd like some help with the SDK since I'm trying to troubleshoot a paperback Beta/Cryptid crash.
@onyx coyote
mmmm
The placeholders should behave the same no matter what quotes users use
(I just made this release to get this thread pinned again)
sweeet, does the mobile version apply the patches at runtime? there was a workaround to get mods working by using the generated dump files, but i'm guessing the patches can actually be applied when running it on the device now
is there a wiki for this cause i may not know everything that exists
eg i learned about patches.regex by looking at a different mod 😭
also whats the difference between dump and game-dump
game-dump is unmodified, used for a tool ethan was working on
the readme is the docs (although we haven't updated it for 0.9.0) (it does have regex patches though)
oh okay guess i didnt read it all the way
should be updated fr fr tho
hm my lovely's on 0.9.0 but when i try lovely.reload_patches through debugplus it doesnt work... may need to be inside of a patch or mod file? idk
should i like make an issue on gh abt it i lowkey have no clue tho
wait- yoooo [filename].lua.json shows what file patched what!!
require"lovely".reload_patches
ah I’ll try that
@twin bluff pushed hard for this feature, thank him for it :P
w feature!!!
wait until you see what I plan to use it for
how would it be used for a mod if its dynamically generated?
or at least thats what i think youre gonna try to use it for
also uhhh how would i use this panic!("something") function, it says its a syntax error when i try... im trying using debugplus and the error it's giving is Syntax Error: '=' expected near '!'
oh my god 😭
I was just joking around in the release notes, that's not Lua
😭 😭 😭 😭 😭
bro...
Ethan doesn't actually write lua so he doesn't know how to throw an error
lovely is written in rust
weird rust-lua hybrid when 😭
imagine if someone made a smods api for DLL files and then you could just use whatever language you want as long as you knew how to use the api
I mean you can use the lua c api to interact with smods and then you just need a lua file to jumpstart your shared library
although then you also need at least 3 compiled libraries (windows, macos arm, macos intel) and probably more since people often use linux (arm and x86) and forbidden devices
You have a updated link to the lovely discord?