#UserK thread
3536 messages · Page 4 of 4 (latest)
yeah, ill go over there and ask around
#mod-development jumpscare 😨
ive fired my shot so ig ill see if i can talk to someone with mod knowledge
also imo a "Translation Open" channel could be good? so mods can easily label themselves as being translatable
I suppose so
threw this on the wishlist
Perfect
ive sent a msg to the guy who reportedly set up the workshop
heres hoping there will be a solution that lets us have safety stuff for unsafe mods on the workshop 🙏
in order for this to actually do something it would need to be possible to check if a workshop item is meant to be hidden once its downloaded
and then youd have the issues of people manually uploading an unsafe mod publicly then hiding it later so anyone who downloaded it can run it
the game already has an unsafe check when you download the mod
idk if theres any way to make this safe easily
yes but in order for the check to do anything you need to be able to test if the item is hidden or not
cant you just check if the mod requests lifted restrictions?
thats not enough information
if you add this feature then workshop mods with unsafe permissions will sometimes be allowed to run and sometimes not
how? isnt that what the whole system is based on? if the mod.xml requests lifting the safe api, then its unsafe
yes?
how would an unsafe mod run unintentionally?
the user sees the popup and clicks run anyway
people cant read
hence why they arent allowed to be on the workshop
or bypass the check of "does the mod request listed API restrictions"
the popup manually asks you to go over and click the glowing red unsafe button that then prompts you again if you do click it
yes?
your suggestion is to allow them on the workshop if they are hidden by default right?
and im saying theres no way to enforce this
oh yeah no i agree
i dont think its that big an issue cuz mods that attempt to bypass this can be spotted and reported to steam or smth probs
im saying that i dont think its a big enough issue considering (afaik) there have been no malware controversies in the modding community
out of curiosity, if steam does have this supposed default-hidden option for specific tags, how would uploaders bypass it?
i didnt understand when you explained it cuz i didnt realise we were talking about false upload not download
part of that could be because you cant upload malware
simply dont set the tags
whats the difference from steams perspective whether a mod is uploaded via the games uploader or manually
im considering mods not on the workshop, i agree the workshop would make it easier but we still have had 0 cases in GitHub or modworkshop.net
too much hassle to make it work
oh right you can interfere with the upload process
downloads plummet when a mod requires external dependencies
downloads don't happen when a mod is external
so saying download malware dependency from elsewhere is just not worth it
users cannot be bothered
surely theres some kind of thing that can be implemented beyond the local side that we cant access
would require running code on steams servers
or routing every upload through nollas servers
also yes im aware downloads from external sites are far lesser, im just pointing out that youd think thered be at least one or two people who try it anyway
could tie unsafe restrictions to whether the mod actually has the tag
you can just not bother with the mod part
the benefit of being a mod is you get to use the safe and trustworthy looking steam workshop to infect users
would this not work
if nolla made it so mods downloaded now have the tags as a part of the downloaded mod, cant the game double check steam mods to make sure it has the tag AND the lift api restrictions?
if they could include the mod tags in the download then yes
^
however this still has issues with you adding / removing the tags to farm downloads
?
whats to stop conga from hiding apoth and uploading a new update with malware which gets autodownloaded by steam?
fixing the exploits around this seems like an awful lot of work
if the state of Unsafe is changed according to mod_config.xml, disable the mod and force them to re-enable, once again prompting the message about unsafe mods
mmmm fair, make mods disallowed from changing their unsafe state
yeah, but then you need to uninstall it
it could be nice if implemented properly, but it really doesnt seem simple
mmmm i mean there might just be a steam API thing that lets you force uninstall a mod?
also it seems like you cant force-hide steam workshop items without the user being able to make them public again, so this idea is p much dead i think
well you need to check if the mod is public when its installed
https://partner.steamgames.com/doc/webapi/IWorkshopService doesn't seem to include a method for this
maybe im just looking in the wrong place
im back now
basically we agreed that checking unsafe mod stuff on the workshop would be impossible without the devs doing a bit of legwork to make it work on Noita's end (which is unlikely)
BUT they also mentioned there was a malware controversy just last saturday and that steam might implement some kind of solution at some point assuming this becomes a problem
which if a solution is made on steam's side that resembles any kind of solution to noita Unsafe Mods on the workshop, that would be super super awesome
oh and aside from that IM FUCKING BLIND YOU CAN CHANGE WORKSHOP DESCRIPTIONS BASED ON LANGUAGE
i might immediately put the skullflys project on hold while i reassess current mod project priorities
Parallel Parity too
i might pivot to finishing the QoL mod PR as that has a closer end to it imo, its mostly simple, has a clear goal and will be another thing off my checklist
from there, i would like to work on CC on another new patch, i need to look into if my planned implementation of Fungal Curse fungamentally works, since i couldnt figure out if i could make it
@jaunty eagle i think if we're gonna ask for a language dropdown menu if and when the devs come back, then we might as well use a tag standard that makes sense for it- having every tag in the menu followed by "translation" would be weird for the menu, especially for longer languages like Brazilian Portuguese, also i think using caps looks nicer in that menu
so im suggestiong [Language],[Language], thoughts?
That sounds good, using capitalisation makes sense
sure, i thought youd probably be satisfied with it since Apoth almost follows it already lmao
ill go update CC and Parallel Parity's tags then
oh... thats, recursion...
lava_lake
i actually dont know why the previous ver broke but i do know what was wrong, works now
New desktop background dropped
my desktop wallpaper is still fucking covered in
I remember that lmao
unsure for spatial awareness coordinates if bottom left should be the origin or if i should be in-line with Noita coordinates
i think id like to make Above +1 and Below -1
i should make a post in #1361811774634201318, will need more testing before i actually do it tho
might compile info on a wiki page somewhere relevant so i can more easily aggregate info on the phenomenon
and i just realised i didnt clarify im talking about pixel scenes and material lifetime
i have been entirely sidetracked from Vertical Parity in order to add scope-warnings
i have also made it so the mod properly utilises scope to apply settings when relevant (previously theyd mostly just be immediately applied)
ill likely package scoping and vertical parity in the same update for the convenience of the translators- and in case i have any changes to make partway through while im finishing the other half
recache tooltip data for extra lines
i love it when im reorganising my code for modulation or something and it just occasionally leaves a massive fucking void while im working lmao
okay how the fuck do the NextValue functions work for mod settings????
hold on lemme go pester moddev
scoping is so nearly done 🙏
everything should theoretically scope correctly, i just need to finish coding the system that gives you a warning if the setting cannot be changed under the current scope
okay so i need to have setting.description and setting.extra_line for when i have an additional note to display
i should then run both into generate_tooltip_data() to split into individual lines while also creating line breaks to prevent it from breaching the screen end
it is because of the line breaker that i cannot simply pass the entire thing to get the width and height
if theres a line break, i need to get the data back somehow, perhaps desc_data should have extra_line packaged in it, it should also be renamed to tooltip_data if so
from there, i can also have the colour table stored under tooltip_data.extra_lines
then have DrawTooltip() check for data.extra_lines and if it exists, add lines for data.extra_lines.lines and if data.extra_lines.c then use as colour table
i actually am already packaging extra_lines under the returned tooltip data so thats actually not a problem
oh right i forgot to divide the colour values by 255 lmao
W it displays in-game now
unfortunately im doing scope wrong somehow
fuck these changes broke the orb stuff
*broke
not fixed
fixed i just made the UpdateModSettings script call my (newly renamed) update_orb_count() script while not modifying the value of the orbs, rather than having its own incomplete implementation that doesnt do the extra stuff it previously didnt need to
lovely little function, just as a side note
hm, is scoping entirely done? ig i need to do testing now
oh right i need to finish dependent scoping and also fix the options for options settings not translate properly
% max_orbs + 1?
cuz if the max_orbs is 36, then modulating while at 36 will equal 0
also ew globals
its not a literal global
just a value i have at a higher level
outside the func so its persistent and used by other stuff
yeah, but the upvalues here make it impossible to reason about the function locally
the function alone doesnt describe what it does
values bound to a lambda
it updates the desc for kolmi based on orbs
but not introduced as arguments
lambda?
function
ah, i mean its used by other stuff and needs to be persistent
id stick it in an object
that way its at least somewhat clear what modifies it where
object?
table with some methods which you interact with without caring about the internal state
like how i store everything under the ps table?
its what i store global data under- i use ps name cuz its short and i grab global info from it in a few places that id rather not have be too long
why not call it settings or something
also why prefix it with modid, within this context its surely the only settings
cuz thats where i store my settings?
im actually not sure if other mod settings stuff exists within this context, i thought better safe than sorry
and ive already made apoth compat with this global name
how could it possibly?
is this your init context?
this is settings.lua
im unsure if other mods here share a global context in any way so i thought better safe than sorry
‽
?
how are mods appending if this is settings
i mean honestly mods can just append settings.lua, so i add a hooke that makes it so if they do, i list them
DOES NOT WORK IN MENU
should clarify
oh
i just have a note here
sorry i realised the confusion partway through lmao
wish i found weird haxx that allowed mod settings appending within main menu, but alas, telling the player to enter a run first is the best i can do
good warning text
👍
wuh- i hate mod settings so much, just an unrelated thing
the second value is the current scope, it changed after i modified a setting lmao
gehhhh i need to figure out options setting type now
it basically works i just need to set up proper preset values and fix the option names not being translated
and then test :(
I LOVE WORKING ON settings.lua!!!!!
"hm yes, looks like you had an error around line 42908759802"
- Noita
also fun fact cuz i left the new options type setting on the vertical parity branch and then needed it for main branch, i had to also merge the settings lmao
472 are from the translations table i think
huh, amusing, exactly 333 lines of translateable text
OHHHHH i was trynna figure out why the numbers felt off
its cuz im counting every individual translation, not translatable text
actual numbers, okay yeah thats way more sane
(final correction)
.help faq
FAQ commands
.faq list
List all FAQ commands.
.faq add [name] [content]
Add a new FAQ command. You can attach files, if you attach a image it will be inserted in the embed. Note that additional images will be sent as files.
.faq toggleembed [name]
Toggle whether or not a command should be displayed as an embed.
.faq remove [name]
Removes a FAQ command.
.faq add 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)
FAQ: tags (Creator: userk)
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)
just wanted to make the thingy clearer, and its my copypasta soooo
man i actually hate these nextvalue funcs they dont seem to work consistently whatsoever lmao
i got a random-ass error earlier, and when i threw in some stuff to check why it happened, it disappeared
and i dont know how the error happened nor how to reproduce it
only that it randomly happened on init earlier
and for some fucking reason settings fundamentally arent being saved to the correct values
let me inject ModSettingSet to tell me what the setting is being changed to
fascinating
something is force-setting the NextValues
perhaps related to why scope is considered unavailable (this should be impossible in the main menu, which is where im testing this)
oh no nvm
my test is stupid and so am i
i think i fully fixed this
i fixed it by purging what is i believe the majority of the remaining Nolla code (the set_defaults and save_setting functions)
the only remaining bugs in the main menu now are
- the scope warning does not show up the first time
- option names are not translated
- and scope warnings dont show up for options setting type
- scope warnings dont show up if a setting doesnt have a natural description
i should reignite the thermodynamics debate again at some point
see if infernum has grown and changed as a person (no longer believes a thin layer of water will be insulating)
gahhh ill fix the stupid option names next
im procrastinating cuz im getting sick of dealing with settings.lua, or i was earlier
but im getting the itch to work on it again, the middle two issues- related to options setting type, those are likely simpler fixes, the translation is a weird bug that i can probs fix without too much trouble cuz ik i had it working at one point, and the scope warning thing i probs need to do some kind of special handling for it to work
then the not working if it doesnt have a natural description, thats weird but should be simple to debug
the main annoying bug here is the first one, scope warnings do not properly display the first time it should, im going to need to investigate why that is
oh right and i still havent even implemented dependent scoping
okay, rewrite tooltip data again
change desc_data.lines from a table of strings into a table of tables and store all data in there, such as line colour and position
DrawTooltip no longer order the stuff itself, the offset is defined by generate_tooltip_data and DrawTooltip just reads from that
this makes the colour and offset of everything prebaked
need to do this to support having dynamic text- i need to create custom rendering for θ as it is not a standard part of the Noita font, i will likely need to render it by overlaying a - over O
fuck pairs() doesnt retain numbered order
fuck this shit-ass language why the fuck is θ split into ╬©, i thought this was the windows console sucking but like, no its just Lua or smth
WHAT
I- HUH????????
WDYMMMMMM
i have nailed down which font GuiText uses (its font_pixel_noshadow)
the scope warning does not show up the first timeoption names are not translatedand scope warnings dont show up for options setting typescope warnings dont show up if a setting doesnt have a natural descriptionscoping is completely broken on my laptop, due to NextValue being nil or smth maybe?
my settings.lua but if i removed every character standard to the english alphabet
i crashed vsc trying to undo.
i mightve fixed scoping issues i think, asuming i did i will probs go straight into scope warnings showing up for the options setting type
motivation to work on this is waning, i might just push out the settings update and take a break once these bugs are fixed
geh okay something makes my mod VERY upset when opening mod settings in a run
?????????????????????????? why are fonts weird
do i need to do something special to fonts when in a game? both instances are in the mod settings menu
when testing "mods/parallel_parity/fonts/":
- in Main Menu, it works fine
- in Run, game crashes
i thought vanilla had issues as well but i was mistaken i put in the filepath wrong is all
the msgs make me think the game is maybe having trouble due to the font being loaded before the game even exists? ill test
okay, fascinating.
i have come to the conclusion if you load a font before the game refreshes all its assets, the game fucking kills itself when you try to use it again
etching closer and closer to 2k lines
also this is false apparently _dev just crashes if you load a custom font but only in a run
this update has added 464 lines to my settings.lua alone 😔
back to testing scope warnings, now that ive stopped fonts from crashing in-game
well thats all 5 bugs fixed
guhhh was there anything else i needed to do
GUI_OPTION = GUI_OPTION 
ig test to make sure the scopes work
i get annoying yellow lines if i dont
just mark it as a defined global
last 7 lines of my code
its only in settings.lua tho
thats not what your code does
is there a way i can define it in the file using smth like the ---@ stuff?
luals doesnt support multiple lua contexts
so currently its just defining everything globally but worse
you can diagnostic disable but thats not ideal
the real solution is probably to rewrite settings.lua to not use any vanilla code
it basically doesnt, i just keep the MOD SETTING SCOPE stuff cuz im familiar with it and use GUI_OPTION cuz its convenient and i dont wanna hardcode the values myself
why not define them yourself?
its not harmful yet so its fine
that way you can have nicer types
i dont wanna define gui_option and if im having that i might as well keep around the scopes cuz theres no real point in redefining them if i have to call the file they're from anyway
why do you need to call the file theyre from
do you actually like using the vanilla settings system?
so that i dont have to call gui_option myself
again
i ONLY CALL THE FILE, for GUI_OPTION
so you dont use any other vanilla settings features?
and then at that point since im calling the file i dont really need to redefine the scopes myself since they're already done
basically, its a nearly 2k line settings.lua
you still get all of utilities.lua dragged in if you just dofile that
i dont think i call on anything from the file ill check rq
yea
ik
i mean are you defining the callbacks that the engine calls
like do you dofile mod_settings.lua
? mod settings interferes with callbacks? elaborate
^ doing this is entirely optional
what, dofiling mod_settings.lua? yeah i know
so do you do it?
^ ??
cuz it then dofiles utilities.lua
?
why not just dofile utilties.lua then
GUI_OPTION is in utilities.lua
well are you being called by it
cuz if im dofiling i might as well grab the scopes while im at it
taking a detour to slide into mod_settings.lua doesnt cause any issues
i just drop by to pick up the scopes
while im omw to my destination (utilities GUI_OPTIONS)
mmmm ig i need to just test to see if scoping works in-game now
nvm new bug
maaaaan
hate this fuck-ass mod 😔
FUCK YOUUUU ITS THE SAME BUG AGAIN THAT DISAPPEARS WHEN I RESTART!!!!!
gah i cant recreate it, whatever
and now the scope desc i literally just got working broke again
fixed, it was caused by a single minor change i made earlier today when i thought i fixed smth
wow okay i got the error from before where my settings are corrupted
need to screenshot so i dont lose it this time
my guess is invalid scope parameter
no type safety?
HATE BUGS THAT DISAPPEAR WHILE IM TRYING TO DEBUG THIS
fuck this next time im gonna remember to make a copy of my mod settings .bin file
weird rare esoteric bug resolved, scope was messed up cuz i forgot to make main menu an exception
perhaps i should just set scope to 0 if in main menu, or -1
mmmm is this fully finished? i think so
ive thought so every single time so far but genuinely what am i supposed to do
oh right i should test scoping ig
and make "Missing X translation" into an extra_line
geh
this should still be a defined global
sorry youll have to consult the manager about that
@novel plinth passive eba ping, can you pin this for me if you happen to swing by here? thx
@gray haven what is a gradian
and is this another format for the angle i can use
for polar coordinates in spatial awareness
its beautiful
i actually was thinking of just adding loads of different measurement options here, and then also having a "Random" option which picks a random one every time you restart your game
i was also thinking of making some up cuz like who the fuck is gonna notice
this is the precise reasons its here :)
i would like to point out
seconds
ALL OF THESE ARE GARBAGE
because these are supposed to indicate position ON A CARTESIAN GRID
ig kinda but its still weird
what is a cartesian grid if not a polar grid but they drew the grid lines really curvy for some reason?
note that it will provide the coordinate of the parallel world, not the player
so it wont be like precise position within the PW
also i will probably release the spatial awareness pw counter stuff as a standalone mod as well
i need to head to bed soon lmao ill probs have this update out tomorrow
geh thats enough from me for today
managed to cut 44 lines removing Vertical Parity content from main branch (dont want translators to translate it until its actually a part of the mod)
🙏
.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)
@acoustic spruce may i have some assistance?
working with some silly spell stuff
to reduce spell bloat, would it be a good idea to make note instruments individually be their own notes and from there the pitch is determined based on stuff stored on the spell card's entity itself? determined by custom xml picking a random note value on spawn
im sorta concerned specifically about the action function
idrk know how spells work tbh
W
that'll help ill nab that
whats current_action?
is it just a global that will alway exist in the context of a spell or smth?
read gun.lua
@left pumice question, how feasible do you think it would be to reimplement the Fog of War mechanic to Noita with shaders?
Fog of War is just fundamentally limited by the fact if you go too far out, Fog of War disappears- theres just a fundamental size limit to the Fog of War area
todo: test critical_damage_resistance=0 on the player dmc at some point
afaik it doesn't work even if you set it to 0 just due to having player components
that is why we had to reimplement crits in the first place among other things
Doesn’t urine enable them tho?
No
I remember trying to do some funny shit with urine and it did not work
Huh rip
Sorry for the late reply, I check Discord infrequently.
Implementing fog of war is totally doable. If you can keep track of the explored areas in Lua, then the most effective way would be to update a small fog of war texture (10x20 would be plenty) each frame with a mask of the current on-screen area, and then use that just like the game already does.
The mask is small enough to pack into a single uniform as a bitfield, if you wanted to get really efficient.
Got it, would you be happy to assist me with that at some point? I have no idea what I’m doing in this domain lma
Sure, the shader side of things should be simple
@hot rose how dialogue system work?
the dialog box kinda opens but immediately disappears, like i see a bit of it for 1 frame
@vague orbit you made Bags of Many, right? currently trynna debug an issue between it and CC that prevents your bags from spawning
it appears you do some strange stuff reading a table that we override in CC, can you explain exactly what im looking at to better find a way to resolve this?
is it on a lua component that runs every frame and has async enabled?
oooooooooo didnt know that was required
ill do that, that makes sense in hindsight 👍
this is noita related trust i just need to post it in a server with boosts so i can favourite it
obviously Noita related, the disc-shaped object is 
of course!
you need to add another comp to make the player valid
i love singletons
wdym?
gameglobalget
i meant just like on the player, i heard from copi it doesnt work so i wanted to verify it since i thought i remembered hearing piss lets the player be crit
make the player a boss dragon and it will work 
oh you meant make the player valid for crits?
i thought you meant like, valid in general lmao
thats funny
i wouldve thought DMC would be all thats needed for crits
okay so i need to make a slider
things i need
- current value
- width of the bar
- display function
- save function
- snap to integer
- input
.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)
.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
.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)
.mods
Some things are disabled if you have any mods enabled during a run. (The daily practice mode and nightmare mode count as mods for this purpose.) Notably, you can still get unlocks and ||achievement pillars|| during modded runs. Generally, the only things that are disabled by mods are:
- Steam achievements
- End screen stats being saved after winning a run
- Wands being saved in the bones folder for

