Jump to content

Recommended Posts

Posted
2 hours ago, Dez65 said:

I've added the Nearly Naked and Micro-skirt keywords to this outfit, along with Pelvic Flash Extreme and Ass Flash High.  But this fires ass and genitals permanently.  I'd like for this to be read as topless but ass and genital hidden except for a high chance of ass and pelvic flash.  

 

Microskirt is your mistake. Microskirt does not cover anything. Use Miniskirt instead.

Posted
2 hours ago, Dez65 said:

I've added the Nearly Naked and Micro-skirt keywords to this outfit, along with Pelvic Flash Extreme and Ass Flash High.  But this fires ass and genitals permanently.  I'd like for this to be read as topless but ass and genital hidden except for a high chance of ass and pelvic flash.  

That's because you are using the keywords incorrectly. From the description on the first page:

 

Nearly Naked - Intended for hyper-skimpy/slutty outfits that effectively cover nothing. This keyword will prevent you from being considered Nude, but nothing else.

 

Microskirt - Prevents Bottomless condition, but nothing else

 

Only Curtains require Flash Risk Keywords - All other items do not.

 

I would use the following keywords to achieve the result you are looking for:

 

AND_AssCurtain

AND_AssFlashRiskHigh

AND_PelvicCurtain

AND_PelvicFlashRiskExtreme

 

Be advised that due to the dice rolls and the high percentage chance of rolling under the Flash Risk values for these levels, you are likely to be exposing yourself completely more often than not.

Posted
On 9/18/2024 at 5:53 PM, NymphoElf said:

@LynErso666 Correct. There are 3 "Layers" considered in nudity conditions. Underwear is the inner-most layer, with ArmorTop/Bottom as the middle layer, and Curtains as the outer layer.

 

Miniskirts count as two curtains in one (Pelvis Curtain and Ass Curtain), so they exist on the outer layer.

 

Each layer reveals any layers underneath if flashing. The layers are also split between Top and Bottom, with the Bottom split further between Front (Pelvis) and Back (Butt). If all of these sections are empty, you're nude. Otherwise, an appropriate condition is applied based on which ones are filled and/or flashing.

 

Therefore, there's functionally 9 "slots" considered (Top: Curtain, Top, Bra | Pelvic: Curtain, Bottom-Front, Underwear-Front | Butt/Ass: Curtain, Bottom-Back, Underwear-Back). Most Bottoms cover both, but there are exceptions - Hotpants and Showgirl Skirts. Same with Underwear, but all will cover the front if they also cover the back at the same time.

 

NoCover items will prevent nudity, and so will pasties. It's relatively difficult to attain the nude condition as long as you're wearing SOMETHING that isn't a helmet, gauntlet, or boots, but it's also not impossible either. Wearing only Curtains make it possible to be nude if all are flashing at the same time, and CStrings also allow the nude condition if they are flashing and no other cover exists.

 

All of my keywords have followed the common trend of Armor/Clothing mods to determine for what it looks for. There MIGHT be the extremely rare oddity which doesn't quite fit in this system, but they're so rare (if they even currently exist) that I doubt it'd be worth considering.

 

 

Ahhhh! I already thought it was brilliant 😂 This is genius. Well done. This confirms I've been using the mostly correctly. A few hundred outfits will need to be adjusted but xEdit lets you do massive batch adjustments theze days to all sorts of records so yay! 😂 

 

But that's like at least 2,000 clothing items I've keyworded correctly over the months, so Im very happy to learn this. Thanks so much

Posted
8 hours ago, NymphoElf said:

Microskirt is your mistake. Microskirt does not cover anything. Use Miniskirt instead.

Thanks!  That works perfect for this outfit!

 

8 hours ago, IBAGadget said:

Be advised that due to the dice rolls and the high percentage chance of rolling under the Flash Risk values for these levels, you are likely to be exposing yourself completely more often than not.

Also thanks!  I had not fully understood the flashing feature.  I also dialed back the risk keywords to midrange for the ass and high for the pelvis.

Posted (edited)

