/SkyrimOutfitSystemSE

Primary LanguageC++OtherNOASSERTION

Skyrim Outfit System SE Revived

Build status

This mod is a resurrection of aers's port of David J Cobb's Skyrim Outfit System for Skyrim SE, now able to run on newer Skyrim SE versions including Anniversary Edition.

This version also features a better Quickselect system using UIExtensions menus and is also version independent from the SKSE/Skyrim runtime version by use of the Address Library and CommonLibSSE-NG.

Compatibility

Thanks to CommonLibSSE-NG, this mod supports SE and AE with a single DLL. Runtimes 1.5.73 to 1.6.353 are officially supported.

Runtimes 1.6.629 and later have modified struct layouts and, while CommonLibSSE-NG should technically allow this mod to support them, they are completely untested and unsupported for now. Likewise for compatibility with any store besides Steam.

License

This mod is derived from aers's SSE port of DavidJCobb's Skyrim Outfit System. Since DavidJCobb originally licensed Skyrim Outfit System under CC-BY-NC-SA-4.0, which must be applied to derivative works, this rework also uses the same license.

Some files in the dependencies folder are from other places, and fall under their respective licenses.

Building

Prerequisites

Before attempting to build this project, please have the following tools installed.

  • Visual Studio 2022 with the C++ Toolchain, including MSVC and CMake
  • vcpkg
  • Pyro
  • ninja
  • git

Build Steps

Preparation

SKSE (Optional)

If you want to edit and compile Papyrus scripts, you will need to download SKSE. If you only plan to work on the DLL itself, you can skip this step.

You must also manually download SKSE64 2.0.15. Extract it into the dependencies/skse64 subfolder. You want it such that skse64_readme.txt is directly inside of dependencies/skse64.

Make sure you have an installation of the exact version of vcpkg specified above bootstrapped and ready to go. The version of vcpkg determines the versions of the dependencies that will be provided by it.

Building the C++ Plugin

You will use CMake to build this project. This project is 64-bit statically linked and uses vcpkg to get obtain library dependencies.

Make sure to activate the x86-64 build tools as as follows:

"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64

First, create a build folder (anywhere is fine). For this example, we will create a folder called build inside the root of the project.

mkdir build
cd build

Now invoke CMake as follows:

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${PATH TO VCPKG TOOLCHAIN} -DVCPKG_TARGET_TRIPLET=x64-windows-static ../

Note that ${PATH TO VCPKG TOOLCHAIN} is to be replaced with the path to the vkpkg toolchain, as described by the vcpkg documentation.

NOTE: This command may fail the first time, saying that "protoc.exe" could not be found. If this happens, rerun the cmake command above.

WARNING: Ninja is the only supported generator. MSBuild may or may not work.

Once the project is successfully configured, build it by running

cmake --build ./

In a few moments, you should have SkyrimOutfitSystemSE.dll in the mod_files folder.

Building the Papyrus code

This project uses Pyro to build the Papyrus scripts. Pyro uses the skyrimse.ppj file in the root of this project. I personally use the VS Code plugin for this, but I plan to add instructions on doing it manually.

Assembling the Mod Package

The CMake and Pyro build process both deposit their build artifacts into the mod_files folder. This folder also contains the translation file and .esp file and, when both the Papyrus and C++ plugins are built, is the complete mod package.