Jump to content

[Mod] Lewd Noita Redux


Recommended Posts

Posted
1 hour ago, Samekichi said:

I won't take away that your remake of the mod was some really nice work, but you're horribly pretentious to come and bash someone else's code just because it's not how you would have coded it.

Thanks... I do appreciate it. Stuff like this makes it incredibly hard to mod sometimes...

 

19 minutes ago, Seisont said:

can y'all like chill
seriously
idk what's going on in people's personal lives but there is no way arguing about the level of polish of a work in progress noita sex mod is worth anyone's time or energy

like, yeah there's gonna be weird bugs or animation artifacts or inefficient code structure. but like, who cares? the mod isn't finished. Ive noticed a lot of weirdness / jank as I've been actively playing and at most its a "huh, that's weird / doesnt look right" and then i move on with my life and keep playing the game

shit'll be ironed out and refined. none of it has to be perfect yet and even then it won't ever be perfect because that just isnt how shit works.
like, c'mon y'all

I'm sorry... most of this stuff was kept in the club chat, but KT left it recently. Things have been boiling over for a while now, and I guess it finally hit the bursting point.

 

I have the same mindset in regards to the mod. That "Player is back to normal" message for example? I left it in there on accident, since I saw the message so many times that I stopped being conscientious to it. I also know that it'll be patched up for the next version, so it wasn't a big deal. This mod is a work-in-progress, animations will be touched up as it goes along, errors and bugs will be fixed... there will also be new errors and bugs that will pop up and be fixed again. It's silly to expect perfection, especially for something intended to be a fun thing to do as a hobby.

 

My apologies to everyone that actually read through all of that... I really do try to be more positive and supportive, but it's hard when you're constantly being smacked back down.

 

So... I'll be taking a bit of a break, I really need some time to wind down a bit. I'll still likely be working on the mod a bit and keeping in touch with Vitalie, so no worries about that. 

Posted

i'm sorry everyone, i was wrong. i was butthurt. i should not have acted like a monkey when posting about errors. i still dont agree with code changes and i think animations could be done better but i should have remained calm when speaking about this. even with me having to fix animations it was still a net positive for everyone, having eventually fixed animation is better than having no animations at all. besides artists create the main value of the mod and it wouldnt exist without them at all. i apologize to anyone i offended with my language. wont happen again. also i apologize to @Vitalie and @Ranot for acting the same way in the dev club, i didnt understand how it looks from another perspective until you told me.

Posted (edited)

Jesus fuck dude, I was busy for like 3 days and come back to this, what the holy hell. I just wanna make a porn mod dude. I did not think shit would hit the fan this hard.

Edited by Vitalie
Posted

What was I just summoned to? What. Why are you guys screaming at each other? I Thought this place was starting to get chill and grow, but I was just Quoted here in mist of a tactical airstrike. Let me get context real quick here tho.

image.jpeg.971c55c9fbb217141eb4356e0e7973f8.jpeg

Posted

Okay, I've read the messages and some of the code. And I must say got the fear of the _init.lua files too. I myself got the PTSD from the previous version of the mod, but I really must say, that this is not the same thing, and maybe the best way to handle adding more components to enemies without hardcoding then. You've coded Noita, and you know how messy the ECS implementation of this game is, and how strange lua behaves in it. Previously on the old version there was TOO MUCH duplicated hardcoded files that did the same thing out of clueless on how the game worked, and it made it extremely difficult to fix things.

This is not the same thing. What its doing its simply adding a reference to the entity file, and the ability to add custom components for special entities. And if you look at the files you will see that, they're mostly 10 lines of code, that just adds a single component, and some just add the reference without doing anything. It's even easy to just remove an component there or add one.

However I must agree that this might not be the best use for it. This is good for special enemies but adding it to EVERY enemy, even the basic ones is a bit too much work, and leads to you needing to go at every enemy just to add a single thing. I don't know what decision went for it exactly I am just a clueless guy trying to get what is happening right now, but wouldn't be better to add the dash ability on the base enemies entity XMLs instead of adding it individually to every enemy? Or better just add that ability when its near a target and it reaches a certain threshold (I did a similar thing before).

 

