Operand Posted September 29, 2020 Posted September 29, 2020 AAF History View File This allows you to have sexual history in the form of stats in your game. It is similar to what SexLab has. You can integrate this to your mods or use as is, it is highly customizable. What it does Tracks actor's "events" history: how many times, with whom, which kind of "event" happened. It allows tracking of all basic sex types + sex positions. Types = "consensual" / "actor was forcing themselves onto .." / "actor was forced by .." Positions = "anal / oral / vaginal / other" + group/rough since v1.13 ("rough" is not the same as "non consensual" unless configured to be so in MCM) + solo/kissing since v1.16 (kissing is treated the same way as anal/oral/vaginal tracking-wise) Locations (since v1.7): last place where the event took place, both actors and their partners First partners (since v 1.7) - i.e. those who "took virginity" Total / per partner "events" duration (since v1.8) Since v1.10 duration is tracked for every dimension AAF History stores It also tracks partners and partner-specific history, i.e. all the stats above will be also visible for specific partner. Starting v1.4 it also will assign some basic proficiency titles according to the count of events with the respective tags. Starting v1.9 you can use MCM to customize what is displayed. Design Ideology This was created with a "normal" way of doing events in mind. This means that for scenes involving 2 human partners it should always work without any issues (gender doesn't matter). Solo is supported, it is tracked as a separate stat and also for solo events any other stat won't be tracked. I added support for group scenes to the best of my ability, but there are different ways to treat such scenes without the "right for all". So expect issues with it. There is also no different races support - the mod will assume it to be human (starting v1.5 the mod will show races names, but that's it, stats won't be accounted differently) and you can check how it works. Or if it doesn't. I actually didn't check. And I honestly won't check it. Installation Install AAF with LLFP! You can also install LLFP separately Install AAF History Done Uninstallation Load game with the mod installed Go to 'MCM' > 'AAF History' > 'Admin' > 'Reset Stats' Save the game Uninstall the mod Load the game, confirm missing plugins Save the game again Done How To See Stats When PC will have first sex after installing the mod, the item "Sex Diary Of <actor name>" will be added. It's a note which you can read to see the stats. Important: the NPC(s) that were involved in the scene will also all get their respective "Sex Diary" items! This means you can loot it by whatever means (openactorcontainer 1 in console as a way to go) and see their stats as well. In this case PC will be listed as one of their partners. Looting isn't lore-friendly, though - in the sense that even after PC loots the diary, it will still be updated should more events with that actors occur. Don't Like The Diary? Welcome to the MCM page. Customize it to your heart's content. You can disable / enable practically any presented information in the diary. You can even change fonts. Limitations Can only track up to 128 actors (potentially) for the Papyrus limitations. In reality it will more likely be 64 because every actor creates 2 records (one for itself and one as a partner, it's necessary for retrieving records) For group activities, it will record all involved actors "one to many" as partners. Example: The activity involved actors P, Q, R. Passive is P, actives are Q, R. This results in P -> [Q, R]; Q -> [P], R -> [P] as partners. There is another way to think about it (as in - record all possible partners for all participants) which also makes sense. However I made a choice in favor of one-to-many instead of many-to-many because the former allows to save actor entries space while the latter also doesn't make sense for non-consensual scenes (in this case group actually does it with only 1 passive actor). For creatures - I honestly do not know what it will do. Likely to work with some minor glitches. I will not fix these. I will not make bestiality patches. Sorry. Relies on AAF's tags and meta, so if that fails - the stats will be wrongly accounted. "Fails" also includes "this mod doesn't know all the ways AAF communicates specific things" (so not to blame AAF for anything) Starting v1.6, this can be somewhat fixed for some animations which report incorrect tags where I was able to clearly get what type they are. Enable tags override feature for this fix. It only affects this mod behavior and not the AAF one (so any other mods will be unaware of this). If you think some animations report wrong stats - I can try to include the fix into this feature. Known Issues Capital letters inconsistencies, misaligned text. These are the quirks of the game text replacement, not something I can fix. I'd say I already push the limits of in-game text processing to its limits with this mod. Group "activities" will likely be inaccurately recognized. The count should always be correct, but it is very possible that aggressors (if any) won't be all correctly determined. When the case is ambiguous, the mod assumes "submissive female" PC and sets her passive role / "dominant male" PC and sets him active role. In some rare cases when Papyrus is overloaded, it can fail to replace the text resulting in a "Token.Name=Diary" instead of the text in the diary. 'MCM' > 'AAF History' > 'Admin' > 'Update Diaries' fixes this. How To Use In Mods Spoiler If you want to use it, I'd recommend first - not to do it (right now). It's because: this is my first AAF mod ever + I'm not a modder + this is the first release. So it would be wise to wait while it's refined. Still, if you insist: Quest AES_QUST_Kernel = Game.GetFormFromFile(0x00000800, "AAFExtendedStats.esp") as quest AES:AES_Kernel AESAPI = AES_QUST_Kernel as AES:AES_Kernel if !AESAPI ; do something endif ; AESAPI is now ready to be used - to get the API. You can then use it as: AES_Actor_Entry entry = AESAPI.GetRepositoryManager().GetActorEntry(akActor) ; entry will contain the wrapper for requested actor with its stats and partners storage ; see the code to understand what methods are in there ; I recommend going to AES:AES_Util script since it uses all possible AES stats ; You can then check how to retrieve specific stats, albeit the code is self-explanatory - to operate on the actor entry. I will not provide documentation for it (for now) since: it's likely to be extended with some sort of proper API, and more importantly, documenting things takes a lot of time. SAF case taught me not to do this prior to the first attempt of somebody to integrate with the mod. Temporary It was initially part of SAF which I decided to decouple from it since some might want to have history but not SAF. As such, it shares some of the engine with SAF, but does not require it. Credits @twistedtrebla : I extracted the logic of types positions recognition from FPSH @dagobaking : Wiki for AAF (obviously) Submitter Operand Submitted 09/29/2020 Category Framework & Resources Requires AAF, F4SE, LLFP 2
koaamz Posted September 29, 2020 Posted September 29, 2020 This seems like a very good mod, will definitely test it out, thanks for your work!!
ego.viator Posted October 13, 2020 Posted October 13, 2020 First, I love your mod. I've being testing every version but with a clean save requirement for every update is hard to test it for long periods of time. I will keep testing as is on a weekly basis. Are there any plans to move to a self updating version soon? As for the last update, all functions work as expected except, in my case, the Aggressive tags override. AAF meta works for non-consensual but I cannot make the MCM override function work. What tags are you looking for in the AAF position data- is it Aggressive?
Operand Posted October 14, 2020 Author Posted October 14, 2020 18 hours ago, ego.viator said: First, I love your mod. I've being testing every version but with a clean save requirement for every update is hard to test it for long periods of time. I will keep testing as is on a weekly basis. Are there any plans to move to a self updating version soon? Well, to be honest, the lack of complaints is what made me not invest time into this. I interpreted it as "either nobody cares, nobody uses it or people are content with making a clean save". Btw, making a clean save is extremely easy. You don't need to start a new game. Get Fallrim Tools Open your save Type "AAFExtended" into the search box Delete forms and scripts Save Profit The only downside is losing your stats, obviously. But I can't fathom any self-updating mechanism which will allow you to keep stats unless saved to the disk (which - first, I will likely never do, and - second - won't help when stats structure itself was changed, like in the latest update) 18 hours ago, ego.viator said: As for the last update, all functions work as expected except, in my case, the Aggressive tags override. AAF meta works for non-consensual but I cannot make the MCM override function work. What tags are you looking for in the AAF position data- is it Aggressive? Hm.. which exactly do you mean? "Treat aggressive as non-consensual" or "Enable tags override"? They are two different things: First one makes it so that aggressive animations will count toward non-consensual count even if there was no meta confirming the non-consensual nature of the event. This will also always fail to work if the meta explicitly states "consensual". It's pretty straight-forward, to be honest: Spoiler bool function wasForcedToPC(String[] metaData, string callerId = "Default") return metaData.Find("PlayerRaped") >= 0 EndFunction bool function wasForcedByPC(String[] metaData, string callerId = "Default") return metaData.Find("PlayerRapist") >= 0 EndFunction ;tagsR[0] = "Aggressive" bool Function isEventNonConsensual(String[] eventTags, String[] metaData, string callerId = "Default") bool hasNonConsensualTag = false int index = 0 while index < tagsR.length if (tagsR[index] != "") && (eventTags.Find(tagsR[index]) >= 0) hasNonConsensualTag = true endif index += 1 endwhile ;AES_GLOB_EnableAggressiveAsNonConsensual is the "Treat Aggressive as non-consensual" switch hasNonConsensualTag = hasNonConsensualTag && (AES_GLOB_EnableAggressiveAsNonConsensual.GetValueInt() as bool) bool hasPCWasForcedMeta = wasForcedToPC(metaData, callerId) ;PC was raped bool hasConsensualMeta = (metaData.Find("Consensual") >= 0) bool hasPCWasForcingMeta = wasForcedByPC(metaData, callerId) ;PC was rapist bool isNonConsensual = (hasPCWasForcedMeta || hasNonConsensualTag || hasPCWasForcingMeta) && !hasConsensualMeta return isNonConsensual EndFunction Second one is only there for animations defined in the "special treatment" list. Currently there are two handled items in that list: "Grey Doggy*" and "Grey Missionary*" (yes, "*" means a wildcard, thus all animations starting with these will be affected). This is because Grey animations define "either" tags resulting in an animation being simultaneously A-, O- and V-tagged. Since for Doggy and Missionary it's reasonable to assume the event kind (Doggy is A and Missionary is V), I added this override.
ego.viator Posted October 15, 2020 Posted October 15, 2020 I had mixed results with Fallrim Tools so I didn't even think to use it (run a heavily modded game with 369 active mods - yes I know...). I will give Fallrim Tool another go. The version I was referring was 1.13-beta and the MCM option I was referringering to was: Treat aggressive as non-consensual. My interpretation of the MCM option was that if enabled, the animation with Aggressive tag will be counted as non-consensual not matter what meta was being passed by the script calling the animation (more in line with version 1.12-beta were meta was not considered for Aggressive tag). I think the problem is that AAF interface initiate scene have always consensual meta set (I am using AAF v147). Just did a little more research on this topic and AAF doesn't set consensual meta, so one possibility is that the code return TRUE is the meta is not present. Is this possible? This script line will always make isNonConsensual = FALSE if hasConsensualMeta is TRUE. bool isNonConsensual = (hasPCWasForcedMeta || hasNonConsensualTag || hasPCWasForcingMeta) && !hasConsensualMeta In this case the non-consensual stats will only work from a mod that passes the meta such AAF Violate, AAF SEU, etc but not from scenes initiated manually using the AAF interface. What my interpretation of the override was is more in line with this: bool isNonConsensual = (hasPCWasForcedMeta || hasPCWasForcingMeta ) && ( !hasConsensualMeta || hasNonConsensualTag ) I am not suggesting implementing this, but it would be a good MCM option to consider adding for overriding the meta passed by the script initiating the scene.
Operand Posted October 15, 2020 Author Posted October 15, 2020 7 hours ago, ego.viator said: I had mixed results with Fallrim Tools so I didn't even think to use it (run a heavily modded game with 369 active mods - yes I know...). Works like a charm, 405 mods. And it always did, also for Skyrim. 7 hours ago, ego.viator said: My interpretation of the MCM option was that if enabled, the animation with Aggressive tag will be counted as non-consensual not matter what meta was being passed by the script calling the animation (more in line with version 1.12-beta were meta was not considered for Aggressive tag) 1.12 didn't work that way. It would also treat aggressive as consensual in case there was consensual meta. The consensual override is there since the beginning. 7 hours ago, ego.viator said: In this case the non-consensual stats will only work from a mod that passes the meta such AAF Violate, AAF SEU, etc but not from scenes initiated manually using the AAF interface. Or if treating aggressive as non-consensual is set to true. That's the whole point of this switch. The meaning of it is simple: "If the mod failed to recognise non-consensual by meta, should it think event was non-consensual if the animation was aggressive?". Because before, in - v.1.12 and earlier - it was always the case, i.e. the scene was considered non-consensual if it has the meta or animation was aggressive.
ego.viator Posted October 15, 2020 Posted October 15, 2020 4 hours ago, Operand said: 1.12 didn't work that way. It would also treat aggressive as consensual in case there was consensual meta. The consensual override is there since the beginning. I will do more testing today. The fact I observed was that when starting from the AAF Ui one of Leito's Aggressive animation (no mod to pass meta) the interaction was registered as non-consensual in 1.12 while in 1.13 is always considered consensual no matter if Treat aggressive as non-consensual is On or OFF in MCM.
Operand Posted October 15, 2020 Author Posted October 15, 2020 1 hour ago, ego.viator said: will do more testing today. The fact I observed was that when starting from the AAF Ui one of Leito's Aggressive animation (no mod to pass meta) the interaction was registered as non-consensual in 1.12 while in 1.13 is always considered consensual no matter if Treat aggressive as non-consensual is On or OFF in MCM. Then that could be a bug I need to fix, but yes - please do test it. I will hopefully check it again on my side as well. Btw, when you test it - please post your Papyrus0.log lines here. All the stuff that History logs will be in this shape: [10/12/2020 - 12:24:55AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / AAF_API.OnAnimationStop / --> Processing event data.. [10/12/2020 - 12:24:55AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / AAF_API.OnAnimationStop / --- Actors data dump: , [Actor < (00000014)>], [Actor < (531C8F38)>] [10/12/2020 - 12:24:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / GetEventData / --> Geting event data.. [10/12/2020 - 12:24:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / GetTimeSpent / --> Geting time spent.. [10/12/2020 - 12:24:57AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / GetTimeSpent / --- Hash: 20,1394380600 was accounted; hashesValues[hashIndex]: 2876; gameTime: 3044; timeSpent: 168 [10/12/2020 - 12:24:57AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / GetTimeSpent / <-- Geting time spent completed [10/12/2020 - 12:24:57AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / isEventNonConsensual / --- Event consent: hasAggressiveTag: False; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: False [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / --> Matching data 'Leito FF Cowgirl 4' .. [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / --- Trying to find 'Gray Doggy' in 'Leito FF Cowgirl 4' .. [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / <-- Matching data 'Leito FF Cowgirl 4' completed (not found) [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / --> Matching data 'Leito FF Cowgirl 4' .. [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / --- Trying to find 'NONEXISTENT POSITION HERE FOR NOW' in 'Leito FF Cowgirl 4' .. [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / <-- Matching data 'Leito FF Cowgirl 4' completed (not found) [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / --> Matching data 'Leito FF Cowgirl 4' .. [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / --- Trying to find 'Gray Missionary' in 'Leito FF Cowgirl 4' .. [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / matchArrayForSubString / <-- Matching data 'Leito FF Cowgirl 4' completed (not found) [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / GetEventData / <-- Geting event data completed [10/12/2020 - 12:24:58AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:30426119 / AES_Kernel / isEventNonConsensual / --- Event consent: hasAggressiveTag: False; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: False You can filter out the useful info by searching AES:AES_Kernel:AAF_API.OnAnimationStop, then seeing what number follows it and then filtering all the subsequent log lines with this number (it's there for this reason) Now, what's the difference between "before 1.13" and "after 1.13" is this: hasNonConsensualTag = hasNonConsensualTag && (AES_GLOB_EnableAggressiveAsNonConsensual.GetValueInt() as bool) - before there was no second part in this condition (which is equal to it always be true in logical terms) and after 1.13 there is this additional check. Adding an override is not a problem, I can even make it so it forces the meta to be ignored, but it can be confusing to have so many switches for same thing + I try to avoid overriding AAF data too much because then the stats will conflict with other mods way too much (it will just feel weird if PC have a different track record from what was really happening according to other mods)
ego.viator Posted October 15, 2020 Posted October 15, 2020 Here is the log from both versions: Leito Aggressive from AAF UI v1.12-beta Quote [10/15/2020 - 09:31:33AM] CumOverlay Debug: AnimationStop tags: ["LEITO", "F_M", "NOFURN", "KNEELING", "Doggy", "FromBehind", "Aggressive", "Cuffed", "HELD5", "STIM7", "LOVE-9", "DOM-9", "NULLTOSELF", "PenisToEither"] [10/15/2020 - 09:31:33AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4402135 / AES_Kernel / isEventNonConsensual / --- Event consent: hasAggressiveTag: True; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: True [10/15/2020 - 09:31:33AM] AAF Extended Stats / warning / aes:aes_kernel:AAF_API.OnAnimationStop:4402135 / AES_Kernel / getPassiveForAggressiveWithPC / <-! Getting passive actor: neither of PC aggressive tags worked, falling back to PC (likely incorrect) v1.13-beta w/ Treat aggressive as non-consensual = OFF Quote [10/15/2020 - 09:53:02AM] CumOverlay Debug: AnimationStop tags: ["LEITO", "F_M", "NOFURN", "KNEELING", "Doggy", "FromBehind", "Aggressive", "Cuffed", "HELD5", "STIM7", "LOVE-9", "DOM-9", "NULLTOSELF", "PenisToEither"] [10/15/2020 - 09:53:02AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:3509420 / AES_Kernel / isEventNonConsensual / --- Event consent: hasNonConsensualTag: False; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: False v1.13-beta w/ Treat aggressive as non-consensual = ON (from Fallrim Tool: (AAFExtendedStats.esp:f600085c) = 1.0) Quote [10/15/2020 - 09:54:47AM] CumOverlay Debug: AnimationStop tags: ["LEITO", "F_M", "NOFURN", "KNEELING", "Doggy", "FromBehind", "Aggressive", "Cuffed", "HELD5", "STIM7", "LOVE-9", "DOM-9", "NULLTOSELF", "PenisToEither"] [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / isEventNonConsensual / --- Event consent: hasNonConsensualTag: False; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: False
Operand Posted October 15, 2020 Author Posted October 15, 2020 Ok, so there is a bug it seems. Please share a bit "before" or tell me how did you invoke the animation and what it was.
ego.viator Posted October 15, 2020 Posted October 15, 2020 Here are the details for v1.13-beta w/ Treat aggressive as non-consensual = ON position: Leito Aggressive Doggy Spoiler [10/15/2020 - 09:54:26AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStart:4359998 / AES_Kernel / AAF_API.OnAnimationStart / --> Processing event data.. [10/15/2020 - 09:54:26AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStart:4359998 / AES_Kernel / AAF_API.OnAnimationStart / --- Registering hash: 20,12063 [10/15/2020 - 09:54:26AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStart:4359998 / AES_Kernel / AAF_API.OnAnimationStart / <-- Processing event data completed [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / AAF_API.OnAnimationStop / --> Processing event data.. [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / AAF_API.OnAnimationStop / --- Actors data dump: , [teleportactorscript < (00002F1F)>], [Actor < (00000014)>] [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / GetEventData / --> Geting event data.. [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / GetTimeSpent / --> Geting time spent.. [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / GetTimeSpent / --- Hash: 20,12063 was accounted; hashesValues[hashIndex]: 435; gameTime: 456; timeSpent: 21 [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / GetTimeSpent / <-- Geting time spent completed [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / isEventNonConsensual / --- Event consent: hasNonConsensualTag: False; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: False [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / GetEventData / <-- Geting event data completed [10/15/2020 - 09:54:47AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / isEventNonConsensual / --- Event consent: hasNonConsensualTag: False; hasPCWasForcedMeta: False; hasConsensualMeta: False; hasPCWasForcingMeta: False; isNonConsensual: False [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getActiveActors / --> Getting active actors for [teleportactorscript < (00002F1F)>] .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getActiveActors / --- activeLength: 1 [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getActiveActors / <-- Getting active actors for [teleportactorscript < (00002F1F)>] completed [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / AAF_API.OnAnimationStop / --- Detetmined data; place: 20; position: Leito Aggressive Doggy; passive: [teleportactorscript < (00002F1F)>]; active.length: 1; active: , [Actor < (00000014)>]; isConsensual: True; isA:True; isG: False; isO: True; isR: False; isV: True; timeSpent: 21 [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getRepositoryManager / --> Getting for [aes:aes_kernel <AES_QUST_Counter (F6000800)>] .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getRepositoryManager / <-- Getting for [aes:aes_kernel <AES_QUST_Counter (F6000800)>] completed, using the existing object [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / updateStats / --> Updating stats for passive: [teleportactorscript < (00002F1F)>]; active count: 1 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / updateActors / --> Updating stats for the pair passive: [teleportactorscript < (00002F1F)>]; active: [Actor < (00000014)>] .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorEntry / --> Getting for: [teleportactorscript < (00002F1F)>]; repository size: 2 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --> Getting index for: [teleportactorscript < (00002F1F)>]; repository size: 2 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --- Getting index for: [teleportactorscript < (00002F1F)>]; found this actor among current actor entries with index: 0 [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorEntry / --> Getting for: [Actor < (00000014)>]; repository size: 2 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --> Getting index for: [Actor < (00000014)>]; repository size: 2 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --- Getting index for: [Actor < (00000014)>]; found this actor among current actor entries with index: 1 [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updateStats / --> Updating for: [Actor < (00000014)>]; partners count: 1 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / getPartnerIndex / --> Getting index for: [Actor < (00000014)>]; partners count: 1 .. [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / getPartnerIndex / --- Getting index for: [Actor < (00000014)>]; found this partner among current partners with index: 0 [10/15/2020 - 09:54:48AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updatePartner / --> Updating stats for: [teleportactorscript < (00002F1F)>]; with partner [aes:aes_actor_partner < (FF01D00E)>] .. [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updatePartner / <-- Updating stats for: [teleportactorscript < (00002F1F)>]; with partner [aes:aes_actor_partner < (FF01D00E)>] completed [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updateStats / <-- Updating for: [Actor < (00000014)>]; creating completed with index: 0; new partners count: 1 [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updateStats / --> Updating for: [teleportactorscript < (00002F1F)>]; partners count: 1 .. [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / getPartnerIndex / --> Getting index for: [teleportactorscript < (00002F1F)>]; partners count: 1 .. [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / getPartnerIndex / --- Getting index for: [teleportactorscript < (00002F1F)>]; found this partner among current partners with index: 0 [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updatePartner / --> Updating stats for: [Actor < (00000014)>]; with partner [aes:aes_actor_partner < (FF01B959)>] .. [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updatePartner / <-- Updating stats for: [Actor < (00000014)>]; with partner [aes:aes_actor_partner < (FF01B959)>] completed [10/15/2020 - 09:54:49AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Actor_Entry / updateStats / <-- Updating for: [teleportactorscript < (00002F1F)>]; creating completed with index: 0; new partners count: 1 [10/15/2020 - 09:54:51AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getRepositoryManager / --> Getting for [aes:aes_kernel <AES_QUST_Counter (F6000800)>] .. [10/15/2020 - 09:54:51AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getRepositoryManager / <-- Getting for [aes:aes_kernel <AES_QUST_Counter (F6000800)>] completed, using the existing object [10/15/2020 - 09:54:51AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorEntry / --> Getting for: [Actor < (00000014)>]; repository size: 2 .. [10/15/2020 - 09:54:51AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --> Getting index for: [Actor < (00000014)>]; repository size: 2 .. [10/15/2020 - 09:54:51AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --- Getting index for: [Actor < (00000014)>]; found this actor among current actor entries with index: 1 [10/15/2020 - 09:54:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getRepositoryManager / --> Getting for [aes:aes_kernel <AES_QUST_Counter (F6000800)>] .. [10/15/2020 - 09:54:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / getRepositoryManager / <-- Getting for [aes:aes_kernel <AES_QUST_Counter (F6000800)>] completed, using the existing object [10/15/2020 - 09:54:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorEntry / --> Getting for: [teleportactorscript < (00002F1F)>]; repository size: 2 .. [10/15/2020 - 09:54:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --> Getting index for: [teleportactorscript < (00002F1F)>]; repository size: 2 .. [10/15/2020 - 09:54:56AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / getActorIndex / --- Getting index for: [teleportactorscript < (00002F1F)>]; found this actor among current actor entries with index: 0 [10/15/2020 - 09:54:57AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / updateActors / <-- Updating stats for the pair passive: [teleportactorscript < (00002F1F)>]; active: [Actor < (00000014)>] completed [10/15/2020 - 09:54:57AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Repository / updateStats / <-- Updating stats for passive: [teleportactorscript < (00002F1F)>]; active count: 1 completed [10/15/2020 - 09:54:57AM] AAF Extended Stats / info / aes:aes_kernel:AAF_API.OnAnimationStop:4562022 / AES_Kernel / AAF_API.OnAnimationStop / <-- Processing event data completed
Operand Posted October 16, 2020 Author Posted October 16, 2020 22 hours ago, ego.viator said: Here are the details for v1.13-beta w/ Treat aggressive as non-consensual = ON position: Leito Aggressive Doggy Fixed in v1.14-beta
ego.viator Posted October 16, 2020 Posted October 16, 2020 4 hours ago, Operand said: Fixed in v1.14-beta Super. I'll be testing the new version tonight.
jimmy1a1 Posted November 26, 2020 Posted November 26, 2020 I cant seem to find the Diary for my player char. is there any commands to spawn a new one?
Operand Posted December 7, 2020 Author Posted December 7, 2020 The diary will not appear on its own. After installing the mod you need to invoke an AAF scene for the diary to be added to your inventory afterwards.
OlBenny Posted December 8, 2020 Posted December 8, 2020 Hello! A wee question: Once it reaches 128, does it just overwrite the oldest entry or how does that work?
Operand Posted December 8, 2020 Author Posted December 8, 2020 On 12/8/2020 at 5:08 AM, OlBenny said: Hello! A wee question: Once it reaches 128, does it just overwrite the oldest entry or how does that work? It will stop adding more. But to be honest, this is not at all easy to achieve. For that to happen the PC would need to invoke scenes with a lot of different actors. For instance, if the PC is participating in one of the popular AAF mods here on LL, they usually are played around a city / or settlement. And even combined, it's not at all easy to find so many different actors to overflow this limit. Plausible - yes, but unless the PC is role-playing a sex worker with the goal in mind to "get as many as possible", it's safe to say this limit will hold for tens of hours of gameplay. I thought about adding some workarounds here and it's possible.. but.. well, in my games the PC rarely has more than 3-5 partners. The whole "public usage" isn't my theme at all, hence no extensive support here, sorry ? 1
jimmy1a1 Posted December 9, 2020 Posted December 9, 2020 On 12/8/2020 at 8:35 AM, Operand said: The diary will not appear on its own. After installing the mod you need to invoke an AAF scene for the diary to be added to your inventory afterwards. i did get into quite a few scenes. other NPCs spawn the diary fine. i just cant find the one for my player char
Operand Posted December 10, 2020 Author Posted December 10, 2020 10 hours ago, jimmy1a1 said: i did get into quite a few scenes. other NPCs spawn the diary fine. i just cant find the one for my player char You can try using MCM debug options to reset diaries and then test with some scenes. The fact that NPC's diaries are present hints that you might be just missing it in the inventory.
ego.viator Posted March 8, 2021 Posted March 8, 2021 Maybe a stupid question, but what mod is FalloutFantasy4.esp?
Operand Posted March 8, 2021 Author Posted March 8, 2021 5 hours ago, ego.viator said: Maybe a stupid question, but what mod is FalloutFantasy4.esp? It is the "big project" that is mentioned in the v1.15 update. It is in no way required though. AES is one of the LL mods which is integrated into that. Maybe I will release it in the.. well, nearest future. Or not so nearest.
JB. Posted March 25, 2021 Posted March 25, 2021 The mod is great. My problem is that Nora masturbates sometimes to alleviate the arouse, and the mod computes it as a sexual relationship with another Nora.
izzyknows Posted March 25, 2021 Posted March 25, 2021 51 minutes ago, JBpy said: The mod is great. My problem is that Nora masturbates sometimes to alleviate the arouse, and the mod computes it as a sexual relationship with another Nora. Well... Didn't Nora just do Nora? 1
Operand Posted March 25, 2021 Author Posted March 25, 2021 6 hours ago, JBpy said: The mod is great. My problem is that Nora masturbates sometimes to alleviate the arouse, and the mod computes it as a sexual relationship with another Nora. That sounds about right, yes. The system tracks the "actor-partners" link in a 1:many relation, so for solo animations it - well, places the actor itself into the partners table. I can think of several solutions here (in case it needs a solution): Add an MCM option to plain ignore the solo activities. In this case the mod will just discard solo AAF events Increment actor stats without adding any partner. Problem is - which type of activity shall it be? I can think of just adding another dimension of "times did it solo" without specifying the type of the event. Either way it sounds a bit weird.
JB. Posted March 26, 2021 Posted March 26, 2021 For an eventual update, could you also add the kisses? In this game, Nora decided to give her first post-war kiss (via Sex Em Up) and it was noted in this way: Spoiler
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