kobold tinkerer Posted September 9 Posted September 9 7 hours ago, Ranot said: streaming components if i understood it correctly it prevents entity from unloading which means you get chunks loaded for player and also for your unloaded entity. if we have a lot of entities like that the game will get more laggy, so better to avoid that except for unique cases (like player companion for example). removing camera bound component seems to save the modified entity even after unloading, at least thats what happened when i removed it from the enemy and restarted the game, it was saved with all the modified stuff also you could try saving data between runs within player entity. or maybe entity with id 1 which seems to be the world state component. what do you want to store anyway?
Ranot Posted September 9 Posted September 9 (edited) 2 hours ago, kobold tinkerer said: if i understood it correctly it prevents entity from unloading which means you get chunks loaded for player and also for your unloaded entity. if we have a lot of entities like that the game will get more laggy, so better to avoid that except for unique cases (like player companion for example). removing camera bound component seems to save the modified entity even after unloading, at least thats what happened when i removed it from the enemy and restarted the game, it was saved with all the modified stuff also you could try saving data between runs within player entity. or maybe entity with id 1 which seems to be the world state component. what do you want to store anyway? That's really bizarre. I mean, I'm sure there's a reason why it works... but what in the world. Yeah, I've been trying to use the world state component a bit, but I'm still working things out. Well, the idea is to be able to store a large variety of things. Color Palette data, composite sprite information, various stats, sex statistics, event flags... stuff like that. Individual enemies could keep track of how many times and in which ways they have sex with you, which could alter dialogue. I mean... I know there's other ways that you can do that stuff, but if it works you won't need to make any additional xml or lua files and it's extremely flexible and easy to use. The code looks something like: local ref = dofile_once(tostring(ModSettingGet("lewd_noita_redux.lnr_ref"))) local storage = ref.get_storage() storage.set_data(player_entity,"stats","player/name","Koboldie") Which would add a VariableStorageComponent with the name "stats" if it doesn't already exist on player_entity, that has a table that looks something like "{ player = { name = "Koboldie"} }" Then retrieving that data would be: local player_name = storage.get_data(player_entity,"stats","player/name") (player_name = "Koboldie") Obviously, you couldn't get too reckless for the sake of lag, but I think it could be helpful to avoid making a bunch of VariableStorageComponents for things if they need to be a bit more complex. Edited September 9 by Ranot Removed stretched copied background
kobold tinkerer Posted September 9 Posted September 9 (edited) 32 minutes ago, Ranot said: That's really bizarre. I mean, I'm sure there's a reason why it works... but what in the world. Yeah, I've been trying to use the world state component a bit, but I'm still working things out. Well, the idea is to be able to store a large variety of things. Color Palette data, composite sprite information, various stats, sex statistics, event flags... stuff like that. Individual enemies could keep track of how many times and in which ways they have sex with you, which could alter dialogue. I mean... I know there's other ways that you can do that stuff, but if it works you won't need to make any additional xml or lua files and it's extremely flexible and easy to use. The code looks something like: local ref = dofile_once(tostring(ModSettingGet("lewd_noita_redux.lnr_ref"))) local storage = ref.get_storage() storage.set_data(player_entity,"stats","player/name","Koboldie") Which would add a VariableStorageComponent with the name "stats" if it doesn't already exist on player_entity, that has a table that looks something like "{ player = { name = "Koboldie"} }" Then retrieving that data would be: local player_name = storage.get_data(player_entity,"stats","player/name") (player_name = "Koboldie") Obviously, you couldn't get too reckless for the sake of lag, but I think it could be helpful to avoid making a bunch of VariableStorageComponents for things if they need to be a bit more complex. for stats i add child entity to player in init.lua and then in sex_scene.lua inside the part of code thats executed once: -- add scene to sex stats entity -- iterate all VariableStorageComponent, then add to existing or create new if it doesnt exist -- name is scene name, string is how many times fucked, int is oral cumshots, float is regular cumshots if IsPlayer(sd[scene].kobold_id) == true then for _, ch in ipairs(EntityGetAllChildren(sd[scene].kobold_id)) do if EntityGetName(ch) == "ln_sex_stats" then local scene_stat = nil for _, var_comp in ipairs(EntityGetComponent(ch, "VariableStorageComponent") or {}) do if ComponentGetValue2(var_comp, "name") == sd[scene].scene_name then scene_stat = var_comp break end end if scene_stat == nil then EntityAddComponent2(ch, "VariableStorageComponent", { name=sd[scene].scene_name, value_string="1", }) else ComponentSetValue(scene_stat, "value_string", tonumber(ComponentGetValue2(scene_stat, "value_string") or 0) + 1) end end end end and then within cumshot part of code i add amount of cum to value_int and value_float so total stat is scene name, amount of times scene is triggered (how many times you were fucked), how much total cum inserted inside player, and how much cum is ingested from sex i still need to do fancy progress-like ui for this on pause though i'm not sure if having a hundred var storage comps on player adds to lag. it might be better to have only one VSC with value_string having serialized table anyway Edited September 9 by kobold tinkerer
kobold tinkerer Posted September 9 Posted September 9 i found a bug, if heart mage debuff expires during sex it doesnt restore player health back to normal because the script tries to find player using EntityGetRootEntity which gets the scene entity, since player is a child of scene entity. to fix add this to init.lua -- fix heart mage debuff not restoring health back to normal if it expires during sex local path = "data/scripts/status_effects/hearty_end.lua" local content = ModTextFileGetContent(path) content = content:gsub([[EntityGetRootEntity]], [[EntityGetParent]]) ModTextFileSetContent(path, content) 1
kobold tinkerer Posted September 9 Posted September 9 @Seisont should barfer cum in mouth as well? it visually looks like it but i am not sure
Seisont Posted September 9 Posted September 9 2 hours ago, kobold tinkerer said: @Seisont should barfer cum in mouth as well? it visually looks like it but i am not sure I'd definitely say it should yeah. (I also think it's cum material should be vomit given it's name and all too.)
kobold tinkerer Posted September 9 Posted September 9 51 minutes ago, Seisont said: cum material that would give player a lot of food poisoning, better stick to toxic cum 1
Ink_Ribbon Posted September 9 Posted September 9 11 hours ago, Ranot said: That's really bizarre. I mean, I'm sure there's a reason why it works... but what in the world. I mean, it IS Noita. It's a very weird game in MANY ways, I would expect the code to be kind of a mess, even so long after release! On a related note, how difficult would it be for a mostly-uneducated user (myself) to create a patch between this mod and Digestive Alchemy? I usually run that mod to have a "balanced" method of healing, but it doesn't have any way of handling/digesting this mod's cum materials in any way. If it's just an easy xml file thing, like Rimworld, then I could probably stitch it together. It'd be even easier to do if there's actual dedicated modding tools that would allow me to load up both mods and connect the dots in a GUI, but if it's more involved and would require more advanced line-by-line coding then I'll probably just leave it alone. Basically I'm just curious overall what the process of modding Noita looks like currently.
Seisont Posted September 9 Posted September 9 Made a handful more feminine alt sprites for some of the enemies roughly based on the welwraith art Kobold Tinkerer shared. They don't have any UV maps rn though (sorry but I could not for the life of me get the UV gen tool to work). The Scav leader also has a version with and without its tits exposed since I wasn't sure if I wanted to keep them clothed or go nude for it. 😸 Noita Fem Enemies.zip 3
Ranot Posted September 10 Posted September 10 14 hours ago, kobold tinkerer said: for stats i add child entity to player in init.lua and then in sex_scene.lua inside the part of code thats executed once: -- add scene to sex stats entity -- iterate all VariableStorageComponent, then add to existing or create new if it doesnt exist -- name is scene name, string is how many times fucked, int is oral cumshots, float is regular cumshots if IsPlayer(sd[scene].kobold_id) == true then for _, ch in ipairs(EntityGetAllChildren(sd[scene].kobold_id)) do if EntityGetName(ch) == "ln_sex_stats" then local scene_stat = nil for _, var_comp in ipairs(EntityGetComponent(ch, "VariableStorageComponent") or {}) do if ComponentGetValue2(var_comp, "name") == sd[scene].scene_name then scene_stat = var_comp break end end if scene_stat == nil then EntityAddComponent2(ch, "VariableStorageComponent", { name=sd[scene].scene_name, value_string="1", }) else ComponentSetValue(scene_stat, "value_string", tonumber(ComponentGetValue2(scene_stat, "value_string") or 0) + 1) end end end end and then within cumshot part of code i add amount of cum to value_int and value_float so total stat is scene name, amount of times scene is triggered (how many times you were fucked), how much total cum inserted inside player, and how much cum is ingested from sex i still need to do fancy progress-like ui for this on pause though i'm not sure if having a hundred var storage comps on player adds to lag. it might be better to have only one VSC with value_string having serialized table anyway Ah, I see! Yeah, I've tried attaching an entity for various reasons. Like, if the game needs all it's assets loaded or preloaded during the initialization phase, an entity could hold disabled/unloaded copies of those assets until needed. It's a pretty common trick to avoid lag when needing different assets. And yeah... I really have no idea of which would be better. 100 VariableStorageComponents containing simple values, or 1 VariableStorageComponent with a string of a table consisting of 100-400 values (since VariableStorageComponents hold 4 values). Unless the table can be held in memory without needing to store it again, the table would have to be created every time it's called. I feel like more VariableStorageComponents would likely be faster, but if the difference is negligible then a table could be easier to keep track of and use. We'll just have to try things out and see how it goes. If nothing else, at least we'll have a tool that can turn a table into a string and vice-versa. 3 hours ago, Ink_Ribbon said: I mean, it IS Noita. It's a very weird game in MANY ways, I would expect the code to be kind of a mess, even so long after release! On a related note, how difficult would it be for a mostly-uneducated user (myself) to create a patch between this mod and Digestive Alchemy? I usually run that mod to have a "balanced" method of healing, but it doesn't have any way of handling/digesting this mod's cum materials in any way. If it's just an easy xml file thing, like Rimworld, then I could probably stitch it together. It'd be even easier to do if there's actual dedicated modding tools that would allow me to load up both mods and connect the dots in a GUI, but if it's more involved and would require more advanced line-by-line coding then I'll probably just leave it alone. Basically I'm just curious overall what the process of modding Noita looks like currently. Indeed, it's sometimes a wonder how the game manages to function at all, lol. Well... this is more KT or Vitalie's area, but if I were to hazard a guess. "lewd_noita_redux/files/materials/materials.xml" is where you can edit cum materials. There's several different cum types, so hopefully you can figuring things out by looking through them. 1
Ranot Posted Saturday at 03:50 AM Posted Saturday at 03:50 AM (edited) On 9/9/2026 at 3:41 PM, Seisont said: Made a handful more feminine alt sprites for some of the enemies roughly based on the welwraith art Kobold Tinkerer shared. They don't have any UV maps rn though (sorry but I could not for the life of me get the UV gen tool to work). The Scav leader also has a version with and without its tits exposed since I wasn't sure if I wanted to keep them clothed or go nude for it. 😸 Noita Fem Enemies.zip 83.08 kB · 2 downloads Ya know, all these feminine sprites do have me wondering how they'd fit into the mod. The most obvious thing would be to have male/futa versions for sex with a female player, then once we enough sex animations for the vanilla enemies and a male/futa player sprite there could be more male/futa on female/futa. (Good luck following all of that...) If we get some futa sex animations to go along with the feminine enemies, I wouldn't mind adding a slider for the chance of a futa variant to spawn~ We've had some quite talented artists show up! So, I figured I'd make a list in regard to futa enemies and animations we'd currently be missing. - Futa_Alchemist (Could possibly use a new animation. There also doesn't seem to be a Mina version of the regular sex animation) - Futa_Firemage_Weak - Fungus_Big? (We have a female version, but Fungus_Big doesn't have sex animations at all yet) - Futa_Fungus_Giga - Futa_Miner - Futa_Miner_Weak (Has a variant with hair/either is fine) - Futa_Scavenger_Leader - Futa_Scavenger_Heal - Futa_Spearbot Also, a quick note. If anyone would like to make some of these, could you make both Kobold and Mina variants? I'm trying to avoid making BoxtoBox a Mina sprite slave, lol. I also wouldn't be opposed to enemy/enemy animations, but... it may be a few updates until we can get those added in. I'm attaching a file that should hopefully have all the relevant pngs. futa_resource.zip Edited Saturday at 03:52 AM by Ranot Formatting 3
kobold tinkerer Posted Saturday at 11:29 AM Posted Saturday at 11:29 AM 7 hours ago, Ranot said: I also wouldn't be opposed to enemy/enemy animations, but... it may be a few updates until we can get those added in. its already possible, kobold is technically an enemy and they can have sex 1
Seberious Posted Saturday at 01:18 PM Posted Saturday at 01:18 PM On 9/7/2026 at 8:29 PM, Timerz said: It was before the rewrite, someone came in while I was planning on creating an attempt on rewriting the mod and tried to inject their own ideas into the project and judging other's peoples decisions. I myself got involved on it a little bit. It might have been one of the small reasons why I didn't finish that code I created, but most of it was 99% just me not having enough time. The past is the past, learn about it, don't worry about it. Edit: I don't exactly remember who honestly. My mind is a bit foggy with that. It was the arguing with the Hammer guy, he and Pawarfull got into argument. Result, Hammer nowhere to be seen (you even forgot about him Timerz) and Pawarfull become disheartened and didn't wanted to continue doing sprites for mod.
Ranot Posted Saturday at 10:14 PM Posted Saturday at 10:14 PM 10 hours ago, kobold tinkerer said: its already possible, kobold is technically an enemy and they can have sex lmao my gawd, I feel dumb sometimes... I somehow forgot about those little buggers. 8 hours ago, Seberious said: It was the arguing with the Hammer guy, he and Pawarfull got into argument. Result, Hammer nowhere to be seen (you even forgot about him Timerz) and Pawarfull become disheartened and didn't wanted to continue doing sprites for mod. Right... I don't recall the context, but I felt pretty bad for Pawarfull. The last thing I believe was that the Kobold Lair stuff wasn't going how they wanted it to. As others have mentioned, the Kobold Lair was supposed to look drastically different than it does now and a bunch of other stuff had been planned for it. I really like Pawarfull's artwork too, so it especially sucks.
kobold tinkerer Posted Sunday at 10:16 AM Posted Sunday at 10:16 AM 11 hours ago, Ranot said: Kobold Lair tbh when i implemented kobold lair i did it as a proof of concept mostly for kobold respawn point and i dont like how i did it myself, but i was not interested in fixing it, so i agree with pawarfull on that. i took his work in progress drawing and randomly doodled around to kinda finish it and placed it next to lava lake so its easy to access, it was supposed to go somewhere else 1
Vitalie Posted Sunday at 08:11 PM Author Posted Sunday at 08:11 PM 9 hours ago, kobold tinkerer said: tbh when i implemented kobold lair i did it as a proof of concept mostly for kobold respawn point and i dont like how i did it myself, but i was not interested in fixing it, so i agree with pawarfull on that. i took his work in progress drawing and randomly doodled around to kinda finish it and placed it next to lava lake so its easy to access, it was supposed to go somewhere else Where do you think it SHOULD go?
Vitalie Posted Sunday at 08:13 PM Author Posted Sunday at 08:13 PM On 9/9/2026 at 8:22 AM, kobold tinkerer said: i found a bug, if heart mage debuff expires during sex it doesnt restore player health back to normal because the script tries to find player using EntityGetRootEntity which gets the scene entity, since player is a child of scene entity. to fix add this to init.lua -- fix heart mage debuff not restoring health back to normal if it expires during sex local path = "data/scripts/status_effects/hearty_end.lua" local content = ModTextFileGetContent(path) content = content:gsub([[EntityGetRootEntity]], [[EntityGetParent]]) ModTextFileSetContent(path, content) Fixed
Ranot Posted Sunday at 08:16 PM Posted Sunday at 08:16 PM 9 hours ago, kobold tinkerer said: tbh when i implemented kobold lair i did it as a proof of concept mostly for kobold respawn point and i dont like how i did it myself, but i was not interested in fixing it, so i agree with pawarfull on that. i took his work in progress drawing and randomly doodled around to kinda finish it and placed it next to lava lake so its easy to access, it was supposed to go somewhere else Ah, okay. I was wondering what happened with that. Huh, a kobold respawn point. I do like the idea of the player spawning somewhere other than the normal spawn point. I've seen mods like for Oblivion that spawn you somewhere else in some sort of scenario, like as a prisoner of bandits or a wealthy citizen. It'd be rough for the player if they spawned much further than the surface, but I think that'd be an idea that could be fun to play with.
Ranot Posted Sunday at 08:26 PM Posted Sunday at 08:26 PM 6 minutes ago, Vitalie said: Where do you think it SHOULD go? Well... I think what we have could be repurposed as something that isn't the Kobold Lair, but something adjacent. I'm thinking it could possibly go just to the right of where the player initially descends into the mine (not where you spawn, but just before you enter the mine biome). It could be some kind of station that Kobold's use before exiting or entering the cave to stock up on supplies or rest. The actual Kobold Lair could then be placed further down where it was intended...wherever that would be.
Vitalie Posted Sunday at 08:36 PM Author Posted Sunday at 08:36 PM 4 minutes ago, Ranot said: wherever that would be.
Zedrasil Posted Sunday at 08:53 PM Posted Sunday at 08:53 PM Personally: i say the Kobold Lair should be the entry to the Caves itself, as it's a small little civilization early on, without risk of a boss eating it. 1
kobold tinkerer Posted Sunday at 09:31 PM Posted Sunday at 09:31 PM 1 hour ago, Vitalie said: Where do you think it SHOULD go? pawarfull said it should be somewhere near karl racetrack, but i like the idea above to make it the starting point, replacing the mountain hall maybe it could even start the game with some quest, like retreiving extra fancy rock
Zedrasil Posted Sunday at 10:01 PM Posted Sunday at 10:01 PM i agree it should be the mouth of the Mountain; in the very least so you have a subtle pointer you should go back upwards. 1
Vitalie Posted Monday at 08:44 AM Author Posted Monday at 08:44 AM Update 1.4.0 The passive update has been released, I'll try and put out more smaller updates in the future but no promises 3
唯翼鸟 Posted Monday at 02:47 PM Posted Monday at 02:47 PM 6 hours ago, Vitalie said: 更新1.4.0 被动更新已经发布, 我会尝试未来发布更多小更新,但不能保证 Great, I can't wait to experience the new version 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now