This is a story on how I tried to navigate the game files to understand what is going on, but basically I am searching on how to get the irresistible trait. Only the MC got it by accident.
So in /assets/data/traits.gd we have the traits description, with a list of conditions on how to acquire the traits (in the var sex_traits, which had a comment stating "only in interaction tab")
We learn that lewdness_aura is the only trait you cannot acquire naturally.
I don't understand how to acquire bedroom_prodigy, but I got it several times by accident.
Now the main question is the irresistible trait, that requires "new_consented_partners" to be of value >= 3.
I found the variable "new_consented_partners" in /src/interaction_member.gd, but I have no clue how to increase it during sex scenes.
By setting the variable to, let's say 4, now I have a chance to get it.
On a side note, I've set several group sex but some characters still only have "1" sexual partners in the information tab, even when setting the parameter to non-zero. Not sure if it's a bug.
So I found the variable again in \gui_modules\Interaction\Scripts\InteractionMainModule.gd and it's essentially increased in the function startscene.
And at the beginning of the function, I see the function always start with loops with lowest_consent = 100, which was strange because a lot of my characters have consent above 100. Which makes me realized the trait was acquired during a scene with 3 new characters.
The line "var lowest_consent = 100" has 3 occurences, so I changed it to "var lowest_consent = 10000000".
To debug and not let behaviour belong to randomness, I change line "chance = (randf()*100 < (5 + 5 * p.person.get_stat('sexuals_factor')))" to "chance = true".
This does not change anything, simply because the code has already registered the partners, despite the information tip in the menu saying they only have one or two or zero partners. So I tried it with new partners and it works.
So I try now by resetting var lowest_consent = 100, but keeping chance = true.
Then a bit lower I notice one piece of code:
for i in givers + takers: if isencountersamesex(givers,takers,i) == true: i.actionshad.samesex += 1 else: i.actionshad.oppositesex += 1 if i.person_sexexp.actions.has(scenescript.code): i.person_sexexp.actions[scenescript.code] += 1 else: i.person_sexexp.actions[scenescript.code] = 1 i.new_action_performed = true for k in givers + takers: if k != i: if i.person_sexexp.partners.has(k.id): i.person_sexexp.partners[k.id] += 1 else: i.person_sexexp.partners[k.id] = 1 if dict.consents[k.id] - scenescript.consent_level > 0: k.new_consented_partners += 1
From my testing, it seems like you got one shot of getting the trait with new partners, if you don't get it, those will never count anymore.
Also weird thing, you can get the irresistible trait by subduing inexperienced people with 0 consent and then roping them. They will count as new consented partners for the sake of the trait unlocking.
I am not sure that's intended.
Overall, I think the system needs to be changed a little bit to be less random. What about having a progress bar for sex traits, but the sex traits are hidden?
Like "new hidden fetish: progress x%", if the fetish is not practiced for some time, the progress lowers and then disappear. The Wits and Sex factors can play a part on how fast a fetish is forgotten if not fully acquired, or how fast it is acquired. Less randomness, less "impossible to get the trait unless attempting with new people". This would not replace the hidden fetish to discover by dating: once a fetish is acquired/discovered, it stays there. This could also apply to forgetting negative traits: "changing mind on fetish: x%".
This could be cool, it would leave players wondering what fetish is out there.