Skip to content

Author Overview

A high-level map of the Beeing Female NG plugin set and source tree. It tells you where things live and what each part is for — to see individual forms, open the plugins in SSEEdit / xEdit. For runtime actor data see StorageUtil & State Data; for the INI extension system see the Add-on Framework.

Integrating from another mod

You do not need anything from this repo to integrate with BF NG. The API is mod events plus StorageUtil keys, both reachable with vanilla Papyrus and PapyrusUtil — so a consumer script compiles with no BF sources in its import path, and gains no hard dependency. Detect BF with Game.GetModByName("BeeingFemale.esm") != 255 and skip the integration when it is absent.

A script add-on — one extending FWAddOn_Misc/_Race/_CycleMagicEffect — is the exception: it does compile against BF's own sources, from dist/Core/source/scripts/ in this repo.

Script add-ons are the expensive option

BF's scripts are mutually referential, so the compile closure of any one add-on base class is the whole ~34-script cluster, and compiling it also needs sources for every mod BF holds a typed property for (SexLab, Devious Devices, OStim, SlaveTats, FNIS, MFG Fix, SkyUI SDK, RaceMenu, JContainers, PO3, ConsoleUtil — see skyrimse.ppj). Prefer mod events or an add-on INI; reach for a script add-on only for the hooks (OnGiveBirthStart, OnLaborPain, OnBabySpawn, …) that nothing else exposes.

The plugin set

One master plus three supporting plugins; load order is master first, then the patch chain.

File Role
BeeingFemale.esm The system file. All core records — cycle/pregnancy abilities, items, child-actor system, dialogue, factions, globals, keywords. Everything depends on this.
BeeingFemaleBasicAddOn.esp Content pack: PMS ability effects, per-race baby textures, sounds.
BeeingFemaleSE_Opt.esp SE / HearthFires patch: child races, ovulation item, and the author-tunable globals (myBFA_ProbChildRaceDeterminedByFather, myBFA_ProbChildSexDetermMale, BFOpt_MatureTimeInDays).
BeeingFemaleAdultPack.esp Optional (ESL): 200 adult NPC bases from the vanilla chargen presets, for the child grow-up / father pool. Generated by tools/xedit/BFAP_GenerateAdultPack.pas.

CK-filled properties

Most forms are bound to Papyrus properties filled in the Creation Kit, not by code. Don't delete an unused Property from a .psc without also clearing it in the plugin, or the binding breaks. See CLAUDE.md → Important: CK-Filled Properties.

Editor-ID prefixes

Prefix Means
BF_… A quest that hosts a Papyrus script (the editor ID matches the script, e.g. BF_Controller → FWController.psc).
_BF… A content record added by NG (items, abilities, effects, factions, globals, dialogue).
_FW… Legacy "FrameWork" record from the original mod — same idea, older naming.
BFKeyWord_… The structural keywords (_Base, _Spell, _StateSpell, _BabyItem) the system uses to recognise its own forms.

Repo layout

Beeing Female NG/
├─ src/                       C++ SKSE plugin (CommonLibSSE-NG) → BeeingFemale.dll. See building.md.
├─ lib/commonlibsse-ng/       SKSE framework — git submodule, don't edit.
├─ dist/                      Everything that ships to the player's Data folder:
│  ├─ Core/                     the base mod (the .esm/.esp files + assets below)
│  │  ├─ source/scripts/*.psc   Papyrus SOURCES — edit these.
│  │  ├─ scripts/*.pex          compiled bytecode — build output, don't hand-edit.
│  │  ├─ skse/plugins/          compiled .dll lands here.
│  │  ├─ BeeingFemale/          loose runtime DATA: AddOn/ Couples/ HUD/ Names/ Profile/ Version/
│  │  └─ Interface/translations/  localized MCM strings (UTF-16 LE BOM).
│  ├─ Patches/                  optional compatibility patches (FOMOD components).
│  └─ fomod/                    FOMOD installer (ModuleConfig.xml + info.xml version).
├─ tools/xedit/               xEdit generator scripts (.pas).
├─ docs/                      this documentation site (authoritative source).
└─ CLAUDE.md                  contributor/build notes.

The split that matters: plugins + loose BeeingFemale/ data are what you patch or extend without touching code; dist/Core/source/scripts/ is the only place to edit Papyrus — everything under scripts/ and skse/plugins/ is build output. See Building from Source.