- "The Gods Are Afraid" / "Very Curious" messages for dealing over 1 million damage and reaching negative HP, respectively
- The ||Cauldron|| or ||Eyes|| secrets appearing
The https://discord.com/channels/453998283174576133/1020458521927630879 or https://discord.com/channels/453998283174576133/1177451453086974063 mods allows you to play modded runs without these restrictions, if you'd like.
i think to ease back into noita modding im gonna tackle Vertical Parity a little bit
i had to remind myself how math worked, i felt very stupid for needing to test drive this in desmos
i think my approach will be having vertical scenes handled by a separate script append from PW scenes
this avoids running too much unnecessary logic when vertical parity is disabled
so when scraping, i attach 2 additional entries per scene to a table under the main data table indexed by the top and bottom biome at that chunk's X location on the biome map
from there i handle everything similarly to the PW append but vertically, and then throw in some PW checks alongside it to work properly
this also means its less of a headache to get non-static pixel scenes like Holy Mountains to spawn as i desire
i definitely dont intend to modify the pixel scene functions, so im really curious what sort of nonsense the custom pixel scenes will spit out- probs nothing that interesting but who knows
mysterious 14
at least name the constant
its 14 in relation to biome map math, i know what it is
i probs will make a comment explaining it tho
but comments come after i get it working
😭
comment just does the job of naming the constant but worse
would anyone else
i prefer comment, they're easier to ignore when i dont need them and easy to check if i do
them being easy to ignore is exactly why they are kind of bad
if the comment gets outdated your program still runs fine
maybe, i actually dont care much about how my code appears to other people unless i have a specific reason i need people to understand it
its now just harder to understand
if you use a constant its very obvious that you need to update the name if you change the value
why would 14 need to change? if 14 was changed then holy fuck so much of the game would be fucked
what even is 14 from
realistically changing that number would fuck up so much with modding and how the game's coded
origin of the world
origin relative to the biome map is middle of the X 14 pixels from the top
isnt this defined by an xml file?
i dont think so?
i never saw it in magic numbers or anything ever
i found it out by manually counting and testing
what if someone else wants to contribute?
or learn from what you are doing
if someone wants to contribute they'll need to figure it out themselves or ask me for guidance, if someone wants to learn then they can decipher the code themselves
like i said, there will be comments
i hate changing how i write code itself to be convenient for others, but i dont mind putting in comments if i think they're helpful to myself/others
a comment here works, easy to ignore if you dont need it, easy to read if you do
by writing the code better you can remove the need for comments
but i would rather have comments
i dont dislike comments, i actually quite like comments actually
it allows me to express my thoughts and intent in ways code cannot, i enjoy writing comments explaining my thought process or weird oddities about why im doing things the way i do
This can certainly lessen it, but not so sure about removing it entirely
here userk is adding a comment to explain what a constant is
other than for function doc comments and performance / other weird nonsense you dont need comments imo
True
ah apparently i was mistaken, its apparently defined in _biomes_all.xml
.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)
@jaunty eagle how do you add custom orbs to noita? is it as simple as just "here's orb id, it detects whether its west or east by itself and updates stuff accordingly"?
basically im going to be making orbs spawn in above/below parallel worlds as well, multiplying the number of orbs in a world by 3, again, bringing total possible orbs from 36 -> 108
is there any special handling i need to do? or can i just put my own special orbs at the top and bottom of the world with their extended IDs?
also might be good to create a standard for mods to communicate extended orb counts
since Apotheosis adds orbs, so as is id need to do custom support- which im happy to do, but im worried about if other mods add their own orbs at some point
i just see some evil orb witchery here and im not sure if this is required to add new orbs or if its just unrelated stuff
More or less, yeah
The game adds 128(?) if an orb is in a west PW and 256(?) if its in an east PW to the orbs id.
gooot it
That's unrelated to orbs, that's for a spell with orb in the name
okay, im wondering if i should add 512(?) to the orbs i add
hmmm well itd be 512 and 1024
You could
is there a good way to identify orbs and orb rooms? wondering how id need to work out correctling cloning orbs up and down
ig orb rooms would have to be manual anyway now that i think about it, since i need to be cloning them up and down
You just need to remember the id lol, there's no proper way
Is this for parallel parity?
gooot it, yeah ill probs just make a table of orb rom- oh im now realising ill need some level of interference since pixel scenes wont naturally spawn the correct orb, ill need to add the orbs separately from their scenes as entities
yeah, im adding vertical parity
Hmm
If you want the orbs to be pickable then, they'd just need a unique id
Something akin to bit shifting is probably the best way to go about it
bit shifting?
Bit tracking/flagging is what I should say,
but for example, you could do something like having four 'bits'
0000
0001 being an orb is inside a left PW
0010 being an orb is inside a right PW
0100 being an orb is inside an above PW
and 1000 being an orb is inside a below PW
Left would be +128 to the current orb ID, right would be +256 to the current orb ID,
above would be +512 to the current orb ID and below would be +1024 to the current orb ID.
Then you could do something like 1001, or +640 (128 + 512) for a left & below PW orb ID
ah yeah thats what i was suggesting
with one being above and one being below
ah yeah
i assume this means btw base game generally supports up to 128 base orbs?
0-127, and then +128 for east and +512 for west
or whichever
oh i wonder how negative IDs work?
really curious about limit testing orb IDs lmao
i could not imagine coding with all my silly comments its one of my favourite parts about coding
okay so
i need to loop over biome maps, then from there decide on a path of logic and assign stuff to target biome based on that
-# jarvis, throw up the wojaks, circle that in red and put "pathologic" on screen in a red circle
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)
regex
😡 negative lookahead
idk what that means i just got smth that vaguely works and noted it here so i can use it in future lmao
idk how to write it in a way that works i just mishmashed junk i found online and it worked
i just wanted ui_names which didnt start with $
Ui_name="[^$]
Faster
You have a negative looakahead assertion for no reason
Might need a \
but what if it doesn't have a newline at the end
new script for spawning all orbs
local function create_orb(id, x, y)
--print(("Creating orb %s at (%s, %s)"):format(id, x, y))
local orb = EntityLoad("data/entities/items/orbs/orb_base.xml", x, y)
local orbcomp = EntityGetFirstComponent(orb, "OrbComponent")
if orbcomp then ComponentSetValue2(orbcomp, "orb_id", id) end
local remove_comps = {
"AudioLoopComponent",
"CameraBoundComponent"
}
for _,targetcomp in ipairs(remove_comps) do
for _,comp in ipairs(EntityGetComponent(orb, targetcomp) or {}) do
EntityRemoveComponent(orb, comp)
end
end
end
local x,y = GameGetCameraPos()
local player = EntityGetClosestWithTag(x, y, "player_unit")
if player then x,y = EntityGetTransform(player) end
local orbcount = tonumber(MagicNumbersGetValue("NUM_ORBS_TOTAL"))
for i = 1, orbcount do
create_orb(i-1, x + (i*10), y + 10)
create_orb(i-1+128, x + (orbcount * 10) + (i*10), y + 10)
create_orb(i-1+256, x + (orbcount * 20) + (i*10), y + 10)
end```
hate nolla's pec animation system for not working on a per-frame basis so im gonna make my own that just generates a script that runs every frame to do stuff on the proper frames
so i will probably have to iterate over every G value and split them accordingly
gonna be using image functions, so to save on space- wait hold on
what if i use a script to fuck with this? ill give it a go
fuck yeah this works
That is not the orb count
?
The orbs that are used have silly ids
oh really?
Creator: newalexgamer
All the Orbs in the game have a unique ID, going from ||0 to 10||, and you can't pick up multiple Orbs with the same ID. All the Orbs in ||West Parallel Worlds|| will have their IDs changed by +128, and the ones in ||East Parallel Worlds|| will be changed by +256.
Example: the Orb ||on top of the Pyramid has ID 1, meaning all Pyramid Orbs in West will have ID 1 + 128 = 129, and in East 1 + 256 = 257.||
Smh this faq sucks
Where is the id table
Well clearly given there are more than 33 orbs
yeah, cuz theres orb 11
.data
0-11 and 13?
Also you can't trust mods to use sane orb ids
arent i already doing all that except for 13?
true but like what am i supposed to do
Yes, 13 is sort of bad
13 is unused tho no?