Jump to content

[Mod] Lewd Noita Redux


Recommended Posts

Posted
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?

Posted (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 by Ranot
Removed stretched copied background
Posted (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 by kobold tinkerer
Posted

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)
Posted
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.)

Posted
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.

Posted

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. 😸
fem2.png.8b1a88f56461d53a8b79bdc66422bac1.png

Noita Fem Enemies.zip

Posted
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.

 

Posted (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. 😸
fem2.png.8b1a88f56461d53a8b79bdc66422bac1.png

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 by Ranot
Formatting
Posted
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

Posted
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.

Posted
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.

Posted
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

Posted
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?

Posted
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

Posted
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.

Posted
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.

Posted

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.

Posted
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

Posted
6 hours ago, Vitalie said:

更新1.4.0 被动更新已经发布,

我会尝试未来发布更多小更新,但不能保证

Great, I can't wait to experience the new version

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...