Jump to content

Recommended Posts

Posted

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)


 

  • 2 weeks later...
Posted

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?

Posted
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.

  1. Get Fallrim Tools
  2. Open your save
  3. Type "AAFExtended" into the search box
  4. Delete forms and scripts
  5. Save
  6. 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.

Posted

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.

 

Posted
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.

 

 

Posted
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.

Posted
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)

Posted

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

 

Posted

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

 

Posted
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

  • 1 month later...
  • 2 weeks later...
Posted

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.

Posted
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 ?

Posted
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

Posted
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.

  • 2 months later...
Posted
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.

  • 3 weeks later...
Posted

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.

Posted
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? ;)

 

Posted
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.
Posted

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

1745647248_Capturadepantalla2021-03-2611_44_36.png.49bf058d3749083b38eebc0be38b7c03.png

 

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...