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

AAF 1.8.0

# Version 1.8.0

Added

- *`api_send_all_stage_events` in `AAF_settings.ini` sends `OnStageEvent` for every animationGroup stage*, as if each stage had `sendEvent="true"`. Off by default because groups can change stages very often; a mod can turn it on for the running session with `ChangeSetting`. (Thanks to Holylokki.)

Fixed

- *The pre-war clothes and wedding ring worn in the prologue come off in scenes again.* Since 1.7.8 the runtime equipment protection also read an old list in AAF.esm that names those items, so a scene played in the prologue had nothing to take off. (Thanks to jaam.)

- *A start equipment set that only removes gear runs again when an actor moves into its slot.* Since 1.7.8 the guard that keeps gear across a position switch also skipped a different set named by the actor's new slot, so gear received in one role stayed on after the roles traded places. (Thanks to Holylokki.)

- *Gear an equipment set puts on the player shows on the body when it lands, on game 1.10.163.* The player's 3D refresh ran before the engine had applied the equip, so the item was in the inventory but not on the body until a later apply. (Thanks to Holylokki.)

- **AAF's own XML files name the published schema, `https://moddingham.com/schema/aaf.xsd`.** Five of them still pointed an editor at `common.xsd`, retired long ago. Editor-only; the plugin validates against its own `aaf.xsd` whatever the file says. (Thanks to Holylokki.)

- *`aaf.xsd` is also found under `Data\AAF`.* xmlutility looked only next to itself in `Data`; an install that puts the schema with the XML files ran without validation and only said so in `aaf.log`. (Thanks to Holylokki.)

Changed

- *`OnTransitionStart` `akArgs[7]` now includes the destination position's tags* along with the transition animation's, the same list the other animation events report. (Thanks to Holylokki.)

---

# Version 1.7.9

Fixed

- *`GetActorData` answers again.* It sent the actor's data where the interface expects a form id, so `OnActorData` never fired for any caller. (Thanks to ReidenXerx.)

- *AAF comes back working after a version update with `reload_xml_on_game_load` on.* The in-place restart that follows an update re-ran the whole data load inside the running interface, after which no scene could be started until the save was reloaded. The restart now only re-registers; the data was loaded fresh moments earlier.

- *An NPC left faded out by the camera at scene start is restored like the player.* The 1.7.8 fix registered scene NPCs with its guard on an idle path scenes do not use, so only the player was ever covered; a partner could stay invisible for a whole scene. AE plugin.

- *`GetSceneData` and `GetSetting` answer their callers.* The API relayed neither `OnSceneData` nor `OnSettingData` to the mods listening on it, so both 1.7.8 read-backs were silent for every caller.

- *The tree path `GetSceneData` reports can be passed back as `SceneSettings.treePath`.* It began with the root branch's own position, which the resume walk does not expect, so a resumed tree scene stopped at the root with a navigation warning.

- *`SceneSettings.treePath` accepts position ids that contain spaces.* Every space in the path was removed before matching, so a path naming any real position stopped at the root with the same warning.

- *Body morphs left behind by a scene that never ended (a save made mid-scene, a crash) are cleared on load*, alongside the busy flag. With LooksMenu, those leftovers also kept BodyGen from ever giving that actor a body. (Thanks to ReidenXerx.)

- *A timed overlay no longer outlives its countdown across a reload.* The countdown ran inside the interface and was lost with a save, leaving the overlay on the actor for good; it is now removed when the save loads. (Thanks to ReidenXerx.)

- *Stage events report the playing stage's tags.* In an animationGroup, `OnStageEvent` (and `OnAnimationStart`/`OnAnimationChange` on a group that starts past its first stage) included the first stage's tags in every stage; the tags are now the position's and the group's plus the current stage's only. (Thanks to Holylokki.)

- *animationGroups no longer carry a stray `undefined` tag.* Every group picked it up at load, and it showed in event tags and tag matching. (Thanks to Holylokki.)

- *A refused scene or position change says which check rejected the animations* — actor count, skeleton, each tag list, or parts — instead of only "no animations".