@Dez65 @IBAGadget I still need to update the description, but in 1.0 the flash odds customization is limited by the other keywords.

 

For example, if your PelvicFlashRiskLow odds are set to 10% in the MCM then PelvicFlashRisk cannot be set lower than 10%.

 

Likewise, PelvicFlashRiskLow cannot be higher than PelvicFlashRisk.

Edited by NymphoElf
Posted
17 hours ago, Dez65 said:

Updated to version 1 mid-game with a cleansave.  Everything seems to be working properly and Sexy Adventures is firing crime law violations based on AND keywords.

 

I'm using BD's Armor and Clothes Replacer - CBBE 3BA (3BBB) at Skyrim Special Edition Nexus - Mods and Community (nexusmods.com) which let's me run Bodyslide to produce a Necromancer's Robe that's basically a topless micro skirt:  Screenshot2024-09-20181556.png.f729b3192300560220cef270db81ce30.png

 

I'd like to add Keywords to my patch for BD replaced vanilla outfits so that this is read as topless but with a skirt that covers ass and genitals and extreme flashing chance for genitals and ass.

 

I've added the Nearly Naked and Micro-skirt keywords to this outfit, along with Pelvic Flash Extreme and Ass Flash High.  But this fires ass and genitals permanently.  I'd like for this to be read as topless but ass and genital hidden except for a high chance of ass and pelvic flash.  

 

Any suggestions?

 

Edit: should have added, I LOVE THIS MOD!

I think 1 possible way would be to use Synthesis and patch it. But don't quote. I am in the same place as you on that. Otherwise adding keywords within zEdit would also work.

Posted (edited)

