Thank you, knowing where to look at exactly allowed to find a way to have it naturally, even though it could be implemented way better. I use those mods so maybe not everything here is accurate.
I use those mods:
https://itch.io/t/1167355/bugfix-for-10d-v4a
https://itch.io/t/984434/randomportraits-and-portrait-pack-editor-for-the-10-version
https://itch.io/t/1085124/chastity-belt-mod-v13e-for-strive-v10d (only expanded sex to make it work with leo)
https://itch.io/t/1099697/leos-mod-for-strive-v10
In the file newsexsystem.gd I take inspiration from issamesexencounter and create a function:
func isbestiality(givers, takers, actor = null): if givers.empty() || takers.empty(): return false var giversunique = givers[0].person.unique var takersunique = takers[0].person.unique if givers.has(actor): return takersunique in ['dog','horse'] elif takers.has(actor): return giversunique in ['dog','horse'] return falseI also add a field bestiality in actionshad variable:
# var actionshad = {addtraits = [], removetraits = [], samesex = 0, samesexorgasms = 0, oppositesex = 0, oppositesexorgasms = 0, punishments = 0, group = 0} var actionshad = {addtraits = [], removetraits = [], samesex = 0, samesexorgasms = 0, oppositesex = 0, oppositesexorgasms = 0, punishments = 0, group = 0, bestiality = 0}Then somewhere in the code add two lines after the samesexencounter counter update:
if sceneref.isencountersamesex(lastaction.givers, lastaction.takers, self) == true: actionshad.samesexorgasms += 1 else: actionshad.oppositesexorgasms += 1 # Adds bestiality points for potential "Deviant" gain if sceneref.isbestiality(lastaction.givers, lastaction.takers, self) == true: actionshad.bestiality += 1Also here:
for i in givers + takers: if isencountersamesex(givers,takers,i) == true: i.actionshad.samesex += 1 else: i.actionshad.oppositesex += 1 if isbestiality(givers,takers,i) == true: i.actionshad.bestiality += 1and somewhere else in the code add the trigger to add traits:
if i.actionshad.group*0.01 > randf(): i.person.trait_remove("Monogamous") i.person.add_trait("Fickle") # new code to add Deviant trait if i.actionshad.bestiality*0.01 > randf(): i.person.add_trait("Deviant")And I loaded a game, started an orgy with dogs/horses to get lots of counters, and managed to unlock the trait in-game.
Obviously, this workaround does not replace an actual implementation with flavor text, in-game consequences and stuff but it should be "safe" (as not modifying the game substantially).
Now the only issue, which I do not know the origin/cause (but was present in my version pre-modification) is that the save files are bloated with "dogs" "horses" of random races for siblings/family relationship even though I never got a baby in that save.
In "relativesdata":
"1243": { "children": [], "father": -1, "halfsiblings": [], "id": "1243", "mother": -1, "name": "Dog 1 Campbell", "race": "Halfkin Wolf", "sex": "male", "siblings": [], "state": "normal" }, "1244": { "children": [], "father": -1, "halfsiblings": [], "id": "1244", "mother": -1, "name": "Dog 2 Leon", "race": "Gnome", "sex": "male", "siblings": [], "state": "normal" }, "1245": { "children": [], "father": -1, "halfsiblings": [], "id": "1245", "mother": -1, "name": "Dog 3 Leawis", "race": "Centaur", "sex": "male", "siblings": [], "state": "normal" }, "1246": { "children": [], "father": -1, "halfsiblings": [], "id": "1246", "mother": -1, "name": "Horse 1 Ray", "race": "Centaur", "sex": "male", "siblings": [], "state": "normal" }, "1247": { "children": [], "father": -1, "halfsiblings": [], "id": "1247", "mother": -1, "name": "Horse 2", "race": "Scylla", "sex": "male", "siblings": [], "state": "normal" }, "1248": { "children": [], "father": -1, "halfsiblings": [], "id": "1248", "mother": -1, "name": "Horse 3", "race": "Harpy", "sex": "male", "siblings": [], "state": "normal" },and so on. Not sure what's the deal.