- *The game no longer freezes for several seconds after every load.* 1.7.8 read every actor and tree icon ahead of time when a save loaded — a hundred or more file reads where playing needs a handful, and worse the more animation packs were installed. Icons are read once each when first needed, as before 1.7.8. (Thanks to CG! and Holylokki.)

Added

- *The animation events name the animation actually playing* in a new `akArgs[14]`: under a positionTree's own position that is the first branch's animation, in an animationGroup the current stage's animation. `positionID` (`akArgs[2]`) is unchanged; `OnSceneData` carries the same value in `akArgs[20]`. (Thanks to Holylokki.)

- *`OnTransitionStart` carries the transition animation's tags* in `akArgs[7]`. (Thanks to Holylokki.)

- *Stop All Scenes button* on the settings menu's front page: ends every running scene and, once the menu closes, releases any actor AAF still holds without a scene, such as one left behind after leaving the area mid-scene. (Thanks to CG!.)

- *Icon load times in the log* (`[ICON]` lines in `F4SE\aaf.log` under `debug_to_papyrus_log`): how long each icon file takes to load and how long the frame that first shows it takes, for hitch reports. Written by the plugin directly, so they cost no script time.

- *`recordData`: configuration for any mod, in XML.* A new XML type holds a mod's own tables, records and keys in `Data/AAF/`, and the new `AAF:AAF_Data` script reads them back from Papyrus immediately, with no event round trip and before `OnAAFReady`. Other mods extend the data with their own files: each key is merged by `loadPriority`, lists take additions and removals from any file, records can inherit from a parent record, and `FindRecord` / `FindRecords` pick the records that fit an actor by race, gender, keywords, factions, worn keywords or default outfit. See the [recordData](/animators/XML/recordData) and [AAF_Data](/authors/API/AAF_Data) pages.

- *A console test for position changes.* `cgf "AAF:AAF_DebugGlobal.AAF_TestChangePosition"` during a scene asks for a position change with the factory settings, the way a mod would, so a refusal can be reproduced and its message reported.

Changed

- *A scene started with `SceneSettings.treePath` begins on the branch it names.* Its `OnAnimationStart` names that branch's position and animation, and nothing is sent for the tree's root. (1.7.8 began on the root and switched to the branch a moment later, which also sent an `OnAnimationChange`.)

- *Shorter on-screen messages.* `[107]` and `[108]` and two MCM help lines now say what happened in one sentence; the explanation lives in the wiki Error Index. (Thanks to CG!.)

# Version 1.7.8

Added

- *Scene exit returns the camera you had before the scene.* AAF records whether you were in first or third person, always leaves the free camera through third person, then switches back to first person only if that is where you started. `force_thirdperson_on_exit` still forces third person. (Thanks to CG!.)

- *Equipment can be protected from a script*, item by item, with the new API functions `AddProtectedEquipment`, `RemoveProtectedEquipment` and `IsProtectedEquipment` — for gear you cannot give a keyword to, such as whatever the player already owns. Same effect as the protectedEquipment XML. (Thanks to GrimGrim31.)

