#UserK thread
1 messages ยท Page 2 of 1
who set it to true?
it called spawn_fn
why are you using spawn_fn to recursively call??? yeah if you bypass the recursion you bypass the recursion
that seems a useful thing to do
yeah you can but you should probably set recursion yourself, maybe i should add it to global so you can manually control that stuff
this is a useful thing to do and also the design is just bad even ignoring the issue
or you can get rid of the recursion value
and have seeded and unseeded variants
theres already a method to make a nested table system, if you want it in a function why wouldnt you just make your own logic?
load_entity_from_list is what you're intended to use
then you would presumably want to make your own function for this????
say i want to load 3 things from small_enemies and 1 from big enemies
if you just dont design the api in a bad way it works perfectly fine
why are you spawning enemies on item pedestals now????
ok small_reward and big reward
this is why i was hesitant to ask you for help on this ๐
global mutable state like this just isnt a good idea
i dont know why you wont just do things the obviously better way
i was gonna change it cuz you made a good point about wanting to not have it seeded potentially but honestly i think im done im just gonna leave the script as-is
its functional and thats all i care about fn
i mean it doesnt work right but whatever
it works right for 99% of standard cases, to my knowledge that 1% doesnt exist yet, so i dont care enough to put up conversing further about it to resolve a currently nonexistent scenario
doing it correctly is easier than the way you currently are
and publishing a library with known easy to fix bugs is just silly
people dont want to debug the library not working
hence why im deciding to not release it, at least rn
im just gonna use it for my own internal CC purposes
also i imagine by the time someone actually encounters that issue, they would be able to explain it normally
?
likely they wont notice
because it just silently does the wrong thing with rng
so you end up with a vanilla chest situation or w/e where a lot of outcomes just arent possible / have altered probabilities
dont forget to make it all 1 line
to fix you just gotta remove the space after the comma, so something like "quality of life,cheats"
(you can tell if a tag is invalid btw bc invalid tags will say "Tags: " before they're listed)```
geh cant pin msgs in my own thread, wretched
just add it to moddev bot or smth
i dont think i have faq perms lmao
and i wanted to keep it pinned so i could post it in workshop comments- though FaQ would be convenient
.workshoptags
tags in the workshop.xml file should not have a space after the comma, this makes the workshop fail to recognise those tags as it will read them as having a space before the tag, you can see this in how this steam page displays the first tag separately from the invalid ones, just a heads up o/
to fix you just gotta remove the space after the comma, so something like "quality of life,cheats"
(you can tell if a tag is invalid btw bc invalid tags will say "Tags: " before they're listed)
neato
tell discord to add a permission to let people pin things in their threads
ill just do that whenever i need to grab it to paste in some mod desc
yeah it would be nice if discord allowed that
just mod the modders
faq
did i really never catch that one? im sure i wouldve checked graham's things among other top mods
oh?
yeah steam is weird its the other way around
makes sense for grahams perks 
yeah thats really strange
โ
as the faq says, the incorrect ones are the ones listed under Tags:
idk all invalid tags seem to go under there- i assume its intended, just somewhat unintuitive
.workshop apoth
Apotheosis is a massive content mod which expands upon EVERYTHING.
134 new enemies!
6 new bosses!
84 new spells!
7+ new biomes!
18+ new materials!
New Endings!
Perks, Items, structures, Secrets, Music, and more!
creatures, perks, spells, gameplay, audio, biomes, bosses, graphics, items, funny, alchemy, total conversions
Conga Lyne
68901
like Tags: refers to custom community tags, and then the actual tags are not listed as anything cuz they are maybe moreso designations? idk steam weird
apotheosis is correct
.workshop graham
This is an entirely cosmetic mod that allows (nearly) every enemy in the game to speak by displaying text above their head!
All enemies have their own unique lines of dialogue, and they'll react to what's going on around them.
There are tons of unique interactions to be found and explored!
...
quality of life, graphics, Funny
GrahamBurger
11938
.workshop graham things
Funny
Update 1.5 - the FINAL MAJOR UPDATE?
Check the wiki page for changelogs and a full mod explanation. (WIP!)
(Steam might get mad about this link, so copy and paste it into your browser.)
https://noita.wiki.gg/wiki/Mod:Graham's_Things
...
perks, gameplay, spells, alchemy, items, streaming integration, quality of life, creatures
GrahamBurger
11177
noitabotti knows
if you click the borked tags it searches correctly but that mod doesnt show up
lmao i did inform him before
because it can't stringmatch
he just forgor
this is surely a steam issue
not sure frankly
enemy dialogue also incorrect
nah its convenient for community tags
i tag CC with X translation for the langs we support
which you can't search?
p sure you can
try it, idk
on one hand this should probs be fixed in the nolla workshop uploader
report it or something
on the other hand this is really funny
lmao the double snail tag
yup
i saw fairmod had incorrect tags earlier this year so i added correct ones :D
ps @jaunty eagle i was just thinking i might spread this standard to apoth, i assume you dont have an issue?
no dlc tag?
Oh that makes sense
truee
Apoth already has the workshop page translated into different languages so it would make sense to throw the relevent tags up too
ill throw that in a pr rq then
kaay
i still lol at the fact that apo confused cat and dog in jp translation
Remember to include English
or smth like that
i don't remember if i fixed it or left as meme
i hate my country sometimes
Oh right
genuinely not allowed to view any image in workshop descriptions lmao
just move to ireland brub
I think I made a PR uploading the workshop pics to github
And I'm pretty sure steam supports that
Let me check
if it does im 100% stealing your method for CC
kaay
Does the 2nd image load for you here?
https://steamcommunity.com/sharedfiles/filedetails/changelog/3032128572
top image is imgur
bot image is github
W
genuinely baffling how our government did this and then refused to even consider backing out after we got over half a million signatures asking to repeal it
is it?
i vaguely remember hearing about it
hold on
The software development platform GitHub has been the target of censorship from governments using methods ranging from local Internet service provider blocks, intermediary blocking using methods such as DNS hijacking and man-in-the-middle attacks, and denial-of-service attacks on its servers from countries including China, India, Iraq, Russia, a...
open source bad
thats true
huh
well, you can still use direct steam url
this is 2019
What do you mean?
upload to steam
In all of these cases, GitHub has been eventually unblocked after backlash from users and technology businesses or compliance from GitHub.
I think I remember trying that at one point but I remember it not working
but it will clutter the screenshots
it seems like github is not blocked it any country rn i think
i suppose you could make the change and then see if anyone brings up issues with the images?
some govs are stoopid, what can you do
Oh, it works, I'd just need to upload to the artwork tab prooobably
idk if you can use your own screenshots
it would be convenient
am not guru in steam
It looks like I can use any random steam screenshot/artwork
i think github should work and would probs be easier to manage, but if it works it works
ill probs switch CC to use github until i hear about it causing issues
I think github might be the most reliable image host available, apparently the version of steam the rest of the world uses isn't accessible and only a special version of steam is in china; and I imagine no country would want to block github for long
huh
did i make a mistake?
I think it'd be easiest to understand for native speakers if the translations were written down as they would be in their native language
mmm thats fair
I think the message can be gotten across without adding translation onto each language too, but that's more just me
thats a good point, ill probs ask CC translators for tag names later
mmm i just felt X translation better clarified
if its considered too wordy it can be removed
though do lmk
I could see it going either way honestly
geh
graham's things doesnt document its github anywhere
not on steam desc, wiki, or #1020421214176551033 post
wasn't it private til recently
huh.. I don't know if graham uses github
or he forgor again
I'm having trouble finding him on any other noita projects, I would've thought he'd make at least one PR to something like fairmod
ah, im confusing with advanced inv
Found it
@hasty solstice https://github.com/GrahamBurgers/grahamsperks
what. Contribute to GrahamBurgers/grahamsperks development by creating an account on GitHub.
W thx

lovely lmao
pft
ah wait i already had it grabbed whoops lmao
oh yeah i was gonna look over how they spawn today
im planning on making a list of biomes and the bubbles that spawn for each, but then got sidetracked by all this lmao
huh
ill finish this up, then finish up bubbles and then work on the thing i wanted to add to CC
Alright
I'll look over the github pr in the morning since it's half past midnight; there's no issues with it but it's an excuse to let you mess with things if you end up changing your mind about stuff while I'm in bed
sure ๐
after i add the feature im gonna ping the translators so they can translate the untranslated stuff in CC and ill ask them for translation tag names when i do that
fuck i have a question about the bubbles but i think conga's already gone
im just gonna collapse the bubble spawns into one type rather than big vs small enemies i think, ill make bubbles big probably
Some biomes only have a small enemy spawn group & heaven has an entirely unique pair of spawn group names
interesting, probs doesnt affect much for what im doing tho
Hey @hasty solstice, while you're doing apoth compat on CC's end, you can gsub in light oil & heavy oil from CC into these two files to have those materials work with oily material hex
what is this doing?
if its providing heavy/light oil there probs isnt much of a point
if its for detecting them tho it makes more sense
Ah right sorry, this is a status effect which causes the victim to take damage from oil & oil-like substances
yeah
It's for detecting the liquids
oooooooooo got it yeah ill go ahead and do that

you can thank me userk for not letting conga incidentally make this a lil harder to append to ๐
I remembyered the one mod that adds an oil variant to the game
maybe now the industrial hex spell will finally see some use!
-# ...probably not lol
would "Grease" make sense here perhaps?
Probably
yeah probably
got it, thats a mat that would show up significantly more often than oil lmao
mmm, mildly wretched appending, may take a look at apoth code tomorrow to see if i can make it slightly more coherent to append to while making it still work well on its own
oh apparently i forgor to make a pr for my minor utils improvements
i got sidetracked by someone playing fairmod for a good chunk of today so ill do the bubble stuff and whatnot hopefully tomorrow
I wonder who that was..
i wonder lmao
now leave me as i go and post completely unrelated mamumimi fairmod clips in #1293148865943310388
hm, would checking for the Oiled status with GameGetGameEffectCount() not be more ideal?
i think that function didnt work right with children?
Likely what Nathan said, I don't remember why I chose my method but remember using it for a reason
it only checks direct children of the entity
not all children
so if you hold kiuaskivi or whatever it wont detect that if you call it on player
CRITICAL_HIT_BOOST in projectile shooting function seems to be the only engine code that uses the same approach
Lua::GameGetGameEffect does it correctly
Goot it
maybe document that?
i came up with new Parallel Parity feature creep so maybe this time i can actually finish the mod
after i finish bubbles stuff for apoth
writing it down so i dont forget, 1: see if i can say which PW we're in on the "Entered West/East XXX" like "Entered East/West [biomename] [distance from MW in PWs]"
2: spawn return rift on entering a portal back to Main World from a PW
Healthy Exploration stocks rising
"entered biome" is hardcoded
can we not interrupt the GamePrintImportant call? its engine?
well, it's not called from lua side
yeah thats what i meant
have to go unsafe for it
GamePrintImporant is just an easy way to refer to godprints
then i remembered godprint
well assuming it counts as a new biome (new biome name) each time
thats a shame, wouldve been nice to mess with
is East Desert considered diff from Desert?
delete the different biome names and implement them in lua
!!!!!!!!!!!!
what would this entail actually?
i probs wont cuz i think itd break compatibility with mods that rely on it
but if not for that i totally would
for child = each child in biomes all edit file child name = "NONE"
and then in the biome entered script you just print
yeah the latter part i guessed, mmm yeah it sounds like itd break things
doubtful
what would it break
better idea: change the Entered: translation to be blank
it will break scripts that tracks biome names
e.g. healthy explorer
for blank translation it probably still will show the window or just throw errors
and also mods might get biome names for stuff by, yknow, grabbing the biome names?
just use my mod to track pos ๐
i know I sure do
the results might be amusing though
true, but breaking any sort of compatibility is something i really wanna avoid with Parallel Parity lmao
rare instance of nathers ignoring any sort of mod compat :o
ill probs leave the PW number logging on biome enter in the todo under "Technical Limitations" in case a way to circumvent this is discovered/implemented in the future, or if i choose to get into unsafe modding proper
uh oh, wheres my feature creep list for parallel parity
its either not pushed to github yet or i failed to properly write it down
ill check my local build when im on my computer just to make sure
didnt think it would break things ๐
pre-release
- making Summon Portal questline stuff work in PW
- mod support
- get mod settings functional!!!!!!!!!!!!!!!!
post-release - better Spatial Awareness PW counter
- Moon Radar works in PW
- Return Rifts on entering portal from PW to Main World
- Shadow Kolmi
- Shadow variants of other bosses
this should be p much my entire todo list of unimplemented features
the kolmi from deep end
bosses in deep end are goofy, if you dont kill some other boss before some stronger boss, its literally impossible to kill the stronger boss
how literal is this literal?
easy: you dont get sampo
its not super important cause you could end up duping sampos anyway
yeah, but also shadow bosses arent gonna grant any rewards, in order to be in-line with vanilla
though i might add a mod setting to toggle quest rewards from a few so that you can like, recover the key if its destroyed or smth like that
alchemist is already in pw
specifically thinking about how easily people destroy the key
the issue is the machines cant be used multiplle times correctly
yeah, this is based off of Alchemists and Wand Connoisseurs- or do you mean regular alchemists spawn in PWs?
if thats the case ill need to think about what to do about that
hmmm, bizarre noita bug, ik qol fixes that but i probs wont, users can rely on qol mod to fix that
@jaunty eagle back to working on bubbles, do they always have this as their progression icon? if so, might be better to instead have a white bubble since we intend to use potioncomp to recolour them based on material rather than having forced preset sprites (will throw in an option for custom sprites btw in case any need it)
then that means the default material is milk
They always have this as their progression icon, I'd like the icon to be a recognisable bubble liquid like acid or freezing liquid
hmmm fair enough, ill leave it then- i actually was expecting acid and was concerned changing the icon would be unavoidable but it seems it doesnt derive this from the SpriteComponent so i should be able to change this without changing the progression icon
๐
ill make a white ver of acid bubble rq assuming there are no plans to make new sprites
None
well even if there were it wouldnt matter now that i think about it lmao
NOT IF IIII HAVE ANYTHING TO SAY ABOUT IT...!!!!
.......which I don't particuarly...
one of the sprites I shall hold off on due to its age in the mod...
back to working on bubbles, oooo potion comp seems to read from material inventory by default, that makes sense and is very handy! dont need to actually do any data setting at all
mmmm colouring looks good on this fn imo, feel free to tweak
@jaunty eagle the only difference between acid bubble and acid bubble GC is this script marked as DEBUG/GC_Test.lua, should these be included in the bubble pool? if i get everything else out the way first before you're around ill add them and just wait to hear if i should remove them
The GC acid bubble is used for some NG+ & hardcore biomes
noted
geh, distractions, the eternal enemy, will surely get back to bubbles tomorrow (tomorrow being today, it is currently 6:34am im sleeping first)
geh okau
test
hmm, idk if these are going through, device is struggling to load discord stuff, its being very slow on loading lmao
geh
loaded now
everything sent after it loaded, thank you discord, how helpful
anyway okay i think im gonna put in an effort to release Parallel Parity this week
ive been sitting on it for some 8 months now, basic functionality was written and working within a week, i had the mod useable withing just 2 or 3, since then i have rewritten it to be much better but the gaps between me working on it grew exponentially greater with each commit, im gonna try to wrap up this long-overdue release
here is my list, i can probably throw Return Rifts into the release- a nice bit of feature creep to better interest me in the project once again
i might give up doing a clean version of summon portal compat and be less reserved about the parts i rewrite
idk ill take another look at it, the main thing that absolutely needs to work for release is mod settings, i couldnt find a clean way to do mod settings in the lovely modular way i liked so ill just half-ass it fn and i can clean it up some other time
then mod support should be simple? i just need to move around some stuff into specific function calls, need to find the last point in init _pixel_scenes.xml can be modified, likely whatever is directly before WorldAndMagicNUmbersInitialised
ill run some prints in every known init call and then try putting my script at diff points to test where it does or doesnt work
then i just need to support appends letting people import pixel scenes, portals, settings and world-scenes identities
i believe you can GetFIleLuaAppends, i wanna see if i can append another mod's init.lua mid-init and then get them through ModGetFileLuaAppends or whatever and iterate over them to get return table[] data from them
if so that would be a very clean way to get file appends without needing globals here or needing to extend into multiple other files
geh i do have some CC stuff to handle first later tho
as per usual, game breaking bugs are causing issues, need to fix toxic mists causing nullium floods, probs modify toxic mist mat to not inherit reactions, then rework material projectile caps and add some more caps to materials that lack them, and fix the setting tooltip too
those should be quick fixes tho
geh okay ill do the CC stuff when i get home, then ill boot up Par and refresh myself on it and where i last was
how does this even happen... (highlight bits are 4 spaces while non-highlighted are proper tabs)
working on par now!!!
it doesnt really affect me enough to care lmao
im just surprised at the spottiness of the tabs and one of them has space tabs sandwiched between
what if whoever did the copy paste used tab=2space
theres only one person working on this project 
or if you're theorising ways this happened
i did the copy paste but it was nabbed from elsewhere, but im not sure if thatd really cause this? if it could id need elaboration lmao
like all i wouldve nabbed was the nxml.new_element(...) part
regardless this would never happen if you used a formatter
this will not affect my decision to use an autoformatter
man i love college computers, i got firefox installer on my global desktop so i can install firefox on whichever one im using, the other students here already installed steam and they're game design computers so VSC and GitHub Desktop are already installed, instant 5-minute modding environment setup
modding environment mostly set up, but time is up so ill go home, perhaps ill finish up and make use of it next time i have time to kill here
noitabotti should ping me every time chemical curiosities is mentioned ๐
noitabotti should ping me every time worse enemies or Spoop or spoopy the word is mentioned
true!
summon portal stuff is done now
next is... mod. settings.
Mod settings are for tomorrow me
Eating crepes and going to sleep is for today me
Note to self, do not let sis cook, batter was whack and there was barely enough left for me
Whatever, itโs enough to tie me over until morning
lamia sent it and it has a nice minimalistic thumbnail therefore i should watch it later
later.
true information
motivates early returns and continues
things i suggest might actually have a purpose ๐คฏ
I am better at building pyramids than the ancient egyptians
Peak lmao
Same indentation level! Yeah honestly I was always reminded of your code whenever I saw how indented Par is lmao
geh okay need to write my thoughts out rq
so rewriting Cloning effect from CC
i need to check how many clones the owner has spawned
then based on who the owner is, dont spawn more based on the owner's cap
should check this by every time i spawn a clone for an enemy, i add the clone's entity id to a string list on the aa_clone_origin_data varcomp
then to parse the data i separate at commas and run EntityGetIsAlive(eid) for each one, tally up the total number of clones, and then recompile the data back into the value_string on the varcomp
okay yeah then i can cancel at whatever part of the code i desire if the cap is reached, and then throw into the CreateClone function a bit that adds the new entity to the aa_clone_origin_data varcomp
this looks good enough
--[[@as entity_id]]
tose this is very sus
entity ids in strings is almost certainly a bug
eids in csv or smth
oooooo i was wondering what it was for that, i tried ---@cast but that wasnt correct, got it
why not make the function take a table
it looks like you are kinda trying to use a state monad
so this is just a table but awful
write a filter functrion
its the correct abstraction here
local alive = functional.filter(entities, EntityGetIsAlive)
is what you could write
?
i need to store the entities on a value_string if thats what you're talking about
this is a bug
eid vsc
and even if it wasnt a bug the correct way to do this is turn it into a table immediately
"this is a bug" what is? i dont quite see what the issue is
this stores up to 14 entity IDs but if one of them is dead, it doesnt bother counting it
it seemed to work just fine
the bug is restarting
the entity ids will stay
but what they point to will change
oooooo
well then the clones will probs just disappear in a few seconds on restart so i dont think this is really that concerning
?
well, not a few seconds, but less than a minute
the issue is that its random entity ids
it could end up being anything
its a pretty big issue
hmmm is it? we dont do anything with the eids we just check if they're alive
why do you check they are alive?
to set a spawn cap, it sounds like all this could potentially do is decrease the individual spawn cap of a single entity
cloning solution tries to spawn a clone of its target entity every 9 seconds unless it already has 14 clones
theres also a separate check to make sure theres not too many enemies nearby in general just so things dont get out of hand
you could store the frame you set the thing on
what would that do for me?
and also store the last frame restart in a global
and if its bad then you invalidate the list
because your data is completely invalid
it sounds like if the game restarts, the eids are likely to be invalid, and if theres a chance they are valid (likely connecting to the wrong entity), worst case scenario is the cap on clones is lowered for the clone origin as long as the incorrect eid entities live
i can fix if its not too convoluted but i feel it isnt as urgent as you seem to be making it out to be
order of init funcs (and the obviously the latter 5 are not part of this)
btw OnPausedChanged() doesnt seem to be able to trigger more than once? or at least i cant find its condition, it triggered once when opening the pause menu, it doesnt trigger again for me when going to other menus, resuming and repausing the game, going to the gif recorder or opening the inventory
idk what its supposed to be other than a "The game has been paused before" check
it runs when you press escape basically
yeah idk i couldnt see it at all before, but i do now
local init_func_names = {
"OnModPreInit",
"OnModInit",
"OnModPostInit",
"OnMagicNumbersAndWorldSeedInitialized",
"OnBiomeConfigLoaded",
"OnWorldPreUpdate",
"OnWorldPostUpdate",
"OnWorldInitialized",
"OnPlayerSpawned",
"OnPlayerDied",
"OnPausedChanged",
"OnModSettingsChanged",
"OnPausePreUpdate",
"OnCountSecrets",
}
Count = {}
for _, func in ipairs(init_func_names) do
_G[func] = function()
Count[func] = Count[func] or 0
if Count[func] >= 9 then return end
Count[func] = Count[func] + 1
print(("||||||||||||||||||||||||||||||||||||||||||||||||||||||||| "):gsub("|", Count[func]) .. func)
end
end```
tf
just posting code in case i need to verify smth or smth like that in the future
i think ill want to use OnWorldPostUpdate or OnWorldPostUpdate depending on when pixel scenes are defined
wait no am stupid
probs OnBiomeConfigLoaded or just before it
OnMagicNumbersAndWorldSeedInitialized it is then, that seems to work and is likely the very last point in the code
i could do some hax to ensure par is the last mod to do OnMagicNumbersAndWorldSeedInitialized but i dont think thats worth it
ig ill say in case i need to use this for smth similar in future- hax would be go over ModGetActiveModIDs, get last mod in the list and append its init.lua, since its the last mod in the list their init hasnt been run yet so its probs not yet cached meaning i could theoretically append it and ensure my instance of OnMagicNumbersAndWorldSeedInitialized runs last, but thats def overkill here
geh ive been dancing around it for too long, but mod settings are immenently awaiting me
okay im going to completely redo my settings from the ground up
ill keep the 2 tables of mod settings since thats just data i can edit whenever i want, im going to completely delete the settings renderer and decide if i need to delete the cacher
i will surely do this today
finally actually working on it
ended up not redoing the entire thing
it was mostly functional just needed to patch a few things up
geh why is the string down there??
i think the mod is p much done as soon as i get this DrawTooltip option working
this isnt good, the offset is relative to position on-screen
@pallid magnet lamierrr do you know why gui funky? :(
i cant tell why this isnt working (values in GuiText were an attempt to resolve the offset issue but the offset isnt static so rip)
mmmm i feel like i ping nather too often, lamia's offline- perhaps they got a funky timezone and are sleeping, and idk anyone else who does GUI stuff
@wise anchor gram do you know any gui wizardry?
Define wizardry...
all of my GUI is made with hopes and dreams
this
gui is offsetting the text by a weird amount
mmmm its weird that it happens regardless of the 9piece
oh?? i think i might have it
i might be very stupid sorry for ping
okay i see, this is weird
i got it now i think, GuiText needs its coordinates to be absolute static, around 0 ideally, cuz its position is already relative, but for 9piece i need to provide the relative position because it is absolute
still weird tho
Oh yea that is weird
sorry, I can't comprehend code well enough at work to figure things out
yeah im trynna do smth else now
issue now is the tooltip pushes stuff down, i dont want it to interfere with the other stuff as it should be rendered on top
but using GuiOptionsAddForNextWidget(gui, GUI_OPTION.Layout_NextSameLine) causes the newlines in the text to break (which btw im p sure is a bug?)
this is so close to working
id rather not have to manually linebreak but i might have to
lamia if you see this pls ping if you know a fix
okay this works, but now i cant get this to be outside the mod settings window
GuiTooltip can go outside it but idk how or why
You can just set the z really low, right?
thought itd be IgnoreContainer but that didnt seem to do it
i tries -2k, should i go further?
lemme give it a go, but its behind the bg which is surely really positive
Or put it outside the GUI layout, though that probably causes different issues
i wouldnt know how to do that nor know how to resolve ths issues itd cause
z of -20k doesnt do it so i dont think any value will
GuiLayoutBeginLayer and GuiLayoutEndLayer
maybe use GuiGetPreviousWidgetInfo to get the absolute x/y and then just place this guitext there
nah i got it

i just switched to using relative position
was inputting absolute position before cuz GuiText was naturally applying the relative in post, but it doesnt now that its on a new layer so i just need to put in the same position i use for the 9piece
Ah, makes sense
anyway fuck yeahhh (shit works)
Parallel Parity is now officially feature complete
just need to make a workshop page and whatnot rq
oh right, mod support
thats p important lmao
Very good
i think settings creep is done, im gonna go implement Return Rifts now and then work on workshop page
ah, spot the typo
file oops
maybe you should make that file autocomplete plugin i made but good
it would fix this
also require is a winner
i think defining it is a great idea
im not dofiling here for global stuff or anything im dofiling here to just run a diff file cuz main init is getting messy and i wanna have return rift stuff in its own thing
and maybe but probably not anytime in the remotely near future
?
require is just dofile except your lsp oesnt hate it
or do you mean run it every time?
Oh okay I thought the point was to grab global variables and whatnot, ig running code would also work tho
But also it literally doesnโt affect me here
also why would you ever use globals?
Since no values are being passed between the files here
Cuz weโre sometimes not given much better options
idk if globals are ever a good idea
Is there any issue with global besides potential name collisions?
global what, lua?
Yeah
only global pollution, yeah
and spaghettification
It is also slightly less performant iirc but negligible
Yeah then Iโm not gonna stress too much over globals
i mean, the whole ML is global
Thatโs funny lmao
I just have all the data in my mod under ParallelParity global so mods can mess with it
guess ill yap here while im unable to mod, just gonna get thoughts out
i got detection from PW to Main World detection working (was about as simple as i thought), creating a return rift should be trivial from there
the main important thing i need to do is create the boundry for it, when its created i want there to be a circle at a medium-far radius that slowly shrinks, if the player leaves the circle or if the circle reaches the centre then the Rift disappears
i should also remember to delete the Rift when the player goes through it
mmm i think thats all, idk how to do the circle thing tho ill need to look into how other things in vanilla handle that
on apoth's end ill probably write up some compat that makes their blob cave work with the mod but i wont go beyond that since idk what does or doesnt need the localisation option, but it will work for me testing how well the compat works, and if the apoth folks are interested they can use it as a base to integrate all their other pixel scenes too
for wha?
the blob cave, the pixel scene biome you have full of blob enemies
with the blob boss at the end?
on right of main path, i think branching off of jungle or vault?
its perfect for compat with my mod imo cuz the lack of the cave is jarring in a similar way the lava lake's blocky absence is imo, and i can also add localisation since last time i mentioned doing this, conga i believe expressed that the boss at the end should not spawn in PWs
this place
though actually it does look like you guys fixed how bizarre it looked in PWs
mm yeah I knew you were talking about that place, I was just wondering what you meant by the other stuff
well, i imagine yall add more than one pixel scene to the game
at least 2 yeah
oh if you mean the localisation stuff
i recognise that some stuff existing vs not existing in PWs can greatly affect balance, so stuff like Lava Lake orb and whatnot by default do not spawn in parallel worlds even if the pixel scene they are a part of does
the localisation options basically just target a designated piece of code and put it inside of a main-world check so what ever it does/spawns only works in main world
and also mod settings are appendable but i imagine that doesnt need explaining
I mean we do already have checks for stuff like that
do you have checks like that for stuff that dont normally spawn in PWs?
id be surprised by your thoroughness if so lmao
like a certain uh super important quest item is set to not appear in parallel worlds through the biome script
I'm not sure what you mean by that
yeah that makes sense, but i imagine its not part of a pixel scene?
to clarify, my mod makes it so Pixel Scenes in _pixel_scenes.xml spawn in Parallel Worlds
mhmm
so, for example, if this were to be just applied to your blob cave, it would break in parallel worlds because conga said the boss needs to be main world only, that or balance reasons idr, so localisation options exist on my end to deal with scenarios like that
since this is an issue with blob cave as well as some vanilla pixel scenes, its possible it might also be something to take into consideration for other pixel scenes in your mod
there is some biome init handled pixelscenes that don't appear in parallel worlds but yeah makes sense
there might be a big scary boss pixel scene that doesnt spawn in PWs for apoth, and you might not want the boss to spawn in PWs for jank or balance related issues, im just saying its best to leave that nuance up to you guys if you're interested, plus i wanna minimise spoilers for apoth somewhat since i havent beaten it yet lmao
ooo you guys do do that? neeat, means theres less that need to be handled by par if you guys do end up doing compat ๐
i should ping emi once return rifts are finished
trynna optimise mod settings is certainly amusing
GuiText is funky it for some reason was making all newlines go on the same line so i need to manually like split the description shit
ig ill post in case someone knows the solution but i dont think this is smth i can get around lmao
just don't use layers
need to in order to get the tooltip to go outside the bounding area
if i dont then the tooltip doesnt render past the scrollbar on the right
@raw linden @lyric plinth if you two are still interested in TLing Chemical Curiosities in the future, we have a channel in the CC server with the other 2 translators
mostly pinging rn cuz i had a question about how i should structure translations in mod settings (this is for Parallel Parity atm, but the system i use here i will eventually use for Chemical Curiosities when i rewrite the settings for that)
also emi you said youd be down to tl Parallel Parity, if you're still interested, the mod should be released p soon so i can let you know when it is if so o/
choosing between 3 systems here, first system is this
an alternative system would be a flat system like this, this is closer to how regular .csvs work
3rd option is just storing the translations on the setting itself like this
the benefit of the second one is its very readible and easy to navigate, but you get less of the context on the setting itself and the general structure
the first is sorta a hybrid in that you can see the general structure but dont get much context on the mod settings
and then the third allows you to fully see the context of the setting and how its used/the structure, but probably comes across as less readible
lmk which one of these seem more convenient or if you have suggestions for a better translation structure (yall will be the ones using it after all)
yea im down! id go with whichever system u feel more comfortable with, i dont mind readability
system 1 is what it currently is and what i was planning on doing, but soon realised it would be inconvenient for modders adding settings to this mod unless i revamp the system, so if im revamping the system i might as well check in with translators to find out whats most convenient for them- since this is a system id ideally like to use for all my mods from now on
system 3 is what im leaning towards personally since its convenient from a programming perspective, but if translators would find alternative method easier then thatll work
regardless of what we go for, i imagine it will be more parseable that the devious wall of text in apoth's settings.lua
the translators who use that impress me
why not just have them be normal translations
and add a build script
Would need to set that up, not worth imo
Most convenient form of that would be python and I donโt like python
maximum convenience for translators
you could write it in lua
yea thats what i thought from a modders point of view
its just as a general purpose programming language lua isnt very good
severely lacking standard library'
zig or rust could very easily do it
python is the easiest language to write bad code in
LMAO yea
real python code
if translators say theyd find that more convenient id be entirely down, but i feel using regular csv format really is not much better than that the proposed systems
sure its familiar, but its also just a massive wall of text with no context for what the thing you're looking at is
for regular translation stuff it makes sense, but for smth where you have a standard thing you're applying TLs to- like setting descs and names, we can easily provide the context of what the text is for in an easily parsible manner
yeah, imo csv is worse
but it is popular
imo 1 or 2 are best
3 is harder to find what needs doing
and the translations are scattered everywhere
its also not capable of representing more complex settings where the key needs to be accessed by more than 1 thing
translations arent that scattered bc they're on every setting, but yeah thats the main reason i didnt originally go with it
well not well anyway
if you want something advanced like a reset settings button (which you do) then that cant do it
its also not capable of representing more complex settings where the key needs to be accessed by more than 1 thing
can you give an example of a key needing to be used twice?
i cant think of a time this would be a need
same hover for multiple things
mainly where the vanilla settings code isnt used due to it sucking
so like
local settings = {
{
id = "reset",
render_fn = function(...)
CallSomeGuiFuncs()
end
}
}
you can do that if you just have a separate table with a default value
instead of specifying default for every setting
mmmm i already specify defaults for individual settings lmao
i find it more convenient
i mean the ui for the reset button
its a button so it needs translations
and you surely need a reset all button
yeah seeing that made me realise i should have one, why would i need a custom render func tho?
why would i do that any differently?
?
i already have a system for custom code
are you not using the vanilla mod settings system?
i hate nolla's basic gui funcs so i already have a custom bool setting function
no i hate it, i wanted a custom tooltip and also hate the cooldown on clicking buttons
๐ฅ
ok then its fine
i do think the scattering is suboptimal
and it does kinda break the logic up
yeah ill hear opinions from the translators first
what i might go with is 1 and then just let mods appending their own settings package in the translations like 3
since its more convenient for other mods if they only need to pass stuff into one table rather than two
settings code wouldve been done so much faster if i was just using vanilla ui code lmao
reason it took so long was i was procrastinating rewriting my gui code
I'm down too, haven't been active in noita discord lately cuz I'm binging gtnh and making textures for another Minecraft server as of late lol
as to which option I prefer, I myself don't really notice any major difference between those 3 from a translator's perspective and I can do localization with any of the given format
hm, hang on, is the mod done?
i just sorta wrapped up mod settings, sat here trynna figure out what to do next and i think its done?
here ig ill test compat with it rq
geh apoth scary, still 257 calls of _pixel_scenes.xml
guh?? are the enemy spawns in blob cave not part of the pixel scene?
why would they be
because that would avoid insanity like this
im making a PR to make blob cave sane
@jaunty eagle would it be fine to make blob cave its own biome? or how do you wanna handle that? cuz i think itd be ideal if the stuff in it spawned via biome functions
currently half of it is just this data/biome/solid_wall_hidden_cavern.xml
mmmm wondering if itd just be worth getting some other pixel scene to use as an example and test for parallel parity compat at this point
thought blob cave would be simple but the way its made makes it not very clean to hook up to par, ill see if there are more sane spliced pixel scenes to go for
It would probably work as a biome, I think there was a reason I didn't do it but I don't remember why.
I guess the main reason PW blob bosses aren't supported is because the boss itself doesn't support being killed multiple times, it was never supported by the death script.
yeah, i can make it so blob boss doesnt spawn in PWs
It would be very low priority for me personally, so if you want to then go ahead; but make sure to check the blob death script supports PW deaths if you do
Or that
yeah no im doing this to test and create an example for compatibility with Parallel Parity, im testing pixel scenes, spliced pixel scenes, localisations, portals and settings
evil how my list of things to finish in my mod keeps expanding despite me not adding any new feature creep\
okay maybe one feature creep in the form of reset button for settings but the main thing is realising some portals are already PW local
i knew about fast travel portals and remembered i need to remove those, but apparently like cube/buried eye portals are the same, maybe secret shop?
cuz they check last position, so it can be either PW local or not, depending on where you last used it
ill probs relegate those to "Puzzle Portals" and explain the nuance in the mod setting
then i need to figure out making Apoth compatible with par
then i need to make return rifts work (i think i know what the issue is so thatll be a very quick fix)
and finally implement functionality for reset button (again, should be a quick patch)
these last 4 things and then i need to work on a workshop thumbnail
conga spotted
o/
anyway new evil feature creep idea (actually old but i wanna do it even more now at some point)
modulate pixel scenes in sky/hell loops
watching goragle hell noita video, their talk of noita above and below made me wanna make that into a proper thing lmao
@left pumice do you know any way i could have this shader end texture work but stop particles from breaking the rendering?
the shader code is here and if you want to test stuff or smth in case you have an idea, mod currently spawns a rift above you at the beginning of runs
https://github.com/FatalUserK/parallel_parity/blob/main/files/return_rift/return_rifts_init.lua
What do you consider to be breaking the rendering?
As in the purple particles that are on top of the dark area?
the particles appear on top of the dark area and cancel out the greenscreen effect
i dont mind if the solution is a fix or alternative to the green screen rendering method
just lmk if you have any ideas on how i can do this
Particles are difficult to deal with as they render over the top of everything. Some ideas:
- Upload a mask texture and screen position to the shader, then do the effect that way. This will allow it to render over the top of everything, but it will then render on top of the player, materials, etc.
- Supersample around the area to check for single pixels surrounded by greenscreen. Not perfect, but it should help
- If you can control the direction particles move, send them outwards away from the center. Might need to micromanage particle emitters for that to work
- If you're able to make the greenscreen area a physical material in the world, you can use a unique glow color to get an unobstructed mask of it and read it out of
tex_glow_unfiltered
geh forgot to check back here
If you can control the direction particles move, send them outwards away from the center. Might need to micromanage particle emitters for that to work
not entirely doable here as its a particle area, particles would still be able to spawn on the rift itself
I was thinking of multiple directional particle emitters, carefully placed at specific offsets and directions
if that's possible
hmmm, but the shape of the rift is very irregular
and i think in most cases either thered be too few emitters that it looks strange that certain particles are going in specific directions, or too many particle emitters
should mention the point of the particle emitter, i have a temporary rift and want it to disappear after n number of seconds
i have a region covered by the particle emitter that shrinks in accordance with this, and use 2 particle emitters for it, one inside to show the region and one on the rim to show the exact boundry
it seems like i may have to forego the inner emitter as its the one that is spawning particles on the rift
oh maybe i could replace it with another particle emitter on the rim which spawns particles moving inwards similar to what you said, if i tune the values just right i can make it so they move inwards but never manage to reach the actual rift in the centre
If you're able to make the greenscreen area a physical material in the world, you can use a unique glow color to get an unobstructed mask of it and read it out of tex_glow_unfiltered
i might also do this as a secondary effect cuz i think itd look cool
like have a particle emitter that emits particles in the area of the shader material
oh sidenote, this effect i made breaks in low resolution rendering mode for some reason
it just turns entirely purple iirc
oh fr? thats wild
something something rendering mode changes and the stuff we do is skipped or smth? idk
rifts are functional now, im satisfied with them
next ill probs get the [reset] button working, should be very trivial
then ill look into the nuances of PW portals, and finally do some minor compat with apoth to make sure it works and to provide an example for modders who are interested
geh modifying the core structure of my mod is scary cuz its so dense that i cant tell if the thing broken rn is from a small change i made that i didnt fully understand or an already existing issue
having a fascinating issue with apoth compat where spliced pixel scenes- or at least the tree is being loaded twice in PWs, and i wont even be able to ask anyone for help if i need it cuz im the only one who understands this monstrous code and thats only barely at best
oh yeah i forgot to properly debug why pixel scenes spawn twice in PW with apoth compat
eh its probs cuz i messed up smth with the code that iterates pixel scene applications to multiple biome maps- shouldnt be data from original biome map interfering as that wouldnt result in- oh maybe it would, okay wait lemme go check uhhh lake island maybe? hold on
@jaunty eagle are there any vanilla pixel scenes that you relocate? like _pixel_scenes.xml pixel scenes?
I adjust the location of dragon cave downwards slightly so it doesn't look weird with the ant nest above
i assumed map changes would do that but it seems you extend the map and avoid moving stuff too much- at least the several pixel scenes i check are
hmmm isnt that a biome scene and not hardcoded?
Yeah, technically a pixelscene though
uhhh
I don't think i touch any pixelscenes in the pixelscene file
yeah im talking about _pixel_scenes.xml pixel scenes
goooot it okay that makes the issue easier to figure out then i think
oh? if you know one that would help me narrow this down
I guess I move the PW music machine spawns to match the new world length
fuck, nvm lmao
nolla doesn't do that
Essence Eaters are moved too to use a biome file
pixel scenes outside of main world that i apply to PWs are culled
oh really? i should disable the Essence Eaters setting from showing then if Apoth is enabled
what if a mod makes pw exclusive content?
then they can simply choose not to add their pixel scene to compat? its an opt-in system
you append to my file which pixel scenes you wand duplicated in PWs
opt in is better imo cuz some pixel scenes mods wont want in PWs for balance reasons
i have considered adding a nuclear "PW everything" option with a blacklist table mods can append to, but thats feature creep
i have more fun post-release feature creep to get to before then
actually im dumb it doesnt really matter here what pixel scenes are moved as it would be applied to both maps- hmmm size diff should be relevant tho, i have theories ill look over my code tomorrow
geh i keep getting distracted
i have so many diff things i wanna be working on at once
lemme look at Parallel Parity rq
does the compiler not differentiate between map-scene index i wonder
OH
wait no nvm
it takes like a solid 20-30 seconds to generate all the table data scraped and arranged before i pass it to the compiler lmao
lmao??? never seen this before
@gray haven i have a question i thought id never be forced to ask before...
how do i run a lua formatter ๐
geh wait i mightve just crashed VSC
ah, i need to run the dump again
it didnt put quotes on the strings
vsc broke and stopped doing any formatting after i clicked this, even after deleting the text and closing the tab lmao
i hurt it
anyway time to do it again
hmmmm i think vsc is sad again, i dont think it wants to format 350kb of nested table stuff, i can probs decrease the load by turning off a bunch of unrelated settings hold on
good lord
okay some kind of recursion is going on here- or my settings are being enabled wait what-
ah, note to self, settings hover works even if outside of settings container, fix later
ok nvm thats a more sane amount of data now, my settings changes just werent applied
okay so yeah, its adding twice to the apotheosis map-index id, so why
so this means scraper is adding twice, why
yeah apoth pixel scenes file looks sane too
my guess since the beginning has been somehow scraper double inputs the second mapindex thats run so im gonna assume its smth like that
{ [1] = "data/biome_impl/biome_map.png",[2] = "mods/Apotheosis/files/biome_impl/biome_map.png",[3] = "mods/Apotheosis/files/biome_impl/biome_map.png",} ah, thatd do it
my compiler works fine, im doing smth wrong to add apoth to it twice
oh
thats scary
return at end of file doesnt inhibit appends maybe? hold on
i see, this revelation has made my mod load-order dependent, which means appends from mods before Par are run twice
(this is all conjecture ill test in a min)
(but i cant think of anything else going on here)
apo append is indeed running twice.
also got a cool gradient on image preview, neat
they probably integrate directly with your editor
if your file is gigantic you'll want stylua because its the fastest
just run it from the command line with stylua filename
do cargo install stylua to get it
ill keep that in mind, i made do with the in-editor formatter but it was kinda ass, ill try stylua next time ๐
stylua also has a better style imo
luals formatter isnt specific enough and has ugly defaults
got back to this now, i fixed by having a data.lua file which mods append to which i also threw most of my own data into to clean up my init.lua slightly since i might as well while im at it
i can now proceed with some fun apotheosis compat and also maybe throw in some type defs if i feel like it
certainly not
how do you think appends work?
string manipulate on the do_appends call?
it just executes your file then calls do_appends
yeah that was my main issue with the VSC formatter, i was guessing and hoping stylua would be better
i heard a while back its effectively a dofile at the end of the script, but i guess they meant it less literally than i interpreted
and setting appends to nil seems unideal since subsequent calls would no longer have the appends unless i make a separate listing of appended files somewhere
so i just went with a proxy file which mods append to instead
if you think about how it must be implemented it makes sense
i assumed nolla just literally stitched do_appends onto the end of the cached file or smth idk
it could only be implemented as
function dofile(path)
local ret = {loadfile(getcontent(path))}
do_mod_appends(path)
return unpack(ret)
end
(technically they could do something with the returns of the mod appends, but they don't)
i dont know how the lua scripts are run so the idea of the mod appends being run not inside the script itself doesnt sound any more plausible
they are run using whatever api lua provides
and there is only really one sensible one
could they not just stitch the function call into the file when they cache it?
not really
editing the ast sounds hard and unsupported
and doing string manipulation is a terrible idea
got it, yeah thats way above what i really know about how C, the engine and the API all work lmao
hmm. mod maybe done now? no collapsible folders tho, might rq implement that
@acoustic spruce i wish for you to know i put your guidance to good use
({func()})[index] format my beloved
yuck
Winner alert
completely unreadable
Highly readable
also use the mouse enums
and at the very least replace the magical 3 with a constant for whatever thing that is
no comment needed if you write code which doesnt suck
if you write code that sucks (see above) you do 
if you want to do something like the above where its just one line why not do
---@class GuiWrapper
local M = {}
function M.GuiGetPreviousWidgetInfo(...)
local what, ever, values, are, returned = GuiGetPreviousWidgetInfo(...)
return {
what = what,
ever = ever,
values = values,
are = are,
returned = returned
}
end
return M
you could even autogenerate that really easily
Silly Nathan this is way more than adding 5 characters
you do this once then you can easily write readable stuff everywhere
i need to like lock you two in an escape room
i feel like this would be really amusing to watch
only i would escape
on a related note, i got collapsible folders now (dont like how down-weight the icon feels on uncollapsed folders but i can resolve that with dependent offset another time if i so desire)
and if i set this up correctly, they should have default collapsed states
iff. its all *, iff. its all ( ) then do ( ) else (-)
yup, all vanilla things are folded when i go in-game
(*) your folder of guis
eh, feels like feature creep bloat to me, i dont personally see a need
to toggle whole cats
yeah but like, thats just not necessary
people shouldnt need to edit settings often and there arent enough settings to warrant that as a feature with this in mind
Open wall panel
Expose Nathan to the inner mechanisms of the escape room
Staff give up after being told their mechanisms are dogshit
Easy win
find a computer in the room (real or fake) and he'll explain why it is of poor quality
copi does a suboptimal solution, copi gets murdered, taken to jail (outside of room)
easy win
put copi in the room and he'll write insane gibberish that flatlines the entire puzzle system
fuck i cant think of anything else i need to add to the mod pre-release
why is apotheosis empty
i think i just need to finish testing compat via apotheosis, ig ill do that tomorrow
?
โ ๏ธ
oh, cuz i havent finished writing up the basic compatibility
i was doing that but got sidetracked by adding collapsible folders
i just need to add those on apoth's side tomorrow
but i confirmed the settings system appears to work!
"Warning! You're code is too fire and is overheating our AI slop generators, please fix!!!!!" is what the warning says
rip microsoft ig
oh right i should look into the thing alex mentioned
ill do that tomorrow (in 5 hours cuz its 7am and i need to sleep soon lmao)
wanted to sleep about an hour ago but then decided to do a "little bit" of work on collapsible folders and then i finished them and the linear passage of time is my mortal enemy
am i code?
"You're code" thats what they said
shit happens when you replace your staff with AI idk man
@jaunty eagle do you happen to have translations of the mod name anywhere? translation.csv doesnt seem to contain the mod name as standalone
I don't think the mod name is translated?
I'm fairly sure it's a case of it being a proper noun in spite of it also being a word
i.e. there are translations but you'd use those when referring to the act of apotheosis and not the mod itself
transliterations exist tho, like if a proper-noun were translated from japanese or smth i wouldnt want it to be written in hirigana yknow?
I mean I've seen just like the plain ass english text in the middle of japanese
skill issue
though I am sure this is not always what is done
mmm fair but it feels like relying on the reader having a baseline understanding of english pronunciation which normally transliteration is meant to resolve in the case they dont
fair but there are a lot of non-germanic languages that i wouldnt know how to pronounce the name of shit in, hell there are lots of germanic ones too
I will admit though bad transliterations are really fucking funny
this is why community projects like Better Chinese exist lmao
but i do kinda see your point
up there with hearing "american accents" in non-western media
peak shit
this and your other msg are valid
very amusing
is COPI BLAST transliterated into katakana in fairmod?
no its literally just the noita glyphs
oooo got it
I think it's like KOPI BLAST or some shit I forgot what but one of the characters didn't have a glyph iirc
idk you identify it
oh, is that the finnish glyphs..?
iirc yes>?
okay that i could probably see, id barely know anything about those other than they're in finnish so rip me trynna understand them lmao
which breaks other mods translation
oh do they not add it properly?
it adds a virtual column for csv
?
so appended translations won't work
and everything will be in english except for those that the translation mod adds
oh it breaks chinese translations from other mods and untranslated vanilla stuff?
yeah
hmm, i wonder if the author could be contacted and this could be resolved
no
nolla system is stupid?
yeah
you can kinda support it
e.g. if the game has custom translation you can edit your csv to use that language instead of english
i actually dont think i fully understand the issue, surely the mod can just overwrite all the relevant strings in their csv? why do they need a new column?
ML has that, but it doesn't work for runtime language change
translations mods don't have init.lua
it's handled on the engine side
better chinese isnt a translation mod
oh, is it? that's nice
i think one of the russian translation mods have two versions also
translation one and correct one
hmmm i suppose tho an issue with changing how Better Chinese works is itd break mods with existing compatibility...
times like these i wish i had a time machine to fix something before it became too rooted in its ways to reasonably be able to change at this point lmao
damn you apotheosis and your surprisingly good pixel scene management!!
struggling to find a good pixel scene to use as an example for my mod for testing and demonstration purposes
AHA, YOU DO NOT EXIST IN PWS!
oh maybe i should add cauldron to my mod, maybe eyes too later down the line, anyway spotted this and found it funny apoth cuts so close to the cauldron room lmao
back to this, hmmm, that doesnt seem right...
guh???? im somehow creating a self-recursive table hold on
something is setting the setting's colour table to be itself lmaoo
thats amusing, should be simple to find and fix
ah, line of code i was in the middle of writing before i got distracted lmaooooo
thats very funny, fixed probs
no types?
โ๏ธ
stay back
this was also amusing to write as a solution to infinite recursion
this is terible
and doesnt even work well
i like doing something like
---@param value any
---@param seen table<table, integer>?
---@param count integer[]?
---@return string
local function dump(value, seen, count)
seen = seen or {}
count = count or { 0 }
if type(value) ~= "table" then
return type(value) == "string" and ('"%s"'):format(value:gsub('"', "'"):gsub("\n", "; ")) or
tostring(value)
end
if seen[value] then return "r" .. seen[value] end
seen[value] = count[1]
local s = "r" .. count[1] .. " {"
count[1] = count[1] + 1
for k, v in pairs(value) do
s = s .. "[" .. dump(k, seen, count) .. "] = " .. dump(v, seen, count) .. ", "
::continue::
end
s = s .. "}"
return s
end
so that way you can easily see the recursive structure and all references to a given node
doing bfs instead of dfs for the printing could make it a bit prettier
maybe not though
you just run stylua on the output to get something nice looking
Blame Nolla.
im sorry mister nathan sir that i did an ugly solution to a 3 second check, i will do it again ๐
better dump func???? may give this a go at some point lmao
writing a recursive solution is easier and better
this was like 3 copy pastes and then messing with variable names
if you cant be bothered to handle recursive tables just pass a seen map and if its seen then return "..."
local function dump(v, seen)
seen = seen or {}
if type(v) ~= "table" then return tostring(v) end
if seen[v] then return "..." end
seen[v] = true
local s = "{"
for k, v in pairs(v) do s = s .. dump(k, seen) .. "=" .. dump(v, seen) .. "," end
return s .. "}"
end
is pretty easy idk'
it works well enough for basic use cases
giving your func a whirl rq
this is more than the 3 lines of code i had to write is all lmao
doesnt have issues with depth and more clearly denotes where the recursion happen
i often also have a banned list of keys passed in
but i knew recursion would be happening withing 3 layers, there was no need to do more
for a quick simple check my solution worked fine
what if there are some deep nonrecursive branches?
how stylua? i think ive added it before so where would i find it?
assuming i understand this correctly this would not be the problem with how i wrote my code
i do very little baking for colours so i knew it was unlikely to be an extensive issue
c should not have any data in it other than r g and b, so just seeing what data was in the first/second layer would be enough to point me in the right direction
i chose my method because i know my code
i mean i would solve this by adding some more types
perhaps, but that can come later
if your data has the wrong type the solution is to add more types
neato
types are especially useful when changing the code (which you tend to do a lot of when first writing it)
i change my code a lot but i rarely get it mixed up, but i do agree, the reason i dont use types isnt because i think they're bad but im simply not used to them, as with most of my current coding habits i imagine its something ill utilise more over time and get used to in my own time
types are something i use more and more over time already, i added types to a bunch of funcs last week in squirreltilities.lua
.workshoptags
tags in the workshop.xml file should not have a space after the comma, this makes the workshop fail to recognise those tags as it will read them as having a space before the tag, you can see this in how this steam page displays the first tag separately from the invalid ones, just a heads up o/
to fix you just gotta remove the space after the comma, so something like "quality of life,cheats"
(you can tell if a tag is invalid btw bc invalid tags will say "Tags: " before they're listed)
ah nvm, i saw a bunch of new mods and thought one at least surely had to mess up their tags
right, i need to do stuff about the fast travel portals
geh, evil error, hmmmm
is noita angry that im running settings.lua during init
yes, it is
okay so running ModSettingsUpdate is crashing noita, which part
mk so it crashes here
hmmmm probably these being evil
the condition for crash is weird tho
yeah if i open settings and then do it on init the game crashes, but if i just go straight into the game no crash
fascinating, well fixed now
local x,y = 200,1702
x = (x + (GetParallelWorldPosition(x, y) * BiomeMapGetSize() * 512))
LoadPixelScene( "data/biome_impl/excavationsite/meditation_cube.png", "data/biome_impl/excavationsite/meditation_cube_visual.png", x-20, y-29, "", true )
EntityLoad("data/entities/buildings/teleport_meditation_cube.xml", x, y-70)
wretched-ass script
should work but no work
oh, stupid
fixed
return portal here certainly does store pos when you enter, so you return to the same place
geh i dont wanna have to think about this rn
ill look into this proper tomorrow and decide how to handle quantum-locality (that sounds fancier than i meant it to i just meant conditional state of whether or not it sends back to a PW or not)
im sleeping its 4am
.moddev
Introduction to mod development
- Wiki page: Modding
Various tools for mod development
- Text editor: VSCode | Nvim | kickstart.nvim
- Git: Website
- LuaLS: VSCode Extension | Github - LSP
- Lemminx: VSCode Extension | Github - LSP | Github - VSCode
- Lua definitions: Github
- XML definitions: Github
- Type definitions: Github
Mods for mod development
- Component explorer: Releases | Install Guide
- Limited functionality: Workshop
- Spell Lab Shugged: Workshop | Github
- Conjurer Reborn: Workshop | Github
Various libraries which are often useful
@acoustic spruce question for reimplementing shrinkium, i kinda wanna make it so spells and whatnot fired by the player while they're shrunk are also physically smaller, would this be feasible to do?
I've been working on some generally applicable code for scaling projectiles
but basically the gist of it is that,
- projectiles are a single point that hits in a ray between its last and current position, and thus cannot be smaller
- gameareaeffectcomponents can cause some projectiles to hit in a circle around their current position, though mainly only field spells in vanilla do this, some modded spells use this. Nominal way of increasing "size" and usable for shrinking existing larger shots
- sprites can be shrunk via special scale
- b2d cannot be easily shrunk
- you can also edit stuff like plasma and shit, but some stuff may be harder like pattern particle emitters
this is good but my questions were on a more basic level like "how do i apply these changes" lmao, what is the most effective way to modify player's projectiles based on their size? patching gun.lua? or is there like a thing i can do on the player's ability component to make a modifier script applied to their projectiles?
shot script