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.