- *API round-out for mod authors.* New functions: `IsActorBusy`, `IsActorLocked`, `SetActorBlocked`, `IsActorBlocked`, `GetActiveActors` (no more reading AAF's keywords by hand); `StopAllScenes`; `RemoveMorphSet`, `RemoveMFGSet` and `ClearMFG` as the inverses of the apply functions; `GetSceneData` → `OnSceneData` to ask about a running scene on demand (a script that starts listening late can catch up); `GetSetting` → `OnSettingData`; and `FindMatchingAnimations` takes an optional `positionID` to preflight one position. Nothing existing changes.

- *Start a positionTree scene partway in, and read where it is.* `SceneSettings.treePath` names the branch to open at; `GetSceneData` now reports the tree and the current path, so a mod can resume a scene where it left off. Stages gain `treeOutcome="root"` to return to the tree's root without leaving it.

- *animationGroups take their own `tags`, and `combineTags="true"`* carries the tags of every stage — the counterpart of the positionTree attribute.

- *`unequip_weapons` setting* (off by default; MCM Equipment page): each actor's weapon comes off at lock and goes back at scene end, for setups that show the holstered weapon on the body. AAF otherwise leaves weapons alone.

- *Wizard and tree icons are read ahead of time at startup*, a few per tick, with enough copies for every panel that can show the same icon at once, so the first actor-list scroll, actor selection, or stage switch after a save load no longer stalls. The log prints how many icon files were queued. (Thanks to Holylokki.)

Changed

- *The in-game "Admin" window is now called "Diagnostics".* Same panel, same key: the position, plugin, error, settings, action, actor-type, performance and load reports. Nothing in it is a setting; those live in the MCM and `AAF_settings.ini`.

- *`AssignRole`, `RemoveRole` and `ClearAllRoles` on the API do nothing now.* The role mechanism they drove was replaced by the action self/target roles in 1.7.6; the functions stay so existing scripts compile and run.

Fixed

- *Invisible player (or partner) during an animation — root cause found and fixed.* It was never the body: the game's third-person camera, on its first frame of a session, can mark the player as an actor it collided with and start fading him out, and only the third-person camera ever lifts that — which AAF's free camera never gave it the chance to do, so the actor stayed at zero alpha until the scene ended. AAF now lifts that fade itself while the free camera is live and writes a line to `aaf.log` each time it does. AE plugin. (Thanks to deathmorph and PippinTom for the camera reports.)

- *AAF no longer stays silent after a save load when its interface did not come up.* Before deciding between rebooting the interface and loading it, AAF now checks that the remembered copy is really still there, and a load that fails (for example because the HUD was not open yet) is retried for up to 30 seconds and then reported as error `[107]`, instead of nothing happening for the rest of the session.

- *Fast travel while actors are still walking in to a scene no longer runs the lock on actors that are not there.* The player-leaves guard is now armed from the walk on, and an actor that is not loaded when it comes to lock fails the lock with the new error `[108]` (the scene cancels with `OnSceneInit` status 1) instead of being placed and animated; the idle natives skip an unloaded actor as well. Actors called in from another cell are unaffected: their travel package brings them in loaded. (Thanks to the fo4-rapport author for the report.)

- *A position switch keeps the equipment a scene already applied.* Action, position and actor-level equipment sets carry an identity across the switch, so gear from a leveled list is not rolled again and nothing is re-equipped; only sets the new position does not use are taken off. Same for a re-applied overlay set. (Thanks to Holylokki.)

- *Staged animations that start on a random stage (`sequential="false"`) are placed with that stage's offsets* instead of stage 0's until the first advance.

- *`ChangePosition` with an unknown position id reports reason 5 (missing position)* instead of "no matching animations", and an empty string in any tag setting means no filter rather than a tag named "".

- *`animationOffset` on an animation's actor node applies* instead of failing that animation at parse.

- *The first-load body warm-up added in 1.7.7 is removed* (its `FirstLoadBodyWarmup` ini key with it): the invisible-actor cause turned out to be the camera fade-out, fixed above.

- *Actors that get nudged off their spot during scene setup are put back.* Shortly after each placement AAF compares every actor's position and heading with where it put them and corrects any difference, writing the amount to the Papyrus log. Replaces the player-only heading check, which also misread a full turn as an error. (Thanks to Holylokki.)

# Version 1.7.7

Added

- *Per-playthrough data (announced themes, NPC names) now lives in the F4SE co-save instead of loose `AAF_game_started_` files. Existing data migrates on first load; the old files can be deleted once you have saved on the new version. The data is now per save, so loading an older save can re-announce a theme.

- *`wornHasKeyword` condition attribute* checks the keywords of an actor's currently worn gear. `wornHasKeyword` and `hasKeyword` also accept a `!` negation prefix and comma separated lists. Needs the 1.7.7 plugin. (Thanks to Holylokki.)

- *Scene exit returns the player to where they stood* when that spot is within `exit_position_restore_distance` (default 100) of the scene, so a cramped furniture scene can no longer snap you through a wall. `moveto_navmesh_on_unlock` is now a real ini/MCM setting. (Thanks to Rusel S416 and CG!.)

- *Suffix variations inherit their base animation's transitions* when no `transition` node names the copy itself. Entries that name a variation directly still win. (Thanks to Holylokki.)

- *`aaf_visibility.log`* (AE plugin) records the player model and camera state around animation start and end, for invisible-player reports. `SceneVisibilityLog=false` in `xmlutility.ini` turns it off.

Fixed

- Staged scenes and the wizard's actor list no longer stall the game on every switch; icon files are now read once per session. (Thanks to Holylokki.)

- The fly-cam speed settings now work on game 1.10.163; AAF sets the engine values itself instead of through LL_FourPlay.

- The Pip-Boy INV tab no longer shows "incompatible" (an unused AAF translation entry collided with the game's). (Thanks to CG!.)

- AAF no longer de-capitalizes the game's SPECIAL stat labels; the attraction display's stat entries are now AAF-prefixed in every language.

- Changing an MCM setting during a scene no longer tears the scene down. Free-camera speed edits apply immediately. (Thanks to Holylokki.)

- Scene camera and POV were silently disabled with the 1.11.240 plugin; the support check now recognizes every Anniversary Edition plugin name.

- Missing-dependency warnings no longer repeat on every settings change, and the main menu's mode list no longer duplicates. (Thanks to Holylokki.)

- The "Removing transition" warning now names the transition actually dropped and the missing animation id; a broken entry no longer displaces a valid lower-priority one. (Thanks to Holylokki.)

- Actors return to their own pre-scene size after a scene, in every scaling mode. (Thanks to dezo95.)

- The Biped Slots reference link in `AAF_equipmentSetData.xml` points at the Creation Kit wiki's current address.

Known issues

- *Invisible player during a session's first animation (game 1.11.240, LooksMenu installed).* The body comes back when the animation ends. AAF reloads the player's body once shortly after a save loads to reduce how often this happens (`FirstLoadBodyWarmup=false` in `xmlutility.ini` turns that off); the cause is still being narrowed down. If it happens, please send `aaf.log` and `aaf_visibility.log` (both in `Documents\My Games\Fallout4\F4SE`) and say which plugin and LooksMenu version you use.

# Version 1.7.6

Added

- *Supports Fallout 4 game version 1.11.240* (Anniversary Edition, F4SE 0.7.9): plugin `aaf_1_11_240.dll` replaces `aaf_1_11_221.dll`; bundled LL_FourPlay is v62 with a 1.11.240 build. 1.10.163 (Old-Gen) is unchanged.

- *Gender role settings:* `male_can_be_self`, `female_can_be_self`, `male_can_be_target`, `female_can_be_target` (MCM General page or `AAF_settings.ini`) decide which gender may fill an action's self or target slot. All default on; enforced for the wizard and mod-started scenes alike. (Thanks to Holylokki.)

- *`statSet` XML type:* define a block of `stat` nodes once and reference it from an action's `self`/`target` with `statSet="id"` (lists and `defaults` supported). See the statSet wiki page.

- *`topicRate` rows on action `self`/`target` nodes* map the act's value to voice `tryRate`/`chance`, so cadence follows the stage. An explicit `topicTryRate`/`topicChance` on the reference still wins.

- *`sayTopic` in reactionSets is un-deprecated* and its rows take per-range `tryRate`/`chance`. Action voice holds the channel while its action is active; reaction voice resumes afterwards.

- *`merge="true"` on a topicData `topicGroup`* appends its topics to the same-id group from another file instead of replacing it; without a target group it becomes a stand-alone group. (Thanks to Holylokki.)

- *`priority` attribute on `topic` nodes* sets the order override topics are condition-checked in (higher first, ties keep loaded order). (Thanks to Holylokki.)

- *`location`/`altLocation` on individual `tree` and `animationGroup` nodes* carry onto the auto-created position, overriding the file-level `positionConfig` for that item.

- *Furniture-group `offset` now applies when the group is reached through `location`*, not only `altLocation`, and is always resolved against the furniture actually used. Note: offsets that were previously dead data now take effect.

- *New API event `OnTransitionStart`*, fired when a registered transition begins, with actors, transition id, bridged animation ids and destination position. (Thanks to Holylokki.)

- *`fullReset="true"` on a raceData `race` node* replaces the plugin's form list of races needing a full animation reset. A race override replaces the whole node, so carry it over. (Thanks to Holylokki.)

- *An action's `start` delay now also delays its voice.* (Thanks to Holylokki.)

- *`addTags`/`removeTags` on suffixed `action`/`morph` nodes* adjust the copy's tags. (Thanks to Holylokki.)

- *`actorOffset` on the animationData `defaults` node:* one `x,y,z,angle` offset per actor slot, `|` separated; an animation's own `offset` adds on top. (Thanks to Holylokki.)

- *`addTags`/`removeTags` on furnitureData `group` nodes* adjust the tags of every position using the group. (Thanks to Holylokki.)

- *`removeTags` on tagData `tag` nodes* strips tags after every other source, including rolled-up action tags; `tags` becomes optional. (Thanks to Holylokki.)

- *`actorScaleOverride` on `defaults`* sets scale per actor slot for every animation in the file; a per-actor `scaleOverride` still wins. (Thanks to Holylokki.)

- *`end_scene_on_hit` setting* (MCM General page or ini). Set `false` and scenes play on through gunfire and melee.

- *Equipment sets can include other sets* (`<include set="..."/>`), and every equipment-set reference accepts a comma separated list applied as a stack.

- *`<unEquip all="true"/>`* clears every biped slot except the Pip-Boy and decapitation slots.

- *`<groupRef id="..."/>` in furnitureData groups* pulls in another group's entries; the referencing group's own offset and tags apply.

- *`base` attribute on mfgSets* inherits another set's values; the set's own `setting` nodes override.

- *`state` XML type:* named bundles of effect-set references (mfg, equipment, morph, overlay, physics) with conditional implementations; actions declare state variants selected per animation with `<action id="..." state="..."/>`, and actors can wear states directly. States carry over across stages that keep selecting them. See the state wiki page.

- *`combineTags="true"` on a `tree` node (or `defaults`)* gives the tree's position the union of every branch position's tags. Off by default.

Fixed

- The "[K] POV" HUD hint no longer shows on game 1.10.163, where POV is unavailable.

- Equipment carried by an action no longer cycles off and on at stage boundaries, and leveled-list picks no longer re-roll per stage. (Thanks to Holylokki.)

- An actor could stay restrained and frozen after a scene when the walk-to-scene routine never finished (typically an actor in combat). The wait is now bounded; `legacy_walk_wait = true` in `[OUT OF GAME]` restores the old behavior.

- Attraction display: no more "undefined" hint for a female player, the heading is translatable (`$ATTRACTION_TO_YOU`), and both lines are centered.

- Oversized actor icons are scaled down instead of overlapping the stats below them.

- The fly-cam speed settings no longer change your camera speed permanently; the previous value is restored at scene end. (See Changed.)

- The player never walked to scenes; the walk package now resolves correctly and the player uses the same travel package NPCs use.

- `reload_xml_on_game_load` now really re-reads edited files on every save load; the plugin drops its file cache when the setting is on. (Thanks to Holylokki.)

- `OnStageEvent` now carries the tags and idle forms of the stage that fired it. (Thanks to Holylokki.)

- `OnAnimationChange` lists actors in their actual order after a position switch. (Thanks to Holylokki.)

- The scene camera no longer opens at the player's old position when the walk to a scene fails; camera glides track their anchor live. (AE plugin.)

- Bogus XSD warning on valid tagData files (`Element 'tag': The attribute 'id' is required`); tagData has its own schema definition. The schema also accepts `playOnce` on `animationGroup`.

- Tags from two actions could fuse into one bogus tag during rollup.

- A locked expression morph (`lock="true"`) never unlocked; locks now clear on reset.

- Expression-applied morphs stayed on the face after the scene; removing an expression now resets them.

- The shipped Papyrus `.psc` sources are current again (they had been frozen since 1.6.0). (Thanks to dogzila.)

Changed

- Documentation corrections, with the schema updated: `loop` defaults to `false` unless both `from` and `to` are set; `positionConfig` `offset` and frame-based `start` are now documented. (Thanks to Holylokki.)

- `fly_cam_movement_speed` / `fly_cam_rotation_speed` set to `0` leave the camera speed alone. Defaults stay `1.5`.

# Version 1.7.5

- *Expanded in-game settings menu (MCM)* — AAF's Mod Configuration Menu now covers nearly every setting in `AAF_settings.ini` (~85 controls across six pages: General, Equipment and Effects, Camera and POV, Interface, Hotkeys, Advanced). Hotkeys are rebindable in-game through key-name dropdowns labeled with their ini variable names. As before, the menu requires the separately-installed MCM mod; AAF still runs fully on the ini without it.

- *Per-save setting overrides* — `AAF_settings.ini` remains the source of defaults for every save. Changing a setting in the MCM stores an override with the current save only: it persists there across sessions and AAF updates, while every setting you have not touched keeps following the ini live — mid-playthrough ini edits and new settings added by AAF updates flow through automatically. New games always start from the pure ini. The "Reset All Settings To INI Defaults" button on the menu's front page drops every override so the save follows the ini again.

- *Debug Output Window toggles live* — switching the debug window on or off in the MCM now takes effect immediately in both directions, and the window keeps its earlier output across an off/on cycle. Settings changed in the MCM print a short confirmation there ("Setting updated: …") instead of repeating the startup header.

- *Obsolete settings removed* — `disable_morph_copying`, `copy_weapons`, and `disable_skin_handling` had no remaining function and are gone from the ini and the MCM. Leftover lines in an existing ini are ignored harmlessly.

- *`ChangeSetting` API deprecated* — AAF's new in-game settings menu (MCM) supersedes this function's original purpose of letting other mods build settings interfaces, and values set through it do not interact well with the new per-save overrides. It still works in 1.7.5 but is slated for removal in a future version; mods that depend on it should make that known through the AAF support channels.

- *Furniture scan-radius fix* — when a scene did not specify its own scan radius, the fallback read a setting that no longer exists (`wizard_search_area`) and resolved to nothing; it now uses `furniture_search_area` as intended.

- *The Luck attraction hint was blank* — the `$HINT_LUCK` strings shipped with no text, so an attraction shortfall in Luck could show a blank (or raw `$HINT_LUCK`) line where the other stats show their "If you were only..." hint. It now reads "If you were only luckier...". Translators: this is the one hint string that needs fresh text in every language file.

- *Fewer redundant body refreshes from stat-bound morphs and overlays* — morphs and overlay tints bound to a stat re-sent their computed value on every stat change, even when that value had not actually changed — typical once the stat passes the binding's `statMax` and the effect is pinned at full strength, and again after scenes while stats decay back to base. Each redundant send still triggered a full body-morph refresh on the actor (up to four per second during scenes, one per second during post-scene decay). Unchanged values are now skipped, so those refreshes only happen when the body genuinely changes.

- *Every error code means one thing again* — six positionTree/staged-scene warnings had been sharing codes `[090]`–`[095]` with unrelated messages; they are now `[101]`–`[106]`. See the wiki's Error Index for the full list.

- *XML schema covers everything the framework accepts* — `aaf.xsd` now declares all attributes the runtime reads (per-node `loadPriority`, `cameraPlaylist` on `<animation>`, inline `source` on actorType/expression keywords, overlaySet stat binding, float overlay `alpha` plus per-overlay `duration`, furniture-group `startAnimation`/`stopAnimation`, tree `location`/`altLocation`, and a proper model for animationMeta `<value>` nodes). XML that loads fine no longer draws spurious warnings in schema-aware editors; all bundled AAF XML validates clean.

- *Bundled file cleanups* — the camera XML files no longer contain `--` inside comments (spec-invalid XML that strict parsers rejected), and the `enable_scene_camera` comment in `AAF_settings.ini` was rewritten for the playlist-era camera system.

PIXIES - No. 13 Baby (HQ) (YouTube)