But still, CHILL. No controversy is healthy for any project AT ALL. Discussions about a problem is okay, but don't hit the ceiling with personal beef. I do appreciate the apology of @kobold tinkerer here though, that's honestly mature of you.

As for the wrong sprite animations being formatted wrongly, and making you guys be forced to fix it. I would suggest to just create a guide on how to do it right, and point out the common issues. Then just plug it in on the front page of the mod, and watch the magic happen, because any warning you guys mention here will be buried really quickly, and forgotten, but not the main page. It's not even hard to do them, you can even create a separate thread just for art contributions. That would be nice.

Anyhow I didn't expect another explosion with modders around this game. Noita must attract some perverse controversy aura or something like that. -.-

Posted (edited)
5 minutes ago, kobold tinkerer said:

where is the other one?


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.

Edited by Timerz
Posted
1 minute ago, Timerz said:

It was before the rewrite

oh, you mean here. i thought some other mod. i remember that. i found it funny honestly because no one was doing anything except pitching ideas but argued like there were major decisions to be made.

Posted

Since it was mentioned earlier, I tested out making a female alternate sprite for an enemy. It's just the basic dynamite throwing miner but it looks decent in game. 😸
It'll need to be implemented properly (I just overwrote the normal sprite while testing it) though.
Though if enemies like this get female alt sprites, is it possible to pitch their sound effects to be slightly more feminine? 

 miner.png.b0acf516f25a7938f73fda1e44fedcb9.pngminer_weak.png.08196fde2e96d0190adcbb244ca895b7.png

Fem Miner.zip

Posted
17 hours ago, kobold tinkerer said:

i'm sorry everyone, i was wrong. i was butthurt. i should not have acted like a monkey when posting about errors. i still dont agree with code changes and i think animations could be done better but i should have remained calm when speaking about this. even with me having to fix animations it was still a net positive for everyone, having eventually fixed animation is better than having no animations at all. besides artists create the main value of the mod and it wouldnt exist without them at all. i apologize to anyone i offended with my language. wont happen again. also i apologize to @Vitalie and @Ranot for acting the same way in the dev club, i didnt understand how it looks from another perspective until you told me.

Thank you... and, I'm sorry as well. You honestly surprised me, I wasn't expecting that level of maturity after all that. I definitely got over defensive and overreacted, and the _init thing ended up being the tipping point. My main interest has always been in the code, so when it came to animations I'd put the work in to make sure they're functional, but didn't take the time to also make sure they lined up correctly. I'll do my best with the animations from now on, so please do correct me if I make another mistake.

 

 

8 hours ago, Timerz said:

Okay, I've read the messages and some of the code. And I must say got the fear of the _init.lua files too. I myself got the PTSD from the previous version of the mod, but I really must say, that this is not the same thing, and maybe the best way to handle adding more components to enemies without hardcoding then. You've coded Noita, and you know how messy the ECS implementation of this game is, and how strange lua behaves in it. Previously on the old version there was TOO MUCH duplicated hardcoded files that did the same thing out of clueless on how the game worked, and it made it extremely difficult to fix things.

This is not the same thing. What its doing its simply adding a reference to the entity file, and the ability to add custom components for special entities. And if you look at the files you will see that, they're mostly 10 lines of code, that just adds a single component, and some just add the reference without doing anything. It's even easy to just remove an component there or add one.

However I must agree that this might not be the best use for it. This is good for special enemies but adding it to EVERY enemy, even the basic ones is a bit too much work, and leads to you needing to go at every enemy just to add a single thing. I don't know what decision went for it exactly I am just a clueless guy trying to get what is happening right now, but wouldn't be better to add the dash ability on the base enemies entity XMLs instead of adding it individually to every enemy? Or better just add that ability when its near a target and it reaches a certain threshold (I did a similar thing before).