@Make-Use-Of-ME I personally recommend Keyword Item Distributor. Though it has a similar amount of tediousness as adding keywords via xEdit/zEdit, it also allows you to uninstall and re-install an armor mod without going through the keyword assignment process again (as long as you kept the KID ini file that applies to that armor mod or didn't remove the lines which affected that armor mod).

 

Also, did you get the MCM to work? I replied with some questions on Page 10 which might help you resolve the issue. I'm kind of assuming that you got it to work since you didn't ask about it again, but I could be wrong.

Edited by NymphoElf
Posted

I did manage to get it working via new game and waiting for 20 minutes, It seems my Load order was just a bit more impractical than I thought. As for KID, Hopefully thats gonna help a bit BUT tediousness required.

Posted
On 9/21/2024 at 12:23 PM, Make-Use-Of-ME said:

I think 1 possible way would be to use Synthesis and patch it. But don't quote. I am in the same place as you on that. Otherwise adding keywords within zEdit would also work.

I just copied the vanilla records into an elsified esp and then added the keywords.  Works perfect.  I can always add more vanilla armor records to the same plugin.

Posted

Hey, in your AND_Core script there are several functions each containing the line

ActorBase PlayerBase = Game.GetPlayer().GetActorBase()

I'd expect something like this to be evaluated once and stored in a script variable, or am I missing something?
Also, would it make sense to replace the calls to RandomInt() in the DiceRoll functions with the ones from po3's Papyrus Extender, or have a version of that script for people that use Papyrus Extender? From my understanding, these DiceRolls runs fairly frequently, and the native RandomInt is known to be quite slow.

I hope I don't appear to be presumptuous, just trying to help and learn.

Posted (edited)
1 hour ago, applesandmayo said:

Do I still need the PW patch for AND 1.0?

 

Yes. PW hasn't updated yet. I've talked to Visio about it a few times. He's working on it, but I can't give any kind of ETA for that update. If I understand correctly his life is kinda busy right now.

 

Wait, did I accidentally break the PW patch in 1.0? I hope not... but I probably did

 

Never mind, it's fine :smile:

Edited by NymphoElf
Posted (edited)
4 hours ago, shylock12 said:

Hey, in your AND_Core script there are several functions each containing the line

ActorBase PlayerBase = Game.GetPlayer().GetActorBase()

I'd expect something like this to be evaluated once and stored in a script variable, or am I missing something?
Also, would it make sense to replace the calls to RandomInt() in the DiceRoll functions with the ones from po3's Papyrus Extender, or have a version of that script for people that use Papyrus Extender? From my understanding, these DiceRolls runs fairly frequently, and the native RandomInt is known to be quite slow.

I hope I don't appear to be presumptuous, just trying to help and learn.

 

No offense taken! I appreciate the interest and effort!

 

First off, I'm honestly not sure if ActorBase is a valid property type. I will test this later and get back to you. Thank you for this recommendation!

 

Second, I use the native RandomInt so that people who DON'T have PO3's PE can still use AND. Perhaps it's not the biggest deal in the world if I decided to use it and make it a requirement, but I'd still like this to be as accessible as possible.

 

Additionally, the scripts have all been extremely fast as-is, even on high script load machines. For example, mine runs in maybe 5 frames (~0.1s @ 60fps) (this is a guess, but I know it's FAST). Plus, since the functions of the Core script are less than 100 lines each, and the whole script isn't even 400 lines WITH the property declarations, the speed difference would be negligible at best.

 

Lastly, it may sound like these scripts run frequently, and in some sense they do, but when you take the small script size into account as well as how fast they complete, it's really not that much. I could up the frequency quite a lot before any kind of script lag would be noticed. Plus, the heaviest scripts in the mod are likely to skip ~40-60% of the code there in most cases as well, so everything is super snappy.

 

If script time becomes an issue in the future, I'll consider PO3's PE more seriously.

 

P.S. - AND was my first "real" mod I ever made. I had dabbled a bit here and there over the years, but never sat down and truly made a mod from start to finish at this scale (though the scale is relatively small by most standards). Therefore there are certainly some things that could have been done a bit better, and I learned a lot while collaborating with Teutonic to implement AND into Sexy Adventures, as well as working on SLSF Reloaded. For example, instead of listing each keyword property individually, I could turn that into an array - and if I understood this at the time I wrote this mod I would have. However, since the mod still runs well without those changes, I don't see a point in going through that kind of effort right now.

Edited by NymphoElf
Posted

@NymphoElf What shylock was referring to wasn’t the ActorBase property’s validity but likely rather your multiple use of Game.GetPlayer(). This function is inefficient per the ck wiki. The better practice is to either refer to an alias’ ActorRef or attach PlayerRef to your script as an Actor property from which you can run GetActorBase()

Posted
3 minutes ago, Nuascura said:

@NymphoElf What shylock was referring to wasn’t the ActorBase property’s validity but likely rather your multiple use of Game.GetPlayer(). This function is inefficient per the ck wiki. The better practice is to either refer to an alias’ ActorRef or attach PlayerRef to your script as an Actor property from which you can run GetActorBase()

 

I can't remember, but I think I was getting a compiler error when doing that for some weird reason, so I just stuck with what worked. I knew that wasn't the optimal way, but since the script was already so quick I didn't think it would matter - and for this case I would argue that it still kind of doesn't.

 

I'd also like to refer back to the fact that this was my first mod release, and I was still very new to modding skyrim in this capacity.

 

Since I'm grabbing the ActorBase upon initialization now, I don't see why that would be any less efficient at this point.

Posted (edited)
2 hours ago, NymphoElf said:

Since I'm grabbing the ActorBase upon initialization now, I don't see why that would be any less efficient at this point.

I was just clarifying what they said because it seemed to me that you might have misinterpreted what they said, given that you only replied about ActorBase validity and not the Game.GetPlayer() function specifically. The keywords are "evaluated once" in their post and "multiple" in my comment. Per your reply, doing it once OnInit is just as good!

Edited by Nuascura
Posted
3 minutes ago, Nuascura said:

I was just clarifying what they said because it seemed to me that you might have misinterpreted what they said, given that you only replied about ActorBase validity and not the Game.GetPlayer() function specifically.

 

Ah I see. I was focused on the "evaluated once" aspect, which led me to focus on ActorBase as a property since I was using it as a function variable. At least it led me to an equivalent result, lol

Posted (edited)
9 minutes ago, Dez65 said:

Just to  make sure I understand, updating from 1.0 to 1.1 requires a clean save (or a new game)?

 

Yes. Due to the nature of the optimization, it requires a Clean Save or New Game.

 

Explanation for why:

Spoiler

I added a new Property to the Core Script, and this required updating the Plugin to store the new Local Variable for that script.

 

This variable needs to be initialized, and that cannot happen unless the entire mod "re-installs" itself in-game, which cannot happen unless the game either didn't have the mod before (New Game) or "believes" it didn't have it before (Clean Save).

 

However, you can safely continue on 1.0 for as long as you like (or until/unless a more critical update is made to AND). 1.1 isn't a critical update by any stretch.

Edited by NymphoElf
Posted
Just now, NymphoElf said:

Yes. Due to the nature of the optimization, it requires a Clean Save or New Game.

Gotcha!  Thanks for the speedy response.  

Posted
1 hour ago, Someone92 said:

NymphoElf Public Whore Patch v1

 

You seem to have forgotten to upload this file here as well.

 

Whoops. Thank you.

Posted (edited)

how to fix this,? thank you! love your mod

 

Spoiler

[09/30/2024 - 11:40:08PM] Error: Cannot call GetSex() on a None object, aborting function call
stack:
    [AND_AdvancedNudityQuest (FE055836)].and_core.AND_MovementDiceRoll() - "AND_Core.psc" Line 298
    [alias AND_Player on quest AND_AdvancedNudityQuest (FE055836)].and_playerscript.OnAnimationEvent() - "AND_PlayerScript.psc" Line 61
[09/30/2024 - 11:40:08PM] WARNING: Assigning None to a non-object variable named "::temp18"
stack:
    [AND_AdvancedNudityQuest (FE055836)].and_core.AND_MovementDiceRoll() - "AND_Core.psc" Line 298
    [alias AND_Player on quest AND_AdvancedNudityQuest (FE055836)].and_playerscript.OnAnimationEvent() - "AND_PlayerScript.psc" Line 61
[09/30/2024 - 11:40:09PM] Error: Cannot call GetSex() on a None object, aborting function call
stack:
    [AND_AdvancedNudityQuest (FE055836)].and_core.AND_MovementDiceRoll() - "AND_Core.psc" Line 298
    [alias AND_Player on quest AND_AdvancedNudityQuest (FE055836)].and_playerscript.OnAnimationEvent() - "AND_PlayerScript.psc" Line 61
[09/30/2024 - 11:40:09PM] WARNING: Assigning None to a non-object variable named "::temp18"
stack:
    [AND_AdvancedNudityQuest (FE055836)].and_core.AND_MovementDiceRoll() - "AND_Core.psc" Line 298
    [alias AND_Player on quest AND_AdvancedNudityQuest (FE055836)].and_playerscript.OnAnimationEvent() - "AND_PlayerScript.psc" Line 61
[09/30/2024 - 11:40:09PM] SEXLAB - Notice: ValidateActor(J0) -- TRUE -- HIT
[09/30/2024 - 11:40:09PM] Error: Cannot call GetSex() on a None object, aborting function call
stack:
    [AND_AdvancedNudityQuest (FE055836)].and_core.AND_MovementDiceRoll() - "AND_Core.psc" Line 298
    [alias AND_Player on quest AND_AdvancedNudityQuest (FE055836)].and_playerscript.OnAnimationEvent() - "AND_PlayerScript.psc" Line 61
[09/30/2024 - 11:40:09PM] WARNING: Assigning None to a non-object variable named "::temp18"
stack:
    [AND_AdvancedNudityQuest (FE055836)].and_core.AND_MovementDiceRoll() - "AND_Core.psc" Line 298
    [alias AND_Player on quest AND_AdvancedNudityQuest (FE055836)].and_playerscript.OnAnimationEvent() - "AND_PlayerScript.psc" Line 61

 

Edited by User_0x070FE3C8
trying to clean save and upgrade to 1.1 according to the manual

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...