💦 CREATE AND FUCK YOUR OWN AI CUMSLUT 🔥 TRY NOW ♥
Create AI Cumsluts 💦
June 11, 2026

AAF 1.7.0

Support for game version 1.11.221, a major expansion of the native call paths, and a critical fix to the XML data pipeline introduced in 1.6.0.

Architecture

- Returns to per-game-version F4SE plugins, reversing 1.6.0's single `AAF.dll`: `aaf_1_11_221.dll` (next-gen, CommonLibF4 + xmake) and `aaf_1_10_163.dll` (old-gen, classic F4SE 0.6.23 SDK + CMake, now maintained as its own source tree). Both ship together; each plugin checks the runtime version at load and rejects itself when it doesn't match, so only the correct one stays loaded.

- Game 1.11.221 support. The NG plugin's compatible-version list tracks the CommonLibF4 checkout, so future runtime bumps only require updating the library pin and rebuilding.

Added

- Native idle playback: `PlayMultipleIdles` and `StopCurrentIdle` now run through Scaleform into a main-thread task queue. Main-thread serialization removes a use-after-free race on animation file strings, and idles start with engine condition checks disabled — eliminating a root-bone "yo-yo" when an idle's conditions would otherwise re-evaluate.

- Native actor position, angle, and interaction functions.

- Native form utilities on `AAF:AAF_DLLNative` (`GetFormArray`, `PopulateFormlist`, `FormListToArray`, `PlayerUpdateEquipment`).

- The DLL log now records the loaded `AAF_Version` global once game data is ready, so a log alone shows which AAF plugin version was running.

Changed

- Boot loader now displays discrete task progress (e.g. `(23/57) Loading transitions...`) instead of a `0–100%` percentage that could visibly overshoot past `100%`. Each of the 57 load steps has a translated description drawn from the translation files via new `$AAF_LOAD_01`..`$AAF_LOAD_57` keys (added to `AAF_En.txt` in the same order boot executes them), so a crash report referencing a step number can be looked up directly regardless of the user's language.

Fixed

- The 1.6.0 XML pipeline handed Flash string values that pointed into already-freed memory (the JSON-to-Scaleform converter stored a pointer to a temporary instead of copying). Depending on memory reuse this surfaced as spurious boot warnings with blank plugin names (`[038] Unknown plugin index:`, `[090] raceList attribute missing`), warning counts that changed from one launch to the next, and — once any animation pack was installed — `Model.processData` TypeErrors that aborted loading entirely ("No positionData found!" despite installed packs). Strings are now copied into the movie heap at conversion time, in both the NG and OG plugins.

- Numeric values arriving from Flash were read with strictly-typed Scaleform getters, but ActionScript delivers numbers as doubles far more often than as typed integers. All Flash-facing numeric reads in the DLL now detect the actual value type and convert, fixing a guaranteed scene-start crash in assert-enabled builds and silent misreads in release builds.

Available on the AAF Discord Server!

"Even The Losers" - Tom Petty & The Heartbreakers - DAMN THE TORPEDOES (YouTube)