I brought you up on a random whim, and it ends up I'm really glad I did. I know my code isn't the easiest to understand, so it's great to get some feedback on how it functions.

 

Most of those files that don't do anything were meant to help people understand the structure of the folder and files. Since I made it, it's really hard to know how well other people can pick up on it. I mean, the whole point is for other people to be able to work with it too. And honestly... I fully get where KT is coming from in regards to all the folders and files, it's a lot. I've tried thinking of ideas that wouldn't require all of them... but the modding system for Noita makes it really difficult to do so.

 

In regards to the dash ability, yes, if you wanted dash to be applied to every enemy with a certain base, adding dash to that base would absolutely be the best option ( I think some enemies might override it though? I'd have to look...). The code originally had a table of enemies that would be given the dash ability, which is what I followed when adding that part. This is one of those instances where some feedback would be helpful, since I was always iffy on the implementation.

 

If someone can think of an alternative to the _init files or a way to improve it, I'm open to suggestions. I just really don't want to pack everything into init.lua...

 

 

7 hours ago, 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.

Yeah, I was thinking about that. I recall a few names, but I'd rather not dig that stuff back up. 

 

 

 

Posted
4 hours ago, Ranot said:

I just really don't want to pack everything into init.lua

is it possible to keep _init.lua but store them all in a single folder and each file would be named same as the enemy it edits? organization would be simpler that way, no need for each file to be in its own folder, and each file would have unique name

 

like

_spearbot.lua

_fungus_giga.lua

etc

 

the folder can be named init_extensions

Posted (edited)
11 hours ago, Seisont said:

pitch their sound effects to be slightly more feminine

the only way i know is to create their own soundbank

 

although i remember one beta version of noita had voice break for bats which was later fixed, i wonder how they did that. i would download that version and investigate but i dont remember which version that was, and its most likely was the engine problem

 

worst case we can just assume hiisi have different physiology and their females sound the same as males. just like dwarven women have beards. btw have you tried adding long hair to them?

Edited by kobold tinkerer
Posted
4 hours ago, kobold tinkerer said:

worst case we can just assume hiisi have different physiology and their females sound the same as males. just like dwarven women have beards. btw have you tried adding long hair to them?


fair point, and I hadn't considered that yet but I'll give a try and see how it looks 😸
 

1 hour ago, kobold tinkerer said:

my idea for booba sprites was inspired by this picture. i hope it can help as a reference

 

oh these look nice, i'll definitely see if I can draw some inspiration from them 👍

Posted (edited)

i figured out a way to save modified entities between restarts/unloading

 

you probably noticed that if you have steve in holy mountain with peace with gods perk the charm effect never goes away. the reason is "mCharmDisabledCameraBound" for GameEffectComponent which apparently makes the engine remember the entity including all its modifications and this parameter is set to true when you do

 

GetGameEffectLoadTo(entity, "CHARM", false)

 

so the trick is to do this to entity you want to keep modified and then remove all components from charm entity you just added so it no longer has charm effect.

 

this will keep both child entity and parent entity remembered, including all changes, even amount of health, even after many restarts. i just tested it with alternative sprite for spearbot, i am uploading the updated alt_sprite.lua

 

it is called booba_sprite.lua because i recalled we have alternative scenes and we cant have _alt.xml at the end of the sprite which would break alt scenes, so it is now _booba.xml. for example "fungus_giga_booba.xml"

 

so if you want to create a scene for modified sprite you would also need to call it "fungus_giga_booba.xml" which would trigger a different scene instead of the one for vanilla "fungus_giga.xml"

 

 

 

edit: i just realized im an idiot. this method prevents entity from unloading which will make the game more and more laggy. dont do this. i removed the attached file so no one accidentaly uses it.

 

Edited by kobold tinkerer
Posted

thought of and idea to damage player if being fucked by an enemy with berserk status

 

-- slightly damage kobold if enemy has berserk status effect
-- DAMAGE_PHYSICS_HIT because it makes cool impact sound
if sd[scene].enemy_id ~= nil and GameGetGameEffect(sd[scene].enemy_id, "BERSERK") ~= 0 then
  EntityInflictDamage(sd[scene].kobold_id, 0.04, "DAMAGE_PHYSICS_HIT", "You were fucked too hard", "NORMAL", 0, 0, sd[scene].enemy_id)
  if sd[scene].second_enemy_id ~= nil and GameGetGameEffect(sd[scene].second_enemy_id, "BERSERK") ~= 0 then
  	EntityInflictDamage(sd[scene].kobold_id, 0.04, "DAMAGE_PHYSICS_HIT", "You were fucked too hard", "NORMAL", 0, 0, sd[scene].second_enemy_id)
  end
  if IsPlayer(sd[scene].kobold_id) == true then
    local berserk_fucker = GameTextGetTranslatedOrNot(EntityGetName(sd[scene].enemy_id))
    if berserk_fucker == "" then
    	berserk_fucker = "this creature"
    end
    GamePrint("Berserkium makes " .. berserk_fucker .. " fuck you too hard!")
  end
end

 

insert this after sound play snippet in sex_scene.lua

Posted (edited)
7 hours ago, kobold tinkerer said:

i figured out a way to save modified entities between restarts/unloading

 

you probably noticed that if you have steve in holy mountain with peace with gods perk the charm effect never goes away. the reason is "mCharmDisabledCameraBound" for GameEffectComponent which apparently makes the engine remember the entity including all its modifications and this parameter is set to true when you do

 

GetGameEffectLoadTo(entity, "CHARM", false)

 

so the trick is to do this to entity you want to keep modified and then remove all components from charm entity you just added so it no longer has charm effect.

 

this will keep both child entity and parent entity remembered, including all changes, even amount of health, even after many restarts. i just tested it with alternative sprite for spearbot, i am uploading the updated alt_sprite.lua

 

it is called booba_sprite.lua because i recalled we have alternative scenes and we cant have _alt.xml at the end of the sprite which would break alt scenes, so it is now _booba.xml. for example "fungus_giga_booba.xml"

 

so if you want to create a scene for modified sprite you would also need to call it "fungus_giga_booba.xml" which would trigger a different scene instead of the one for vanilla "fungus_giga.xml"

booba_sprite.zip 972 B · 1 download

 

 

i just realized im an idiot twice. first because i could just remove camera bound component instead of all this. second because this prevents entity from unloading which will make the game more and more laggy.

 

this probably means charmer perk also makes game more laggy since it adds permanent charm. i need to investigate.

 

actually no, they unload even with camera bound component removed entirely. i dont get it, how does the game remember those entities then?

Edited by kobold tinkerer
Posted

image.jpeg.369b03e262987a0e1e5021142c655710.jpeg


I left for the weekend for work only to come back to finding out this thread was on fire, had the flames put out, and revert to status-quo in the span of 3 days. Holy hell.

Also lesbian animations for fem-sprite enemies when? :tongue:

Posted
51 minutes ago, kobold tinkerer said:

i dont get it, how does the game remember those entities then?


If they're ID are persistent across game sessions, then maybe you guys can do a trick called "storing data in a file". But that is a suggestion, not sure how the game handles the memory of it all.

 

Posted (edited)
1 hour ago, Timerz said:


If they're ID are persistent across game sessions, then maybe you guys can do a trick called "storing data in a file". But that is a suggestion, not sure how the game handles the memory of it all.

 

if you remove camera bound component the entity still unloads and when you get back or restart it has different id, but somehow game remembers all edits, so it must be stored somewhere, maybe in chunk files. i thought it would work like StreamingKeepAliveComponent which keeps entity loaded like kolmi or tiny but that doesnt seem to be the case, so it should be fine

 

whats more interesting is how new enemies mod keeps some bosses always loaded, because i searched for StreamingKeepAliveComponent in mod files and found nothing, so its a mystery

Edited by kobold tinkerer
Posted (edited)
16 hours ago, kobold tinkerer said:

is it possible to keep _init.lua but store them all in a single folder and each file would be named same as the enemy it edits? organization would be simpler that way, no need for each file to be in its own folder, and each file would have unique name

 

like

_spearbot.lua

_fungus_giga.lua

etc

 

the folder can be named init_extensions

That's... a really good idea, actually. Removes the bloat and makes it easier to find what you're looking for. I may still need a bunch of folders for composite sprites eventually... though a good naming scheme could remedy that problem a bit, but that's a later problem. I'll see about getting this set-up instead, thanks!

 

 

2 hours ago, Timerz said:

If they're ID are persistent across game sessions, then maybe you guys can do a trick called "storing data in a file". But that is a suggestion, not sure how the game handles the memory of it all.

The issue I have is that Noita blocks off any os functions, so you can't make new files or permanently alter anything (if anyone can figure out a way, please let me know). It's the reason I had to make an entity table to search for entities instead of just recursively searching through the data/entities folder. That said, the next update includes something I'm currently messing with which involves memory storage.

 

I'm not sure yet about how much information the game actually stores inbetween runs and sessions, so I still need to run some tests to understand that a bit better. My idea was to give entities a VariableStorageComponent that contains a table(within a string) to pull data for them from. But, if the game removes added components every time you close a game, it won't exactly work... at least for data that should be changing dynamically. It doesn't help that some components don't seem to be removable (Like a lot of components for the Player).

 

Hmm... I wonder if it has something to do with an entity's xml. Could components from xml's be permanent? If you wiped all components from an entity's xml file and added them when loading instead, would they then be removable? Things I'll need to test...

 

 

8 hours ago, kobold tinkerer said:

thought of and idea to damage player if being fucked by an enemy with berserk status

 

-- slightly damage kobold if enemy has berserk status effect
-- DAMAGE_PHYSICS_HIT because it makes cool impact sound
if sd[scene].enemy_id ~= nil and GameGetGameEffect(sd[scene].enemy_id, "BERSERK") ~= 0 then
  EntityInflictDamage(sd[scene].kobold_id, 0.04, "DAMAGE_PHYSICS_HIT", "You were fucked too hard", "NORMAL", 0, 0, sd[scene].enemy_id)
  if sd[scene].second_enemy_id ~= nil and GameGetGameEffect(sd[scene].second_enemy_id, "BERSERK") ~= 0 then
  	EntityInflictDamage(sd[scene].kobold_id, 0.04, "DAMAGE_PHYSICS_HIT", "You were fucked too hard", "NORMAL", 0, 0, sd[scene].second_enemy_id)
  end
  if IsPlayer(sd[scene].kobold_id) == true then
    local berserk_fucker = GameTextGetTranslatedOrNot(EntityGetName(sd[scene].enemy_id))
    if berserk_fucker == "" then
    	berserk_fucker = "this creature"
    end
    GamePrint("Berserkium makes " .. berserk_fucker .. " fuck you too hard!")
  end
end

 

insert this after sound play snippet in sex_scene.lua

"You were fucked too hard" I don't know why I find this so funny. Like there's a threshold for being fucked that goes from "oh, this sucks...", to "DAMN, this HURTS!".

 

Edited by Ranot
Posted
4 hours ago, kobold tinkerer said:

i just realized im an idiot twice. first because i could just remove camera bound component instead of all this. second because this prevents entity from unloading which will make the game more and more laggy.

 

this probably means charmer perk also makes game more laggy since it adds permanent charm. i need to investigate.

 

actually no, they unload even with camera bound component removed entirely. i dont get it, how does the game remember those entities then?

Good lord... it's nice to see I'm not the only one that finds it really confusing. I could add my thoughts, but they'd only be theories. I'll also need to dig in a bit to figure out what's going on.

 

I had been assuming that the streaming components and functions were mainly for integrating things like Twitch. But, if they could also be used to store data between sessions, that could be immensely helpful!

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