nagothm Posted February 3, 2023 Posted February 3, 2023 I am using SoS with a female pubic hair addon. While some of my female outfits are full body ones and should conceal the pubs, others are only a top, designed to be used with skirts, trousers, etc. Those should show the pubs when the waist is not equipped. Normally the SOS_Revealing keyword would solve this issue, however ALL of my male outfits are full outfits, so where a particular armor may only be a shirt in the female version, on the male it is an entire armor. So if I use the keyword on the outfit, the female version is fine, but the male NPCs have a boner sticking out the front of their armor. If I don't use the keyword, the male version is fine, but the female version removes the pubs even though they should be showing. I am trying to completely exclude males from being affected by the SOS_Revealing keyword, and have tried a lot of different things in the scripts, but can't seem to figure it out. If anyone can point me in the right direction, or point me to a mod where this has already been done, I would appreciate it. 2
Dorabella Posted February 3, 2023 Posted February 3, 2023 2 hours ago, nagothm said: others are only a top, designed to be used with skirts, trousers, etc If it is a matter of some dress, it would suffice to apply the pubic hairs in OS . This should fix the problem
nagothm Posted February 4, 2023 Author Posted February 4, 2023 16 hours ago, ?????? 1627 said: If it is a matter of some dress, it would suffice to apply the pubic hairs in OS . This should fix the problem I would much prefer a scripting fix if it is possible. Adding it directly to the body opens up another can of worms in getting pubs to cover properly when wearing UW or trousers, etc as well as the huge amount of extra work in adding it to the thousands of outfits in my build.
traison Posted February 4, 2023 Posted February 4, 2023 (edited) It looks like the magic is done in SOS_RevealingArmorMagicEffect_Script.psc, so what I'd try first is adding a gender check somewhere in here. Like this for instance (based on Schlongs_of_Skyrim_SE - v1.1.4). If SOS_Data.FindRevealingArmor(bodyArmor) != -1 SOS_Data.RemoveRevealingArmor(bodyArmor) SOS_Data.AddConcealingArmor(bodyArmor) if (!bodyArmor.HasKeyword(SOS_Revealing)) bodyArmor.AddSlotToMask(0x00400000) endIf akTarget.RemoveItem(genitals, 999, true) Debug.trace("SOS_RevealingArmorMagicEffect: armor set to concealing") SOS_Quest.Notify(bodyArmor.GetName() + " set to be a Concealing Armor") ; todo translate elseif SOS_Data.FindConcealingArmor(bodyArmor) != -1 || Math.LogicalAnd(bodyArmor.GetSlotMask(), bodyArmor.kSlotMask52) If (akTarget.GetSex() == 1) SOS_Data.RemoveConcealingArmor(bodyArmor) SOS_Data.AddRevealingArmor(bodyArmor) bodyArmor.RemoveSlotFromMask(0x00400000) akTarget.EquipItem(genitals, false, true) SOS_Quest.UpdateNinodes(akTarget) Debug.trace("SOS_RevealingArmorMagicEffect: armor set to revealing") SOS_Quest.Notify(bodyArmor.GetName() + " set to be a Revealing Armor") ; todo translate EndIf endIf Edit: Some of those functions look suspiciously like they're completely bound to armor forms. Could be that SOS would have to be rewritten to be more per-actor rather than per-armor. Edited February 4, 2023 by traison
Dorabella Posted February 4, 2023 Posted February 4, 2023 1 hour ago, nagothm said: extra work in adding it to the thousands of outfits in my build. Obviously, the solution is applicable on two to three outfits, certainly not on a similar amount of money, it would certainly be a huge amount of work
belegost Posted February 5, 2023 Posted February 5, 2023 (edited) 9 hours ago, traison said: Edit: Some of those functions look suspiciously like they're completely bound to armor forms. Could be that SOS would have to be rewritten to be more per-actor rather than per-armor. SoS MCM itself states that the keyword affects all instances of a given outfit, so there is no gender distinction. As you suggested, it would probably need a complete rewrite of the whole mod. Edited February 5, 2023 by belegost
traison Posted February 5, 2023 Posted February 5, 2023 5 hours ago, belegost said: SoS MCM itself states that the keyword affects all instances of a given outfit, so there is no gender distinction. As you suggested, it would probably need a complete rewrite of the whole mod. Yeah but it still does something to each actor to add or remove a dong. My hope was that if this can be isolated and wrapped in a gender check, you can get away without rebuilding the entire thing. However, looking at the code above, it does more than just add an armor item - it seems to modify the equipment slots of the armors themselves, among other things.
nagothm Posted February 5, 2023 Author Posted February 5, 2023 (edited) On 2/4/2023 at 8:57 AM, traison said: It looks like the magic is done in SOS_RevealingArmorMagicEffect_Script.psc, so what I'd try first is adding a gender check somewhere in here. Like this for instance (based on Schlongs_of_Skyrim_SE - v1.1.4). If SOS_Data.FindRevealingArmor(bodyArmor) != -1 SOS_Data.RemoveRevealingArmor(bodyArmor) SOS_Data.AddConcealingArmor(bodyArmor) if (!bodyArmor.HasKeyword(SOS_Revealing)) bodyArmor.AddSlotToMask(0x00400000) endIf akTarget.RemoveItem(genitals, 999, true) Debug.trace("SOS_RevealingArmorMagicEffect: armor set to concealing") SOS_Quest.Notify(bodyArmor.GetName() + " set to be a Concealing Armor") ; todo translate elseif SOS_Data.FindConcealingArmor(bodyArmor) != -1 || Math.LogicalAnd(bodyArmor.GetSlotMask(), bodyArmor.kSlotMask52) If (akTarget.GetSex() == 1) SOS_Data.RemoveConcealingArmor(bodyArmor) SOS_Data.AddRevealingArmor(bodyArmor) bodyArmor.RemoveSlotFromMask(0x00400000) akTarget.EquipItem(genitals, false, true) SOS_Quest.UpdateNinodes(akTarget) Debug.trace("SOS_RevealingArmorMagicEffect: armor set to revealing") SOS_Quest.Notify(bodyArmor.GetName() + " set to be a Revealing Armor") ; todo translate EndIf endIf Edit: Some of those functions look suspiciously like they're completely bound to armor forms. Could be that SOS would have to be rewritten to be more per-actor rather than per-armor. I tried this out and it came out the same as my other experiments on this script did, I am using the DLL free version by erstam. But the logic is the same. My original attempts were variations of this Elseif StorageUtil.FormListHas(None, "SOS_ConcealingArmors", bodyArmor) || Math.LogicalAnd(bodyArmor.GetSlotMask(), 0x00400000) StorageUtil.FormListRemove(None, "SOS_ConcealingArmors", bodyArmor) StorageUtil.FormListAdd(None, "SOS_RevealingArmors", bodyArmor, allowDuplicate = false) if (akTarget.GetSex() == 1) bodyArmor.RemoveSlotFromMask(0x00400000) endIf akTarget.EquipItem(genitals, false, true) SOS_Quest.UpdateNiNodes(akTarget) Debug.Trace("SOS_RevealingArmorMagicEffect: Armor set to revealing.") SOS_Quest.Notify(bodyArmor.GetName() + " set to be a Revealing Armor") ; todo translate EndIf So I implemented the code example that you provided instead Elseif StorageUtil.FormListHas(None, "SOS_ConcealingArmors", bodyArmor) || Math.LogicalAnd(bodyArmor.GetSlotMask(), 0x00400000) If (akTarget.GetSex() == 1) StorageUtil.FormListRemove(None, "SOS_ConcealingArmors", bodyArmor) StorageUtil.FormListAdd(None, "SOS_RevealingArmors", bodyArmor, allowDuplicate = false) bodyArmor.RemoveSlotFromMask(0x00400000) akTarget.EquipItem(genitals, false, true) SOS_Quest.UpdateNiNodes(akTarget) Debug.Trace("SOS_RevealingArmorMagicEffect: Armor set to revealing.") SOS_Quest.Notify(bodyArmor.GetName() + " set to be a Revealing Armor") ; todo translate EndIf EndIf Again same result. SOS_Revealing keyword = displaying schlong/pub on male and female / No keyword = no display on either. I don't understand why it just seems to ignore the conditions completely, as if it is not even taking the code here into account. Any other possible suggestions? Edited February 5, 2023 by nagothm
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now