diff --git a/.gitignore b/.gitignore index 79658557..3b83b306 100644 --- a/.gitignore +++ b/.gitignore @@ -49,5 +49,13 @@ x86/ # Nsight *.nvuser -fallout4_test/src/version_info.h -fallout4_test/VTune Amplifier Results/ +version_info.h +resource.aps + +*.lnk +*.vcxproj.user + +# other +*.cer +*.bat +*.bin diff --git a/.gitmodules b/.gitmodules index 9cef7e4e..814c6507 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,14 +1,23 @@ -[submodule "Dependencies/meshoptimizer"] - path = Dependencies/meshoptimizer +[submodule "[Depends]/meshoptimizer"] + path = [Depends]/meshoptimizer url = https://github.com/zeux/meshoptimizer.git branch = master -[submodule "Dependencies/tbb"] - path = Dependencies/tbb - url = https://github.com/01org/tbb.git - branch = tbb_2019 -[submodule "Dependencies/libdeflate"] - path = Dependencies/libdeflate +[submodule "[Depends]/libdeflate"] + path = [Depends]/libdeflate url = https://github.com/ebiggers/libdeflate.git -[submodule "Dependencies/detours"] - path = Dependencies/detours +[submodule "[Depends]/detours"] + path = [Depends]/detours url = https://github.com/Nukem9/detours.git +[submodule "[Depends]/mINI"] + path = [Depends]/mINI + url = https://github.com/Perchik71/mINI +[submodule "[Depends]/tbb"] + path = [Depends]/tbb + url = https://github.com/oneapi-src/oneTBB.git + branch = tbb_2020 +[submodule "[Depends]/zipper"] + path = [Depends]/zipper + url = https://github.com/kuba--/zip.git +[submodule "[Depends]/jDialogs"] + path = [Depends]/jDialogs + url = https://github.com/Perchik71/jDialogs.git diff --git a/Dependencies/libdeflate b/Dependencies/libdeflate deleted file mode 160000 index b255565d..00000000 --- a/Dependencies/libdeflate +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b255565de234b635020a22ca51727516a473d220 diff --git a/Dependencies/meshoptimizer b/Dependencies/meshoptimizer deleted file mode 160000 index 86ffc32d..00000000 --- a/Dependencies/meshoptimizer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 86ffc32d308e73b3ce54cde7b4439a1477cf6651 diff --git a/Dependencies/tbb b/Dependencies/tbb deleted file mode 160000 index a803f276..00000000 --- a/Dependencies/tbb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a803f276186fa2c286a357207832112265b448e4 diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..02ca4d44 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +MIT License + +Copyright (c) 2020 Nukem9 +Copyright (c) 2020-2022 Perchik71 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..134dd896 --- /dev/null +++ b/README.md @@ -0,0 +1,104 @@ +

+ Fallout4-Test +

+ +

+A collection of modifications, enhancements, and reverse engineered resources for Fallout 4 and CK Fallout 4. +

+ +

+ License: MIT + GitHub release (stable) + GitHub top language + GitHub release (by f4ck_loader) + GitHub all releases + GitHub code size in bytes +

+ +# Fixed or added +:white_check_mark: Fast file loading +:white_check_mark: Ability to remove hints on the progress bar +:white_check_mark: Multiple UI Fix View Menu section and etc +:white_check_mark: Create master files and open them as plugins +:white_check_mark: Opening plugins as master files if they are in dependencies +:white_check_mark: Filtering by active forms +:white_check_mark: Filtering mods in the Data dialog +:white_check_mark: Many other fixes are also from the author of [@Nukem9](https://github.com/Nukem9) + +# ENB +**CK** does not work well with **ENB**. +I wrote **f4ck_loader 0.3**, download from tag [1.6](https://github.com/Perchik71/Fallout4Test/releases/tag/1.6) or compile branch *"master"* yourself. +So also it is embedded in itself .dll and can be extracted if necessary. +The program is console and simple, for *15 seconds* removes from the known to me *.dll* files that harm the work of **CK** this time is enough to load the **CK** itself. +All deleted *.dll* files will be restored after this time. + +# Additional +In version 0.7, I redefined the HTML redactor material, because I don't know how to use it, to the redactor material from the author **ousnius**. +Url: https://www.nexusmods.com/fallout4/mods/3635 +Unzip the contents of the archive to the /Tools/MaterialEditor/ folder. + +In version 1.1, generate .lip files supported. Record file .wav using CK or Audacity. +As soon as the wav file will be loaded, you need to select it from the list and click the generate button. +If successful, the file will be where .wav is, but it will load only after opening the dialog again. +It still uses CK32 and it should be installed. + +# Compiling +Cloning the project, as well as its dependencies to path **[Depends]**: +[meshoptimizer](https://github.com/zeux/meshoptimizer.git) URL **https://github.com/zeux/meshoptimizer.git** AS **[Depends]/meshoptimizer** +[libdeflate](https://github.com/ebiggers/libdeflate.git) URL **https://github.com/ebiggers/libdeflate.git** AS **[Depends]/libdeflate** +[detours](https://github.com/Nukem9/detours.git) URL **https://github.com/Nukem9/detours.git** AS **[Depends]/detours** +[mINI](https://github.com/Perchik71/mINI) URL **https://github.com/Perchik71/mINI** AS **[Depends]/mINI** +[tbb](https://github.com/oneapi-src/oneTBB.git) URL **https://github.com/oneapi-src/oneTBB.git** AS **[Depends]/tbb** BRANCH **tbb_2020** +[zipper](https://github.com/kuba--/zip.git) URL **https://github.com/kuba--/zip.git** AS **[Depends]/zipper** +[jDialogs](https://github.com/Perchik71/jDialogs.git) URL **https://github.com/Perchik71/jDialogs.git** AS **[Depends]/jDialogs** (NEED UPDATE RECURSIVE) +Select **Release** mode compiling configuration and compile. After compilation, the binary files can be found x64/Release-MT and x64/Release. + +# Installation +After compiling the code, dynamic libraries are created: *tbb.dll*, *tbbmalloc.dll*, *winhttp.dll*. +(Optional *CreationKitUnicodePlugin.dll* to compile, use **Lazarus 1.8.2 and higher**) +You should place all .dll *(Exception winhttp.dll)* this in the **/Data/F4CKFixes/bin folder** and *winhttp.dll* to root game folder. +Place dialogs in the **/Data/F4CKFixes/dia** folder or pack it into a zip archive and place it in the **/Data/F4CKFixes** folder. + +# Mod Settings +To hide errors, create a file *CreationKitWarnings.txt*. +**IMPORTANT**: Errors should be copied from the mod's Log window and one error is one line. +Additionally, you can create a Localize folder and place a file with the same name, but with a different encoding. +The file must be in **ANSI** encoding. +*fallout4_test.ini* the main file with the settings and comes with the code, be sure to read. + +# Unicode +**ONLY SURROGATE**: Support for English and native languages without special characters. +For understanding, the application uses the ancient **ANSI** type string representation. The idea is to feed the text already in your native encoding. When loading .esp, .esl, .esm files all strings are translated from UTF-8 to WinCP, and when saved back. WinCP is the current encoding in your operating system. +**IMPORTANT**: +In **Win10**, in the language settings, there is now an option to work with UTF-8, you need to turn it off otherwise there will be only "?". + +# Compilation +At the moment, the project is built on **MS Visual Studio 2019 version 16.11.8** and **WinSDK version 10.0.17763.0** +*(I would recommend this version)*. +I rebuilt it in a new studio, however, I also stick to **C++17**, there are so many things errors with **C++20**.... Well, him!. +(Optional *CreationKitUnicodePlugin.dll* to compile, use **Lazarus 1.8.2 and higher**) + +# License +![MIT License](https://camo.githubusercontent.com/20666e1b72ed1ea8f0a7c1d1e0ea35769a7c24f879ecc27ac16641b46f225a01/68747470733a2f2f6f70656e736f757263652e6f72672f74726164656d61726b732f6f70656e736f757263652f4f53492d417070726f7665642d4c6963656e73652d313030783133372e706e67) + +[![License](http://img.shields.io/badge/license-MIT-green.svg)](https://github.com/Perchik71/Fallout4Test/blob/master/LICENSE) + +Copyright (c) 2020 Nukem9 +Copyright (c) 2020-2022 Perchik71 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + diff --git a/[Common]/CommInc.h b/[Common]/CommInc.h new file mode 100644 index 00000000..46d6b266 --- /dev/null +++ b/[Common]/CommInc.h @@ -0,0 +1,180 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +// 4018 - signed/unsigned mismatch +// 4244 - loss of data by assignment +// 4267 - possible loss of data (truncation) +// 4305 - truncation by assignment +// 4288 - disable warning for crap Microsoft extension screwing up the scope of variables defined in for loops +// 4311 - pointer truncation +// 4312 - pointer extension + +#pragma warning(disable: 4018) +#pragma warning(disable: 4229) +#pragma warning(disable: 4244) +#pragma warning(disable: 4267) +#pragma warning(disable: 4305) +#pragma warning(disable: 4288) +#pragma warning(disable: 4312) +#pragma warning(disable: 4311) +#pragma warning(disable: 4334) +#pragma warning(disable: 4800) +#pragma warning(disable: 6053) +#pragma warning(disable: 6269) +#pragma warning(disable: 6066) +#pragma warning(disable: 6067) +#pragma warning(disable: 6387) +#pragma warning(disable: 6386) +#pragma warning(disable: 26812) +#pragma warning(disable: 28183) +#pragma warning(disable: 26451) + +#ifndef UI_CUSTOM_MESSAGE +#define UI_CUSTOM_MESSAGE 52000 +#endif // UI_CUSTOM_MESSAGE + +#ifndef __NOMINMAX +#define __NOMINMAX +#endif // __NOMINMAX + +#ifndef FIXAPI +#define FIXAPI __stdcall +#endif + +#ifndef RAD2DEG +#define RAD2DEG (57.295779513082320876798154814105) +#endif // RAD2DEG + +#ifndef DEG2RAD +#define DEG2RAD (0.01745329251994329576923690768489) +#endif // DEG2RAD + +#include "../version_info.h" + +// WIN64 +#if defined(_WINDOWS) && defined(_M_X64) && (_MSC_VER > 1900) + +// For use WinSDK 11 +// (Unexpected work is possible) +#ifndef WINDOWS_IGNORE_PACKING_MISMATCH +#define WINDOWS_IGNORE_PACKING_MISMATCH +#endif // !WINDOWS_IGNORE_PACKING_MISMATCH + +#include "../resource.h" +#include "../[Win64]/Config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#else +#error Only WINDOWS +#endif + +// CRT +#include +#include +#include +#include +#include +#include +#include + +// STL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if (_MSC_VER > 1910) +#include +#else +#error Only Visual Studio 2017 or higher +#endif +#include +#include +#include "EraseIf.h" + +// DIRECTX +#include +#include + +// TBBMalloc +#define TBB_PREVIEW_CONCURRENT_ORDERED_CONTAINERS 1 +#include +#include +#include +#include +#include +#include + +// Detours +#include + +// ZLib +#include + +// Zydis +#include + +// XByak +#include diff --git a/[Common]/D3D11Proxy.cpp b/[Common]/D3D11Proxy.cpp new file mode 100644 index 00000000..83b6e034 --- /dev/null +++ b/[Common]/D3D11Proxy.cpp @@ -0,0 +1,1154 @@ +#include "StdAfx.h" + +// ***************************************** // +// // +// D3D11DeviceProxy // +// // +// ***************************************** // +D3D11DeviceProxy::D3D11DeviceProxy(ID3D11Device *Device) +{ + HRESULT hr = Device->QueryInterface(&m_Device); + + AssertMsg(SUCCEEDED(hr), "D3D11.2 interface is not supported"); + Assert(m_Device->Release() > 0); + + ID3D11DeviceContext2 *temp; + m_Device->GetImmediateContext2(&temp); + + m_ContextProxy = new D3D11DeviceContextProxy(temp); +} + +D3D11DeviceProxy::D3D11DeviceProxy(ID3D11Device2 *Device) +{ + m_Device = Device; + + ID3D11DeviceContext2 *temp; + m_Device->GetImmediateContext2(&temp); + + m_ContextProxy = new D3D11DeviceContextProxy(temp); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::QueryInterface(REFIID riid, void **ppvObj) +{ + //if (riid == __uuidof(IDXGIDevice) || riid == __uuidof(IDXGIDevice1)) + return m_Device->QueryInterface(riid, ppvObj); + + //Assert(FALSE); + return E_NOTIMPL; +} + +ULONG STDMETHODCALLTYPE D3D11DeviceProxy::AddRef() +{ + return m_Device->AddRef(); +} + +ULONG STDMETHODCALLTYPE D3D11DeviceProxy::Release() +{ + ULONG refCount = m_Device->Release(); + + if (refCount <= 0) + { + m_ContextProxy->Release(); + m_ContextProxy = NULL; + + m_Device = NULL; + delete this; + } + + return refCount; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateBuffer(const D3D11_BUFFER_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Buffer **ppBuffer) +{ + return m_Device->CreateBuffer(pDesc, pInitialData, ppBuffer); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateTexture1D(const D3D11_TEXTURE1D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture1D **ppTexture1D) +{ + return m_Device->CreateTexture1D(pDesc, pInitialData, ppTexture1D); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateTexture2D(const D3D11_TEXTURE2D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture2D **ppTexture2D) +{ + return m_Device->CreateTexture2D(pDesc, pInitialData, ppTexture2D); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateTexture3D(const D3D11_TEXTURE3D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture3D **ppTexture3D) +{ + return m_Device->CreateTexture3D(pDesc, pInitialData, ppTexture3D); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateShaderResourceView(ID3D11Resource *pResource, const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc, ID3D11ShaderResourceView **ppSRView) +{ + return m_Device->CreateShaderResourceView(pResource, pDesc, ppSRView); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateUnorderedAccessView(ID3D11Resource *pResource, const D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc, ID3D11UnorderedAccessView **ppUAView) +{ + return m_Device->CreateUnorderedAccessView(pResource, pDesc, ppUAView); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateRenderTargetView(ID3D11Resource *pResource, const D3D11_RENDER_TARGET_VIEW_DESC *pDesc, ID3D11RenderTargetView **ppRTView) +{ + return m_Device->CreateRenderTargetView(pResource, pDesc, ppRTView); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDepthStencilView(ID3D11Resource *pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc, ID3D11DepthStencilView **ppDepthStencilView) +{ + return m_Device->CreateDepthStencilView(pResource, pDesc, ppDepthStencilView); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateInputLayout(const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs, UINT NumElements, const void *pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D11InputLayout **ppInputLayout) +{ + return m_Device->CreateInputLayout(pInputElementDescs, NumElements, pShaderBytecodeWithInputSignature, BytecodeLength, ppInputLayout); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateVertexShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11VertexShader **ppVertexShader) +{ + HRESULT hr = m_Device->CreateVertexShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppVertexShader); + + //if (SUCCEEDED(hr)) + // BSGraphics::Renderer::QInstance()->RegisterShaderBytecode(*ppVertexShader, pShaderBytecode, BytecodeLength); + + return hr; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateGeometryShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11GeometryShader **ppGeometryShader) +{ + return m_Device->CreateGeometryShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppGeometryShader); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateGeometryShaderWithStreamOutput(const void *pShaderBytecode, SIZE_T BytecodeLength, const D3D11_SO_DECLARATION_ENTRY *pSODeclaration, UINT NumEntries, const UINT *pBufferStrides, UINT NumStrides, UINT RasterizedStream, ID3D11ClassLinkage *pClassLinkage, ID3D11GeometryShader **ppGeometryShader) +{ + return m_Device->CreateGeometryShaderWithStreamOutput(pShaderBytecode, BytecodeLength, pSODeclaration, NumEntries, pBufferStrides, NumStrides, RasterizedStream, pClassLinkage, ppGeometryShader); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreatePixelShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11PixelShader **ppPixelShader) +{ + HRESULT hr = m_Device->CreatePixelShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppPixelShader); + + //if (SUCCEEDED(hr)) + // BSGraphics::Renderer::QInstance()->RegisterShaderBytecode(*ppPixelShader, pShaderBytecode, BytecodeLength); + + return hr; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateHullShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader) +{ + return m_Device->CreateHullShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppHullShader); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDomainShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11DomainShader **ppDomainShader) +{ + return m_Device->CreateDomainShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppDomainShader); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateComputeShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11ComputeShader **ppComputeShader) +{ + HRESULT hr = m_Device->CreateComputeShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppComputeShader); + + //if (SUCCEEDED(hr)) + // BSGraphics::Renderer::QInstance()->RegisterShaderBytecode(*ppComputeShader, pShaderBytecode, BytecodeLength); + + return hr; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateClassLinkage(ID3D11ClassLinkage **ppLinkage) +{ + return m_Device->CreateClassLinkage(ppLinkage); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateBlendState(const D3D11_BLEND_DESC *pBlendStateDesc, ID3D11BlendState **ppBlendState) +{ + return m_Device->CreateBlendState(pBlendStateDesc, ppBlendState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDepthStencilState(const D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc, ID3D11DepthStencilState **ppDepthStencilState) +{ + return m_Device->CreateDepthStencilState(pDepthStencilDesc, ppDepthStencilState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateRasterizerState(const D3D11_RASTERIZER_DESC *pRasterizerDesc, ID3D11RasterizerState **ppRasterizerState) +{ + return m_Device->CreateRasterizerState(pRasterizerDesc, ppRasterizerState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateSamplerState(const D3D11_SAMPLER_DESC *pSamplerDesc, ID3D11SamplerState **ppSamplerState) +{ + return m_Device->CreateSamplerState(pSamplerDesc, ppSamplerState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateQuery(const D3D11_QUERY_DESC *pQueryDesc, ID3D11Query **ppQuery) +{ + return m_Device->CreateQuery(pQueryDesc, ppQuery); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreatePredicate(const D3D11_QUERY_DESC *pPredicateDesc, ID3D11Predicate **ppPredicate) +{ + return m_Device->CreatePredicate(pPredicateDesc, ppPredicate); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateCounter(const D3D11_COUNTER_DESC *pCounterDesc, ID3D11Counter **ppCounter) +{ + return m_Device->CreateCounter(pCounterDesc, ppCounter); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDeferredContext(UINT ContextFlags, ID3D11DeviceContext **ppDeferredContext) +{ + HRESULT hr = m_Device->CreateDeferredContext(ContextFlags, ppDeferredContext); + + if (SUCCEEDED(hr)) + *ppDeferredContext = new D3D11DeviceContextProxy(*ppDeferredContext); + + return hr; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void **ppResource) +{ + return m_Device->OpenSharedResource(hResource, ReturnedInterface, ppResource); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CheckFormatSupport(DXGI_FORMAT Format, UINT *pFormatSupport) +{ + return m_Device->CheckFormatSupport(Format, pFormatSupport); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT *pNumQualityLevels) +{ + return m_Device->CheckMultisampleQualityLevels(Format, SampleCount, pNumQualityLevels); +} + +void STDMETHODCALLTYPE D3D11DeviceProxy::CheckCounterInfo(D3D11_COUNTER_INFO *pCounterInfo) +{ + m_Device->CheckCounterInfo(pCounterInfo); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CheckCounter(const D3D11_COUNTER_DESC *pDesc, D3D11_COUNTER_TYPE *pType, UINT *pActiveCounters, LPSTR szName, UINT *pNameLength, LPSTR szUnits, UINT *pUnitsLength, LPSTR szDescription, UINT *pDescriptionLength) +{ + return m_Device->CheckCounter(pDesc, pType, pActiveCounters, szName, pNameLength, szUnits, pUnitsLength, szDescription, pDescriptionLength); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CheckFeatureSupport(D3D11_FEATURE Feature, void *pFeatureSupportData, UINT FeatureSupportDataSize) +{ + return m_Device->CheckFeatureSupport(Feature, pFeatureSupportData, FeatureSupportDataSize); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData) +{ + return m_Device->GetPrivateData(guid, pDataSize, pData); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::SetPrivateData(REFGUID guid, UINT DataSize, const void *pData) +{ + return m_Device->SetPrivateData(guid, DataSize, pData); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::SetPrivateDataInterface(REFGUID guid, const IUnknown *pData) +{ + return m_Device->SetPrivateDataInterface(guid, pData); +} + +UINT STDMETHODCALLTYPE D3D11DeviceProxy::GetCreationFlags() +{ + return m_Device->GetCreationFlags(); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::GetDeviceRemovedReason() +{ + return m_Device->GetDeviceRemovedReason(); +} + +void STDMETHODCALLTYPE D3D11DeviceProxy::GetImmediateContext(ID3D11DeviceContext **ppImmediateContext) +{ + m_ContextProxy->AddRef(); + *ppImmediateContext = m_ContextProxy; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::SetExceptionMode(UINT RaiseFlags) +{ + return m_Device->SetExceptionMode(RaiseFlags); +} + +UINT STDMETHODCALLTYPE D3D11DeviceProxy::GetExceptionMode() +{ + return m_Device->GetExceptionMode(); +} + +D3D_FEATURE_LEVEL STDMETHODCALLTYPE D3D11DeviceProxy::GetFeatureLevel() +{ + return m_Device->GetFeatureLevel(); +} + +// ID3D11Device1 +void STDMETHODCALLTYPE D3D11DeviceProxy::GetImmediateContext1(ID3D11DeviceContext1 **ppImmediateContext) +{ + m_ContextProxy->AddRef(); + *ppImmediateContext = m_ContextProxy; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDeferredContext1(UINT ContextFlags, ID3D11DeviceContext1 **ppDeferredContext) +{ + HRESULT hr = m_Device->CreateDeferredContext1(ContextFlags, ppDeferredContext); + + if (SUCCEEDED(hr)) + *ppDeferredContext = new D3D11DeviceContextProxy(*ppDeferredContext); + + return hr; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateBlendState1(const D3D11_BLEND_DESC1 *pBlendStateDesc, ID3D11BlendState1 **ppBlendState) +{ + return m_Device->CreateBlendState1(pBlendStateDesc, ppBlendState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateRasterizerState1(const D3D11_RASTERIZER_DESC1 *pRasterizerDesc, ID3D11RasterizerState1 **ppRasterizerState) +{ + return m_Device->CreateRasterizerState1(pRasterizerDesc, ppRasterizerState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDeviceContextState(UINT Flags, const D3D_FEATURE_LEVEL *pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, REFIID EmulatedInterface, D3D_FEATURE_LEVEL *pChosenFeatureLevel, ID3DDeviceContextState **ppContextState) +{ + return m_Device->CreateDeviceContextState(Flags, pFeatureLevels, FeatureLevels, SDKVersion, EmulatedInterface, pChosenFeatureLevel, ppContextState); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::OpenSharedResource1(HANDLE hResource, REFIID returnedInterface, void **ppResource) +{ + return m_Device->OpenSharedResource1(hResource, returnedInterface, ppResource); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::OpenSharedResourceByName(LPCWSTR lpName, DWORD dwDesiredAccess, REFIID returnedInterface, void **ppResource) +{ + return m_Device->OpenSharedResourceByName(lpName, dwDesiredAccess, returnedInterface, ppResource); +} + +// ID3D11Device2 +void STDMETHODCALLTYPE D3D11DeviceProxy::GetImmediateContext2(ID3D11DeviceContext2 **ppImmediateContext) +{ + m_ContextProxy->AddRef(); + *ppImmediateContext = m_ContextProxy; +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CreateDeferredContext2(UINT ContextFlags, ID3D11DeviceContext2 **ppDeferredContext) +{ + return m_Device->CreateDeferredContext2(ContextFlags, ppDeferredContext); +} + +void STDMETHODCALLTYPE D3D11DeviceProxy::GetResourceTiling(ID3D11Resource *pTiledResource, UINT *pNumTilesForEntireResource, D3D11_PACKED_MIP_DESC *pPackedMipDesc, D3D11_TILE_SHAPE *pStandardTileShapeForNonPackedMips, UINT *pNumSubresourceTilings, UINT FirstSubresourceTilingToGet, D3D11_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) +{ + m_Device->GetResourceTiling(pTiledResource, pNumTilesForEntireResource, pPackedMipDesc, pStandardTileShapeForNonPackedMips, pNumSubresourceTilings, FirstSubresourceTilingToGet, pSubresourceTilingsForNonPackedMips); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceProxy::CheckMultisampleQualityLevels1(DXGI_FORMAT Format, UINT SampleCount, UINT Flags, UINT *pNumQualityLevels) +{ + return m_Device->CheckMultisampleQualityLevels1(Format, SampleCount, Flags, pNumQualityLevels); +} + +// ***************************************** // +// // +// D3D11DeviceContextProxy // +// // +// ***************************************** // +D3D11DeviceContextProxy::D3D11DeviceContextProxy(ID3D11DeviceContext *Context) +{ + HRESULT hr = Context->QueryInterface(&m_Context); + + AssertMsg(SUCCEEDED(hr), "D3D11.2 interface is not supported"); + Assert(m_Context->Release() > 0); + + // Grab ID3DUserDefinedAnnotation for profiling markers + hr = m_Context->QueryInterface(&m_UserAnnotation); + + if (!SUCCEEDED(hr)) + m_UserAnnotation = NULL; +} + +D3D11DeviceContextProxy::D3D11DeviceContextProxy(ID3D11DeviceContext2 *Context) +{ + m_Context = Context; + + // Grab ID3DUserDefinedAnnotation for profiling markers + HRESULT hr = m_Context->QueryInterface(&m_UserAnnotation); + + if (!SUCCEEDED(hr)) + m_UserAnnotation = NULL; +} + +// IUnknown +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::QueryInterface(REFIID riid, void **ppvObj) +{ + Assert(FALSE); + return E_NOTIMPL; +} + +ULONG STDMETHODCALLTYPE D3D11DeviceContextProxy::AddRef() +{ + return m_Context->AddRef(); +} + +ULONG STDMETHODCALLTYPE D3D11DeviceContextProxy::Release() +{ + ULONG refCount = m_Context->Release(); + + if (refCount <= 0) + { + if (m_UserAnnotation) + { + m_UserAnnotation->Release(); + m_UserAnnotation = NULL; + } + + m_Context = NULL; + delete this; + } + + return refCount; +} + +// ID3D11DeviceChild +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GetDevice(ID3D11Device **ppDevice) +{ + //AssertMsg(false, "TODO: This call must be proxied"); + m_Context->GetDevice(ppDevice); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData) +{ + return m_Context->GetPrivateData(guid, pDataSize, pData); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::SetPrivateData(REFGUID guid, UINT DataSize, const void *pData) +{ + return m_Context->SetPrivateData(guid, DataSize, pData); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::SetPrivateDataInterface(REFGUID guid, const IUnknown *pData) +{ + return m_Context->SetPrivateDataInterface(guid, pData); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) +{ + m_Context->VSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) +{ + m_Context->PSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSSetShader(ID3D11PixelShader *pPixelShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) +{ + m_Context->PSSetShader(pPixelShader, ppClassInstances, NumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) +{ + m_Context->PSSetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSSetShader(ID3D11VertexShader *pVertexShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) +{ + m_Context->VSSetShader(pVertexShader, ppClassInstances, NumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DrawIndexed(UINT IndexCount, UINT StartIndexLocation, INT BaseVertexLocation) +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->DrawIndexed(IndexCount, StartIndexLocation, BaseVertexLocation); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::Draw(UINT VertexCount, UINT StartVertexLocation) +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->Draw(VertexCount, StartVertexLocation); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::Map(ID3D11Resource *pResource, UINT Subresource, D3D11_MAP MapType, UINT MapFlags, D3D11_MAPPED_SUBRESOURCE *pMappedResource) +{ + return m_Context->Map(pResource, Subresource, MapType, MapFlags, pMappedResource); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::Unmap(ID3D11Resource *pResource, UINT Subresource) +{ + m_Context->Unmap(pResource, Subresource); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) +{ + m_Context->PSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IASetInputLayout(ID3D11InputLayout *pInputLayout) +{ + m_Context->IASetInputLayout(pInputLayout); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IASetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppVertexBuffers, const UINT *pStrides, const UINT *pOffsets) +{ + m_Context->IASetVertexBuffers(StartSlot, NumBuffers, ppVertexBuffers, pStrides, pOffsets); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IASetIndexBuffer(ID3D11Buffer *pIndexBuffer, DXGI_FORMAT Format, UINT Offset) +{ + m_Context->IASetIndexBuffer(pIndexBuffer, Format, Offset); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DrawIndexedInstanced(UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation, INT BaseVertexLocation, UINT StartInstanceLocation) +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->DrawIndexedInstanced(IndexCountPerInstance, InstanceCount, StartIndexLocation, BaseVertexLocation, StartInstanceLocation); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DrawInstanced(UINT VertexCountPerInstance, UINT InstanceCount, UINT StartVertexLocation, UINT StartInstanceLocation) +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->DrawInstanced(VertexCountPerInstance, InstanceCount, StartVertexLocation, StartInstanceLocation); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) +{ + m_Context->GSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSSetShader(ID3D11GeometryShader *pShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) +{ + m_Context->GSSetShader(pShader, ppClassInstances, NumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY Topology) +{ + m_Context->IASetPrimitiveTopology(Topology); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) +{ + m_Context->VSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) +{ + m_Context->VSSetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::Begin(ID3D11Asynchronous *pAsync) +{ + m_Context->Begin(pAsync); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::End(ID3D11Asynchronous *pAsync) +{ + m_Context->End(pAsync); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::GetData(ID3D11Asynchronous *pAsync, void *pData, UINT DataSize, UINT GetDataFlags) +{ + return m_Context->GetData(pAsync, pData, DataSize, GetDataFlags); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::SetPredication(ID3D11Predicate *pPredicate, BOOL PredicateValue) +{ + m_Context->SetPredication(pPredicate, PredicateValue); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) +{ + m_Context->GSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) +{ + m_Context->GSSetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMSetRenderTargets(UINT NumViews, ID3D11RenderTargetView *const *ppRenderTargetViews, ID3D11DepthStencilView *pDepthStencilView) +{ + m_Context->OMSetRenderTargets(NumViews, ppRenderTargetViews, pDepthStencilView); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMSetRenderTargetsAndUnorderedAccessViews(UINT NumRTVs, ID3D11RenderTargetView *const *ppRenderTargetViews, ID3D11DepthStencilView *pDepthStencilView, UINT UAVStartSlot, UINT NumUAVs, ID3D11UnorderedAccessView *const *ppUnorderedAccessViews, const UINT *pUAVInitialCounts) +{ + m_Context->OMSetRenderTargetsAndUnorderedAccessViews(NumRTVs, ppRenderTargetViews, pDepthStencilView, UAVStartSlot, NumUAVs, ppUnorderedAccessViews, pUAVInitialCounts); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMSetBlendState(ID3D11BlendState *pBlendState, const FLOAT BlendFactor[4], UINT SampleMask) +{ + m_Context->OMSetBlendState(pBlendState, BlendFactor, SampleMask); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMSetDepthStencilState(ID3D11DepthStencilState *pDepthStencilState, UINT StencilRef) +{ + m_Context->OMSetDepthStencilState(pDepthStencilState, StencilRef); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::SOSetTargets(UINT NumBuffers, ID3D11Buffer *const *ppSOTargets, const UINT *pOffsets) +{ + m_Context->SOSetTargets(NumBuffers, ppSOTargets, pOffsets); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DrawAuto() +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->DrawAuto(); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DrawIndexedInstancedIndirect(ID3D11Buffer *pBufferForArgs, UINT AlignedByteOffsetForArgs) +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->DrawIndexedInstancedIndirect(pBufferForArgs, AlignedByteOffsetForArgs); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DrawInstancedIndirect(ID3D11Buffer *pBufferForArgs, UINT AlignedByteOffsetForArgs) +{ + //ProfileCounterInc("Draw Calls"); + + m_Context->DrawInstancedIndirect(pBufferForArgs, AlignedByteOffsetForArgs); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::Dispatch(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ) +{ + //ProfileCounterInc("Dispatch Calls"); + + m_Context->Dispatch(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DispatchIndirect(ID3D11Buffer *pBufferForArgs, UINT AlignedByteOffsetForArgs) +{ + //ProfileCounterInc("Dispatch Calls"); + + m_Context->DispatchIndirect(pBufferForArgs, AlignedByteOffsetForArgs); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::RSSetState(ID3D11RasterizerState *pRasterizerState) +{ + m_Context->RSSetState(pRasterizerState); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::RSSetViewports(UINT NumViewports, const D3D11_VIEWPORT *pViewports) +{ + m_Context->RSSetViewports(NumViewports, pViewports); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::RSSetScissorRects(UINT NumRects, const D3D11_RECT *pRects) +{ + m_Context->RSSetScissorRects(NumRects, pRects); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CopySubresourceRegion(ID3D11Resource *pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D11Resource *pSrcResource, UINT SrcSubresource, const D3D11_BOX *pSrcBox) +{ + m_Context->CopySubresourceRegion(pDstResource, DstSubresource, DstX, DstY, DstZ, pSrcResource, SrcSubresource, pSrcBox); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CopyResource(ID3D11Resource *pDstResource, ID3D11Resource *pSrcResource) +{ + m_Context->CopyResource(pDstResource, pSrcResource); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::UpdateSubresource(ID3D11Resource *pDstResource, UINT DstSubresource, const D3D11_BOX *pDstBox, const void *pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch) +{ + m_Context->UpdateSubresource(pDstResource, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CopyStructureCount(ID3D11Buffer *pDstBuffer, UINT DstAlignedByteOffset, ID3D11UnorderedAccessView *pSrcView) +{ + m_Context->CopyStructureCount(pDstBuffer, DstAlignedByteOffset, pSrcView); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ClearRenderTargetView(ID3D11RenderTargetView *pRenderTargetView, const FLOAT ColorRGBA[4]) +{ + m_Context->ClearRenderTargetView(pRenderTargetView, ColorRGBA); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ClearUnorderedAccessViewUint(ID3D11UnorderedAccessView *pUnorderedAccessView, const UINT Values[4]) +{ + m_Context->ClearUnorderedAccessViewUint(pUnorderedAccessView, Values); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ClearUnorderedAccessViewFloat(ID3D11UnorderedAccessView *pUnorderedAccessView, const FLOAT Values[4]) +{ + m_Context->ClearUnorderedAccessViewFloat(pUnorderedAccessView, Values); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ClearDepthStencilView(ID3D11DepthStencilView *pDepthStencilView, UINT ClearFlags, FLOAT Depth, UINT8 Stencil) +{ + m_Context->ClearDepthStencilView(pDepthStencilView, ClearFlags, Depth, Stencil); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GenerateMips(ID3D11ShaderResourceView *pShaderResourceView) +{ + m_Context->GenerateMips(pShaderResourceView); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::SetResourceMinLOD(ID3D11Resource *pResource, FLOAT MinLOD) +{ + m_Context->SetResourceMinLOD(pResource, MinLOD); +} + +FLOAT STDMETHODCALLTYPE D3D11DeviceContextProxy::GetResourceMinLOD(ID3D11Resource *pResource) +{ + return m_Context->GetResourceMinLOD(pResource); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ResolveSubresource(ID3D11Resource *pDstResource, UINT DstSubresource, ID3D11Resource *pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format) +{ + m_Context->ResolveSubresource(pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ExecuteCommandList(ID3D11CommandList *pCommandList, BOOL RestoreContextState) +{ + m_Context->ExecuteCommandList(pCommandList, RestoreContextState); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) +{ + m_Context->HSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSSetShader(ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) +{ + m_Context->HSSetShader(pHullShader, ppClassInstances, NumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) +{ + m_Context->HSSetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) +{ + m_Context->HSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) +{ + m_Context->DSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSSetShader(ID3D11DomainShader *pDomainShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) +{ + m_Context->DSSetShader(pDomainShader, ppClassInstances, NumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) +{ + m_Context->DSSetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) +{ + m_Context->DSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) +{ + m_Context->CSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSSetUnorderedAccessViews(UINT StartSlot, UINT NumUAVs, ID3D11UnorderedAccessView *const *ppUnorderedAccessViews, const UINT *pUAVInitialCounts) +{ + m_Context->CSSetUnorderedAccessViews(StartSlot, NumUAVs, ppUnorderedAccessViews, pUAVInitialCounts); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSSetShader(ID3D11ComputeShader *pComputeShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) +{ + m_Context->CSSetShader(pComputeShader, ppClassInstances, NumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) +{ + m_Context->CSSetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) +{ + m_Context->CSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) +{ + m_Context->VSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) +{ + m_Context->PSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSGetShader(ID3D11PixelShader **ppPixelShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) +{ + m_Context->PSGetShader(ppPixelShader, ppClassInstances, pNumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) +{ + m_Context->PSGetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSGetShader(ID3D11VertexShader **ppVertexShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) +{ + m_Context->VSGetShader(ppVertexShader, ppClassInstances, pNumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) +{ + m_Context->PSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IAGetInputLayout(ID3D11InputLayout **ppInputLayout) +{ + m_Context->IAGetInputLayout(ppInputLayout); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IAGetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppVertexBuffers, UINT *pStrides, UINT *pOffsets) +{ + m_Context->IAGetVertexBuffers(StartSlot, NumBuffers, ppVertexBuffers, pStrides, pOffsets); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IAGetIndexBuffer(ID3D11Buffer **pIndexBuffer, DXGI_FORMAT *Format, UINT *Offset) +{ + m_Context->IAGetIndexBuffer(pIndexBuffer, Format, Offset); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) +{ + m_Context->GSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSGetShader(ID3D11GeometryShader **ppGeometryShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) +{ + m_Context->GSGetShader(ppGeometryShader, ppClassInstances, pNumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::IAGetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY *pTopology) +{ + m_Context->IAGetPrimitiveTopology(pTopology); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) +{ + m_Context->VSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) +{ + m_Context->VSGetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GetPredication(ID3D11Predicate **ppPredicate, BOOL *pPredicateValue) +{ + m_Context->GetPredication(ppPredicate, pPredicateValue); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) +{ + m_Context->GSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) +{ + m_Context->GSGetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMGetRenderTargets(UINT NumViews, ID3D11RenderTargetView **ppRenderTargetViews, ID3D11DepthStencilView **ppDepthStencilView) +{ + m_Context->OMGetRenderTargets(NumViews, ppRenderTargetViews, ppDepthStencilView); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMGetRenderTargetsAndUnorderedAccessViews(UINT NumRTVs, ID3D11RenderTargetView **ppRenderTargetViews, ID3D11DepthStencilView **ppDepthStencilView, UINT UAVStartSlot, UINT NumUAVs, ID3D11UnorderedAccessView **ppUnorderedAccessViews) +{ + m_Context->OMGetRenderTargetsAndUnorderedAccessViews(NumRTVs, ppRenderTargetViews, ppDepthStencilView, UAVStartSlot, NumUAVs, ppUnorderedAccessViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMGetBlendState(ID3D11BlendState **ppBlendState, FLOAT BlendFactor[4], UINT *pSampleMask) +{ + m_Context->OMGetBlendState(ppBlendState, BlendFactor, pSampleMask); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::OMGetDepthStencilState(ID3D11DepthStencilState **ppDepthStencilState, UINT *pStencilRef) +{ + m_Context->OMGetDepthStencilState(ppDepthStencilState, pStencilRef); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::SOGetTargets(UINT NumBuffers, ID3D11Buffer **ppSOTargets) +{ + m_Context->SOGetTargets(NumBuffers, ppSOTargets); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::RSGetState(ID3D11RasterizerState **ppRasterizerState) +{ + m_Context->RSGetState(ppRasterizerState); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::RSGetViewports(UINT *pNumViewports, D3D11_VIEWPORT *pViewports) +{ + m_Context->RSGetViewports(pNumViewports, pViewports); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::RSGetScissorRects(UINT *pNumRects, D3D11_RECT *pRects) +{ + m_Context->RSGetScissorRects(pNumRects, pRects); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) +{ + m_Context->HSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSGetShader(ID3D11HullShader **ppHullShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) +{ + m_Context->HSGetShader(ppHullShader, ppClassInstances, pNumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) +{ + m_Context->HSGetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) +{ + m_Context->HSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) +{ + m_Context->DSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSGetShader(ID3D11DomainShader **ppDomainShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) +{ + m_Context->DSGetShader(ppDomainShader, ppClassInstances, pNumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) +{ + m_Context->DSGetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) +{ + m_Context->DSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) +{ + m_Context->CSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSGetUnorderedAccessViews(UINT StartSlot, UINT NumUAVs, ID3D11UnorderedAccessView **ppUnorderedAccessViews) +{ + m_Context->CSGetUnorderedAccessViews(StartSlot, NumUAVs, ppUnorderedAccessViews); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSGetShader(ID3D11ComputeShader **ppComputeShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) +{ + m_Context->CSGetShader(ppComputeShader, ppClassInstances, pNumClassInstances); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) +{ + m_Context->CSGetSamplers(StartSlot, NumSamplers, ppSamplers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) +{ + m_Context->CSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ClearState() +{ + m_Context->ClearState(); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::Flush() +{ + m_Context->Flush(); +} + +UINT STDMETHODCALLTYPE D3D11DeviceContextProxy::GetContextFlags() +{ + return m_Context->GetContextFlags(); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::FinishCommandList(BOOL RestoreDeferredContextState, ID3D11CommandList **ppCommandList) +{ + return m_Context->FinishCommandList(RestoreDeferredContextState, ppCommandList); +} + +D3D11_DEVICE_CONTEXT_TYPE STDMETHODCALLTYPE D3D11DeviceContextProxy::GetType() +{ + return m_Context->GetType(); +} + +// ID3D11DeviceContext1 +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CopySubresourceRegion1(ID3D11Resource *pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D11Resource *pSrcResource, UINT SrcSubresource, const D3D11_BOX *pSrcBox, UINT CopyFlags) +{ + m_Context->CopySubresourceRegion1(pDstResource, DstSubresource, DstX, DstY, DstZ, pSrcResource, SrcSubresource, pSrcBox, CopyFlags); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::UpdateSubresource1(ID3D11Resource *pDstResource, UINT DstSubresource, const D3D11_BOX *pDstBox, const void *pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch, UINT CopyFlags) +{ + m_Context->UpdateSubresource1(pDstResource, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch, CopyFlags); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DiscardResource(ID3D11Resource *pResource) +{ + m_Context->DiscardResource(pResource); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DiscardView(ID3D11View *pResourceView) +{ + m_Context->DiscardView(pResourceView); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) +{ + m_Context->VSSetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) +{ + m_Context->HSSetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) +{ + m_Context->DSSetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) +{ + m_Context->GSSetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) +{ + m_Context->PSSetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) +{ + m_Context->CSSetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::VSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) +{ + m_Context->VSGetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::HSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) +{ + m_Context->HSGetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) +{ + m_Context->DSGetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::GSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) +{ + m_Context->GSGetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::PSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) +{ + m_Context->PSGetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) +{ + m_Context->CSGetConstantBuffers1(StartSlot, NumBuffers, ppConstantBuffers, pFirstConstant, pNumConstants); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::SwapDeviceContextState(ID3DDeviceContextState *pState, ID3DDeviceContextState **ppPreviousState) +{ + m_Context->SwapDeviceContextState(pState, ppPreviousState); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::ClearView(ID3D11View *pView, const FLOAT Color[4], const D3D11_RECT *pRect, UINT NumRects) +{ + m_Context->ClearView(pView, Color, pRect, NumRects); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::DiscardView1(ID3D11View *pResourceView, const D3D11_RECT *pRects, UINT NumRects) +{ + m_Context->DiscardView1(pResourceView, pRects, NumRects); +} + +// ID3D11DeviceContext2 +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::UpdateTileMappings(ID3D11Resource *pTiledResource, UINT NumTiledResourceRegions, const D3D11_TILED_RESOURCE_COORDINATE *pTiledResourceRegionStartCoordinates, const D3D11_TILE_REGION_SIZE *pTiledResourceRegionSizes, ID3D11Buffer *pTilePool, UINT NumRanges, const UINT *pRangeFlags, const UINT *pTilePoolStartOffsets, const UINT *pRangeTileCounts, UINT Flags) +{ + return m_Context->UpdateTileMappings(pTiledResource, NumTiledResourceRegions, pTiledResourceRegionStartCoordinates, pTiledResourceRegionSizes, pTilePool, NumRanges, pRangeFlags, pTilePoolStartOffsets, pRangeTileCounts, Flags); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::CopyTileMappings(ID3D11Resource *pDestTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pDestRegionStartCoordinate, ID3D11Resource *pSourceTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pSourceRegionStartCoordinate, const D3D11_TILE_REGION_SIZE *pTileRegionSize, UINT Flags) +{ + return m_Context->CopyTileMappings(pDestTiledResource, pDestRegionStartCoordinate, pSourceTiledResource, pSourceRegionStartCoordinate, pTileRegionSize, Flags); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::CopyTiles(ID3D11Resource *pTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, const D3D11_TILE_REGION_SIZE *pTileRegionSize, ID3D11Buffer *pBuffer, UINT64 BufferStartOffsetInBytes, UINT Flags) +{ + m_Context->CopyTiles(pTiledResource, pTileRegionStartCoordinate, pTileRegionSize, pBuffer, BufferStartOffsetInBytes, Flags); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::UpdateTiles(ID3D11Resource *pDestTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate, const D3D11_TILE_REGION_SIZE *pDestTileRegionSize, const void *pSourceTileData, UINT Flags) +{ + m_Context->UpdateTiles(pDestTiledResource, pDestTileRegionStartCoordinate, pDestTileRegionSize, pSourceTileData, Flags); +} + +HRESULT STDMETHODCALLTYPE D3D11DeviceContextProxy::ResizeTilePool(ID3D11Buffer *pTilePool, UINT64 NewSizeInBytes) +{ + return m_Context->ResizeTilePool(pTilePool, NewSizeInBytes); +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::TiledResourceBarrier(ID3D11DeviceChild *pTiledResourceOrViewAccessBeforeBarrier, ID3D11DeviceChild *pTiledResourceOrViewAccessAfterBarrier) +{ + m_Context->TiledResourceBarrier(pTiledResourceOrViewAccessBeforeBarrier, pTiledResourceOrViewAccessAfterBarrier); +} + +BOOL STDMETHODCALLTYPE D3D11DeviceContextProxy::IsAnnotationEnabled() +{ + if (m_UserAnnotation) + return m_UserAnnotation->GetStatus(); + + return FALSE; + +#if 0 + return m_Context->IsAnnotationEnabled(); +#endif +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::SetMarkerInt(LPCWSTR pLabel, INT Data) +{ + if (m_UserAnnotation) + m_UserAnnotation->SetMarker(pLabel); + +#if 0 + m_Context->SetMarkerInt(pLabel, Data); +#endif +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::BeginEventInt(LPCWSTR pLabel, INT Data) +{ + if (m_UserAnnotation) + m_UserAnnotation->BeginEvent(pLabel); + +#if 0 + m_Context->BeginEventInt(pLabel, Data); +#endif +} + +void STDMETHODCALLTYPE D3D11DeviceContextProxy::EndEvent() +{ + if (m_UserAnnotation) + m_UserAnnotation->EndEvent(); + +#if 0 + m_Context->EndEvent(); +#endif +} \ No newline at end of file diff --git a/[Common]/D3D11Proxy.h b/[Common]/D3D11Proxy.h new file mode 100644 index 00000000..2c8f15c6 --- /dev/null +++ b/[Common]/D3D11Proxy.h @@ -0,0 +1,240 @@ +#pragma once + +#include + +struct D3D11DeviceProxy; +struct D3D11DeviceContextProxy; + +struct D3D11DeviceProxy : ID3D11Device2 +{ + ID3D11Device2 *m_Device; + D3D11DeviceContextProxy *m_ContextProxy; + + D3D11DeviceProxy(ID3D11Device *Device); + D3D11DeviceProxy(ID3D11Device2 *Device); + + // IUnknown + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObj) override; + virtual ULONG STDMETHODCALLTYPE AddRef() override; + virtual ULONG STDMETHODCALLTYPE Release() override; + + // ID3D11Device + virtual HRESULT STDMETHODCALLTYPE CreateBuffer(const D3D11_BUFFER_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Buffer **ppBuffer) override; + virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(const D3D11_TEXTURE1D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture1D **ppTexture1D) override; + virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(const D3D11_TEXTURE2D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture2D **ppTexture2D) override; + virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(const D3D11_TEXTURE3D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture3D **ppTexture3D) override; + virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(ID3D11Resource *pResource, const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc, ID3D11ShaderResourceView **ppSRView) override; + virtual HRESULT STDMETHODCALLTYPE CreateUnorderedAccessView(ID3D11Resource *pResource, const D3D11_UNORDERED_ACCESS_VIEW_DESC *pDesc, ID3D11UnorderedAccessView **ppUAView) override; + virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(ID3D11Resource *pResource, const D3D11_RENDER_TARGET_VIEW_DESC *pDesc, ID3D11RenderTargetView **ppRTView) override; + virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(ID3D11Resource *pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc, ID3D11DepthStencilView **ppDepthStencilView) override; + virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs, UINT NumElements, const void *pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D11InputLayout **ppInputLayout) override; + virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11VertexShader **ppVertexShader) override; + virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11GeometryShader **ppGeometryShader) override; + virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(const void *pShaderBytecode, SIZE_T BytecodeLength, const D3D11_SO_DECLARATION_ENTRY *pSODeclaration, UINT NumEntries, const UINT *pBufferStrides, UINT NumStrides, UINT RasterizedStream, ID3D11ClassLinkage *pClassLinkage, ID3D11GeometryShader **ppGeometryShader) override; + virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11PixelShader **ppPixelShader) override; + virtual HRESULT STDMETHODCALLTYPE CreateHullShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader) override; + virtual HRESULT STDMETHODCALLTYPE CreateDomainShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11DomainShader **ppDomainShader) override; + virtual HRESULT STDMETHODCALLTYPE CreateComputeShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11ComputeShader **ppComputeShader) override; + virtual HRESULT STDMETHODCALLTYPE CreateClassLinkage(ID3D11ClassLinkage **ppLinkage) override; + virtual HRESULT STDMETHODCALLTYPE CreateBlendState(const D3D11_BLEND_DESC *pBlendStateDesc, ID3D11BlendState **ppBlendState) override; + virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(const D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc, ID3D11DepthStencilState **ppDepthStencilState) override; + virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(const D3D11_RASTERIZER_DESC *pRasterizerDesc, ID3D11RasterizerState **ppRasterizerState) override; + virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(const D3D11_SAMPLER_DESC *pSamplerDesc, ID3D11SamplerState **ppSamplerState) override; + virtual HRESULT STDMETHODCALLTYPE CreateQuery(const D3D11_QUERY_DESC *pQueryDesc, ID3D11Query **ppQuery) override; + virtual HRESULT STDMETHODCALLTYPE CreatePredicate(const D3D11_QUERY_DESC *pPredicateDesc, ID3D11Predicate **ppPredicate) override; + virtual HRESULT STDMETHODCALLTYPE CreateCounter(const D3D11_COUNTER_DESC *pCounterDesc, ID3D11Counter **ppCounter) override; + virtual HRESULT STDMETHODCALLTYPE CreateDeferredContext(UINT ContextFlags, ID3D11DeviceContext **ppDeferredContext) override; + virtual HRESULT STDMETHODCALLTYPE OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void **ppResource) override; + virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(DXGI_FORMAT Format, UINT *pFormatSupport) override; + virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT *pNumQualityLevels) override; + virtual void STDMETHODCALLTYPE CheckCounterInfo(D3D11_COUNTER_INFO *pCounterInfo) override; + virtual HRESULT STDMETHODCALLTYPE CheckCounter(const D3D11_COUNTER_DESC *pDesc, D3D11_COUNTER_TYPE *pType, UINT *pActiveCounters, LPSTR szName, UINT *pNameLength, LPSTR szUnits, UINT *pUnitsLength, LPSTR szDescription, UINT *pDescriptionLength) override; + virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(D3D11_FEATURE Feature, void *pFeatureSupportData, UINT FeatureSupportDataSize) override; + virtual HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData) override; + virtual HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID guid, UINT DataSize, const void *pData) override; + virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID guid, const IUnknown *pData) override; + virtual UINT STDMETHODCALLTYPE GetCreationFlags() override; + virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason() override; + virtual void STDMETHODCALLTYPE GetImmediateContext(ID3D11DeviceContext **ppImmediateContext) override; + virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(UINT RaiseFlags) override; + virtual UINT STDMETHODCALLTYPE GetExceptionMode() override; + virtual D3D_FEATURE_LEVEL STDMETHODCALLTYPE GetFeatureLevel() override; + + // ID3D11Device1 + virtual void STDMETHODCALLTYPE GetImmediateContext1(ID3D11DeviceContext1 **ppImmediateContext) override; + virtual HRESULT STDMETHODCALLTYPE CreateDeferredContext1(UINT ContextFlags, ID3D11DeviceContext1 **ppDeferredContext) override; + virtual HRESULT STDMETHODCALLTYPE CreateBlendState1(const D3D11_BLEND_DESC1 *pBlendStateDesc, ID3D11BlendState1 **ppBlendState); + virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState1(const D3D11_RASTERIZER_DESC1 *pRasterizerDesc, ID3D11RasterizerState1 **ppRasterizerState) override; + virtual HRESULT STDMETHODCALLTYPE CreateDeviceContextState(UINT Flags, const D3D_FEATURE_LEVEL *pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, REFIID EmulatedInterface, D3D_FEATURE_LEVEL *pChosenFeatureLevel, ID3DDeviceContextState **ppContextState) override; + virtual HRESULT STDMETHODCALLTYPE OpenSharedResource1(HANDLE hResource, REFIID returnedInterface, void **ppResource) override; + virtual HRESULT STDMETHODCALLTYPE OpenSharedResourceByName(LPCWSTR lpName, DWORD dwDesiredAccess, REFIID returnedInterface, void **ppResource) override; + + // ID3D11Device2 + virtual void STDMETHODCALLTYPE GetImmediateContext2(ID3D11DeviceContext2 **ppImmediateContext) override; + virtual HRESULT STDMETHODCALLTYPE CreateDeferredContext2(UINT ContextFlags, ID3D11DeviceContext2 **ppDeferredContext) override; + virtual void STDMETHODCALLTYPE GetResourceTiling(ID3D11Resource *pTiledResource, UINT *pNumTilesForEntireResource, D3D11_PACKED_MIP_DESC *pPackedMipDesc, D3D11_TILE_SHAPE *pStandardTileShapeForNonPackedMips, UINT *pNumSubresourceTilings, UINT FirstSubresourceTilingToGet, D3D11_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) override; + virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels1(DXGI_FORMAT Format, UINT SampleCount, UINT Flags, UINT *pNumQualityLevels) override; +}; + +struct D3D11DeviceContextProxy : ID3D11DeviceContext2 +{ + ID3D11DeviceContext2 *m_Context; + ID3DUserDefinedAnnotation *m_UserAnnotation; + + D3D11DeviceContextProxy(ID3D11DeviceContext *Context); + D3D11DeviceContextProxy(ID3D11DeviceContext2 *Context); + + // IUnknown + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObj) override; + virtual ULONG STDMETHODCALLTYPE AddRef() override; + virtual ULONG STDMETHODCALLTYPE Release() override; + + // ID3D11DeviceChild + virtual void STDMETHODCALLTYPE GetDevice(ID3D11Device **ppDevice) override; + virtual HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData) override; + virtual HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID guid, UINT DataSize, const void *pData) override; + virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID guid, const IUnknown *pData) override; + + // ID3D11DeviceContext + virtual void STDMETHODCALLTYPE VSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE PSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE PSSetShader(ID3D11PixelShader *pPixelShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) override; + virtual void STDMETHODCALLTYPE PSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) override; + virtual void STDMETHODCALLTYPE VSSetShader(ID3D11VertexShader *pVertexShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) override; + virtual void STDMETHODCALLTYPE DrawIndexed(UINT IndexCount, UINT StartIndexLocation, INT BaseVertexLocation) override; + virtual void STDMETHODCALLTYPE Draw(UINT VertexCount, UINT StartVertexLocation) override; + virtual HRESULT STDMETHODCALLTYPE Map(ID3D11Resource *pResource, UINT Subresource, D3D11_MAP MapType, UINT MapFlags, D3D11_MAPPED_SUBRESOURCE *pMappedResource) override; + virtual void STDMETHODCALLTYPE Unmap(ID3D11Resource *pResource, UINT Subresource) override; + virtual void STDMETHODCALLTYPE PSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE IASetInputLayout(ID3D11InputLayout *pInputLayout) override; + virtual void STDMETHODCALLTYPE IASetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppVertexBuffers, const UINT *pStrides, const UINT *pOffsets) override; + virtual void STDMETHODCALLTYPE IASetIndexBuffer(ID3D11Buffer *pIndexBuffer, DXGI_FORMAT Format, UINT Offset) override; + virtual void STDMETHODCALLTYPE DrawIndexedInstanced(UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation, INT BaseVertexLocation, UINT StartInstanceLocation) override; + virtual void STDMETHODCALLTYPE DrawInstanced(UINT VertexCountPerInstance, UINT InstanceCount, UINT StartVertexLocation, UINT StartInstanceLocation) override; + virtual void STDMETHODCALLTYPE GSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE GSSetShader(ID3D11GeometryShader *pShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) override; + virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY Topology) override; + virtual void STDMETHODCALLTYPE VSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE VSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) override; + virtual void STDMETHODCALLTYPE Begin(ID3D11Asynchronous *pAsync) override; + virtual void STDMETHODCALLTYPE End(ID3D11Asynchronous *pAsync) override; + virtual HRESULT STDMETHODCALLTYPE GetData(ID3D11Asynchronous *pAsync, void *pData, UINT DataSize, UINT GetDataFlags) override; + virtual void STDMETHODCALLTYPE SetPredication(ID3D11Predicate *pPredicate, BOOL PredicateValue) override; + virtual void STDMETHODCALLTYPE GSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE GSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) override; + virtual void STDMETHODCALLTYPE OMSetRenderTargets(UINT NumViews, ID3D11RenderTargetView *const *ppRenderTargetViews, ID3D11DepthStencilView *pDepthStencilView) override; + virtual void STDMETHODCALLTYPE OMSetRenderTargetsAndUnorderedAccessViews(UINT NumRTVs, ID3D11RenderTargetView *const *ppRenderTargetViews, ID3D11DepthStencilView *pDepthStencilView, UINT UAVStartSlot, UINT NumUAVs, ID3D11UnorderedAccessView *const *ppUnorderedAccessViews, const UINT *pUAVInitialCounts) override; + virtual void STDMETHODCALLTYPE OMSetBlendState(ID3D11BlendState *pBlendState, const FLOAT BlendFactor[4], UINT SampleMask) override; + virtual void STDMETHODCALLTYPE OMSetDepthStencilState(ID3D11DepthStencilState *pDepthStencilState, UINT StencilRef) override; + virtual void STDMETHODCALLTYPE SOSetTargets(UINT NumBuffers, ID3D11Buffer *const *ppSOTargets, const UINT *pOffsets) override; + virtual void STDMETHODCALLTYPE DrawAuto() override; + virtual void STDMETHODCALLTYPE DrawIndexedInstancedIndirect(ID3D11Buffer *pBufferForArgs, UINT AlignedByteOffsetForArgs) override; + virtual void STDMETHODCALLTYPE DrawInstancedIndirect(ID3D11Buffer *pBufferForArgs, UINT AlignedByteOffsetForArgs) override; + virtual void STDMETHODCALLTYPE Dispatch(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ) override; + virtual void STDMETHODCALLTYPE DispatchIndirect(ID3D11Buffer *pBufferForArgs, UINT AlignedByteOffsetForArgs) override; + virtual void STDMETHODCALLTYPE RSSetState(ID3D11RasterizerState *pRasterizerState) override; + virtual void STDMETHODCALLTYPE RSSetViewports(UINT NumViewports, const D3D11_VIEWPORT *pViewports) override; + virtual void STDMETHODCALLTYPE RSSetScissorRects(UINT NumRects, const D3D11_RECT *pRects) override; + virtual void STDMETHODCALLTYPE CopySubresourceRegion(ID3D11Resource *pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D11Resource *pSrcResource, UINT SrcSubresource, const D3D11_BOX *pSrcBox) override; + virtual void STDMETHODCALLTYPE CopyResource(ID3D11Resource *pDstResource, ID3D11Resource *pSrcResource) override; + virtual void STDMETHODCALLTYPE UpdateSubresource(ID3D11Resource *pDstResource, UINT DstSubresource, const D3D11_BOX *pDstBox, const void *pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch) override; + virtual void STDMETHODCALLTYPE CopyStructureCount(ID3D11Buffer *pDstBuffer, UINT DstAlignedByteOffset, ID3D11UnorderedAccessView *pSrcView) override; + virtual void STDMETHODCALLTYPE ClearRenderTargetView(ID3D11RenderTargetView *pRenderTargetView, const FLOAT ColorRGBA[4]) override; + virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(ID3D11UnorderedAccessView *pUnorderedAccessView, const UINT Values[4]) override; + virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(ID3D11UnorderedAccessView *pUnorderedAccessView, const FLOAT Values[4]) override; + virtual void STDMETHODCALLTYPE ClearDepthStencilView(ID3D11DepthStencilView *pDepthStencilView, UINT ClearFlags, FLOAT Depth, UINT8 Stencil) override; + virtual void STDMETHODCALLTYPE GenerateMips(ID3D11ShaderResourceView *pShaderResourceView) override; + virtual void STDMETHODCALLTYPE SetResourceMinLOD(ID3D11Resource *pResource, FLOAT MinLOD) override; + virtual FLOAT STDMETHODCALLTYPE GetResourceMinLOD(ID3D11Resource *pResource) override; + virtual void STDMETHODCALLTYPE ResolveSubresource(ID3D11Resource *pDstResource, UINT DstSubresource, ID3D11Resource *pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format) override; + virtual void STDMETHODCALLTYPE ExecuteCommandList(ID3D11CommandList *pCommandList, BOOL RestoreContextState) override; + virtual void STDMETHODCALLTYPE HSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE HSSetShader(ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) override; + virtual void STDMETHODCALLTYPE HSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) override; + virtual void STDMETHODCALLTYPE HSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE DSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE DSSetShader(ID3D11DomainShader *pDomainShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) override; + virtual void STDMETHODCALLTYPE DSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) override; + virtual void STDMETHODCALLTYPE DSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE CSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView *const *ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE CSSetUnorderedAccessViews(UINT StartSlot, UINT NumUAVs, ID3D11UnorderedAccessView *const *ppUnorderedAccessViews, const UINT *pUAVInitialCounts) override; + virtual void STDMETHODCALLTYPE CSSetShader(ID3D11ComputeShader *pComputeShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances) override; + virtual void STDMETHODCALLTYPE CSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState *const *ppSamplers) override; + virtual void STDMETHODCALLTYPE CSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE VSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE PSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE PSGetShader(ID3D11PixelShader **ppPixelShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) override; + virtual void STDMETHODCALLTYPE PSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) override; + virtual void STDMETHODCALLTYPE VSGetShader(ID3D11VertexShader **ppVertexShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) override; + virtual void STDMETHODCALLTYPE PSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE IAGetInputLayout(ID3D11InputLayout **ppInputLayout) override; + virtual void STDMETHODCALLTYPE IAGetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppVertexBuffers, UINT *pStrides, UINT *pOffsets) override; + virtual void STDMETHODCALLTYPE IAGetIndexBuffer(ID3D11Buffer **pIndexBuffer, DXGI_FORMAT *Format, UINT *Offset) override; + virtual void STDMETHODCALLTYPE GSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE GSGetShader(ID3D11GeometryShader **ppGeometryShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) override; + virtual void STDMETHODCALLTYPE IAGetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY *pTopology) override; + virtual void STDMETHODCALLTYPE VSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE VSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) override; + virtual void STDMETHODCALLTYPE GetPredication(ID3D11Predicate **ppPredicate, BOOL *pPredicateValue) override; + virtual void STDMETHODCALLTYPE GSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE GSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) override; + virtual void STDMETHODCALLTYPE OMGetRenderTargets(UINT NumViews, ID3D11RenderTargetView **ppRenderTargetViews, ID3D11DepthStencilView **ppDepthStencilView) override; + virtual void STDMETHODCALLTYPE OMGetRenderTargetsAndUnorderedAccessViews(UINT NumRTVs, ID3D11RenderTargetView **ppRenderTargetViews, ID3D11DepthStencilView **ppDepthStencilView, UINT UAVStartSlot, UINT NumUAVs, ID3D11UnorderedAccessView **ppUnorderedAccessViews) override; + virtual void STDMETHODCALLTYPE OMGetBlendState(ID3D11BlendState **ppBlendState, FLOAT BlendFactor[4], UINT *pSampleMask) override; + virtual void STDMETHODCALLTYPE OMGetDepthStencilState(ID3D11DepthStencilState **ppDepthStencilState, UINT *pStencilRef) override; + virtual void STDMETHODCALLTYPE SOGetTargets(UINT NumBuffers, ID3D11Buffer **ppSOTargets) override; + virtual void STDMETHODCALLTYPE RSGetState(ID3D11RasterizerState **ppRasterizerState) override; + virtual void STDMETHODCALLTYPE RSGetViewports(UINT *pNumViewports, D3D11_VIEWPORT *pViewports) override; + virtual void STDMETHODCALLTYPE RSGetScissorRects(UINT *pNumRects, D3D11_RECT *pRects) override; + virtual void STDMETHODCALLTYPE HSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE HSGetShader(ID3D11HullShader **ppHullShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) override; + virtual void STDMETHODCALLTYPE HSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) override; + virtual void STDMETHODCALLTYPE HSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE DSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE DSGetShader(ID3D11DomainShader **ppDomainShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) override; + virtual void STDMETHODCALLTYPE DSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) override; + virtual void STDMETHODCALLTYPE DSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE CSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView **ppShaderResourceViews) override; + virtual void STDMETHODCALLTYPE CSGetUnorderedAccessViews(UINT StartSlot, UINT NumUAVs, ID3D11UnorderedAccessView **ppUnorderedAccessViews) override; + virtual void STDMETHODCALLTYPE CSGetShader(ID3D11ComputeShader **ppComputeShader, ID3D11ClassInstance **ppClassInstances, UINT *pNumClassInstances) override; + virtual void STDMETHODCALLTYPE CSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState **ppSamplers) override; + virtual void STDMETHODCALLTYPE CSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers) override; + virtual void STDMETHODCALLTYPE ClearState() override; + virtual void STDMETHODCALLTYPE Flush() override; + virtual UINT STDMETHODCALLTYPE GetContextFlags() override; + virtual HRESULT STDMETHODCALLTYPE FinishCommandList(BOOL RestoreDeferredContextState, ID3D11CommandList **ppCommandList) override; + virtual D3D11_DEVICE_CONTEXT_TYPE STDMETHODCALLTYPE GetType() override; + + // ID3D11DeviceContext1 + virtual void STDMETHODCALLTYPE CopySubresourceRegion1(ID3D11Resource *pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D11Resource *pSrcResource, UINT SrcSubresource, const D3D11_BOX *pSrcBox, UINT CopyFlags) override; + virtual void STDMETHODCALLTYPE UpdateSubresource1(ID3D11Resource *pDstResource, UINT DstSubresource, const D3D11_BOX *pDstBox, const void *pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch, UINT CopyFlags) override; + virtual void STDMETHODCALLTYPE DiscardResource(ID3D11Resource *pResource) override; + virtual void STDMETHODCALLTYPE DiscardView(ID3D11View *pResourceView) override; + virtual void STDMETHODCALLTYPE VSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE HSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE DSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE GSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE PSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE CSSetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers, const UINT *pFirstConstant, const UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE VSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE HSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE DSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE GSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE PSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE CSGetConstantBuffers1(UINT StartSlot, UINT NumBuffers, ID3D11Buffer **ppConstantBuffers, UINT *pFirstConstant, UINT *pNumConstants) override; + virtual void STDMETHODCALLTYPE SwapDeviceContextState(ID3DDeviceContextState *pState, ID3DDeviceContextState **ppPreviousState) override; + virtual void STDMETHODCALLTYPE ClearView(ID3D11View *pView, const FLOAT Color[4], const D3D11_RECT *pRect, UINT NumRects) override; + virtual void STDMETHODCALLTYPE DiscardView1(ID3D11View *pResourceView, const D3D11_RECT *pRects, UINT NumRects) override; + + // ID3D11DeviceContext2 + virtual HRESULT STDMETHODCALLTYPE UpdateTileMappings(ID3D11Resource *pTiledResource, UINT NumTiledResourceRegions, const D3D11_TILED_RESOURCE_COORDINATE *pTiledResourceRegionStartCoordinates, const D3D11_TILE_REGION_SIZE *pTiledResourceRegionSizes, ID3D11Buffer *pTilePool, UINT NumRanges, const UINT *pRangeFlags, const UINT *pTilePoolStartOffsets, const UINT *pRangeTileCounts, UINT Flags) override; + virtual HRESULT STDMETHODCALLTYPE CopyTileMappings(ID3D11Resource *pDestTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pDestRegionStartCoordinate, ID3D11Resource *pSourceTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pSourceRegionStartCoordinate, const D3D11_TILE_REGION_SIZE *pTileRegionSize, UINT Flags) override; + virtual void STDMETHODCALLTYPE CopyTiles(ID3D11Resource *pTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, const D3D11_TILE_REGION_SIZE *pTileRegionSize, ID3D11Buffer *pBuffer, UINT64 BufferStartOffsetInBytes, UINT Flags) override; + virtual void STDMETHODCALLTYPE UpdateTiles(ID3D11Resource *pDestTiledResource, const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate, const D3D11_TILE_REGION_SIZE *pDestTileRegionSize, const void *pSourceTileData, UINT Flags) override; + virtual HRESULT STDMETHODCALLTYPE ResizeTilePool(ID3D11Buffer *pTilePool, UINT64 NewSizeInBytes) override; + virtual void STDMETHODCALLTYPE TiledResourceBarrier(ID3D11DeviceChild *pTiledResourceOrViewAccessBeforeBarrier, ID3D11DeviceChild *pTiledResourceOrViewAccessAfterBarrier) override; + virtual BOOL STDMETHODCALLTYPE IsAnnotationEnabled() override; + virtual void STDMETHODCALLTYPE SetMarkerInt(LPCWSTR pLabel, INT Data) override; + virtual void STDMETHODCALLTYPE BeginEventInt(LPCWSTR pLabel, INT Data) override; + virtual void STDMETHODCALLTYPE EndEvent() override; +}; \ No newline at end of file diff --git a/fallout4_test/src/dump.cpp b/[Common]/Dump.cpp similarity index 51% rename from fallout4_test/src/dump.cpp rename to [Common]/Dump.cpp index f768e72c..d91c3346 100644 --- a/fallout4_test/src/dump.cpp +++ b/[Common]/Dump.cpp @@ -1,17 +1,41 @@ -#include "common.h" -#include -#include - -char TempNTSIT[16]; +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" + +CHAR TempNTSIT[16]; ULONG_PTR TempNTSITAddress; std::atomic_uint32_t g_DumpTargetThreadId; -LONG(NTAPI * NtSetInformationThread)(HANDLE ThreadHandle, LONG ThreadInformationClass, PVOID ThreadInformation, ULONG ThreadInformationLength); +LONG(NTAPI* NtSetInformationThread)(HANDLE ThreadHandle, LONG ThreadInformationClass, PVOID ThreadInformation, ULONG ThreadInformationLength); + +VOID FIXAPI Sys_DumpDisableBreakpoint(VOID); +VOID FIXAPI Sys_DumpEnableBreakpoint(VOID); +VOID FIXAPI Sys_ApplyPatches(VOID); -void ApplyPatches(); BOOL WINAPI hk_QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount) { // Restore the original pointer - DumpDisableBreakpoint(); + Sys_DumpDisableBreakpoint(); // Notify debugger __try @@ -21,8 +45,8 @@ BOOL WINAPI hk_QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount) __except (EXCEPTION_EXECUTE_HANDLER) { } - - ApplyPatches(); + + Sys_ApplyPatches(); return QueryPerformanceCounter(lpPerformanceCount); } @@ -34,9 +58,9 @@ LONG NTAPI hk_NtSetInformationThread(HANDLE ThreadHandle, LONG ThreadInformation return NtSetInformationThread(ThreadHandle, ThreadInformationClass, ThreadInformation, ThreadInformationLength); } -void DumpEnableBreakpoint() +VOID FIXAPI Sys_DumpEnableBreakpoint(VOID) { - uintptr_t moduleBase = (uintptr_t)GetModuleHandle(nullptr); + uintptr_t moduleBase = (uintptr_t)GetModuleHandleA(NULL); PIMAGE_NT_HEADERS64 ntHeaders = (PIMAGE_NT_HEADERS64)(moduleBase + ((PIMAGE_DOS_HEADER)moduleBase)->e_lfanew); // Get the load configuration section which holds the security cookie address @@ -70,16 +94,16 @@ void DumpEnableBreakpoint() PatchIAT(hk_QueryPerformanceCounter, "kernel32.dll", "QueryPerformanceCounter"); // Kill steam's unpacker call to NtSetInformationThread(ThreadHideFromDebugger) - TempNTSITAddress = (uintptr_t)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtSetInformationThread"); + TempNTSITAddress = (uintptr_t)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtSetInformationThread"); if (TempNTSITAddress) { - memcpy(&TempNTSIT, (void *)TempNTSITAddress, sizeof(TempNTSIT)); + memcpy(&TempNTSIT, (LPVOID)TempNTSITAddress, sizeof(TempNTSIT)); *(uintptr_t *)&NtSetInformationThread = Detours::X64::DetourFunctionClass(TempNTSITAddress, &hk_NtSetInformationThread); } } -void DumpDisableBreakpoint() +VOID FIXAPI Sys_DumpDisableBreakpoint(VOID) { // Restore the original QPC pointer PatchIAT(QueryPerformanceCounter, "kernel32.dll", "QueryPerformanceCounter"); @@ -91,27 +115,35 @@ void DumpDisableBreakpoint() } } -DWORD WINAPI DumpWriterThread(LPVOID Arg) +DWORD WINAPI Sys_DumpWriterThread(LPVOID Arg) { Assert(Arg); - char fileName[MAX_PATH]; - bool dumpWritten = false; + BSString filezip = ""; + CHAR fileName[MAX_PATH]; + BOOL dumpWritten = FALSE; PEXCEPTION_POINTERS exceptionInfo = (PEXCEPTION_POINTERS)Arg; auto miniDumpWriteDump = (decltype(&MiniDumpWriteDump))GetProcAddress(LoadLibraryA("dbghelp.dll"), "MiniDumpWriteDump"); if (miniDumpWriteDump) { + LPSTR files[2]; + // Create a dump in the same folder of the exe itself - char exePath[MAX_PATH]; - GetModuleFileNameA(GetModuleHandle(nullptr), exePath, ARRAYSIZE(exePath)); + CHAR exePath[MAX_PATH]; + GetModuleFileNameA(GetModuleHandleA(NULL), exePath, ARRAYSIZE(exePath)); SYSTEMTIME sysTime; GetSystemTime(&sysTime); sprintf_s(fileName, "%s_%4d%02d%02d_%02d%02d%02d.dmp", exePath, sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); - HANDLE file = CreateFileA(fileName, GENERIC_READ | GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + auto slen = strlen(fileName) + 1; + files[0] = new CHAR[slen]; + ZeroMemory(files[0], slen); + strcpy(files[0], fileName); + + HANDLE file = CreateFileA(fileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (file != INVALID_HANDLE_VALUE) { @@ -120,19 +152,36 @@ DWORD WINAPI DumpWriterThread(LPVOID Arg) dumpInfo.ExceptionPointers = exceptionInfo; dumpInfo.ClientPointers = FALSE; - uint32_t dumpFlags = MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory | MiniDumpWithThreadInfo; - dumpWritten = miniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), file, (MINIDUMP_TYPE)dumpFlags, &dumpInfo, nullptr, nullptr) != FALSE; + uint32_t dumpFlags = MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory | MiniDumpWithThreadInfo | MiniDumpWithoutOptionalData; + dumpWritten = miniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), file, (MINIDUMP_TYPE)dumpFlags, &dumpInfo, NULL, NULL) != FALSE; CloseHandle(file); } + + auto slog = XUtil::Str::ChangeFileExt(fileName, ".log"); + slen = slog.length() + 1; + files[1] = new CHAR[slen]; + ZeroMemory(files[1], slen); + strcpy(files[1], slog.c_str()); + + LogWindow::SaveRichTextToFile(slog.c_str()); + + filezip = BSString::Utils::ChangeFileExt(fileName, ".zip"); + + if (!zip_create(filezip.c_str(), (LPCSTR*)files, 2)) + { + DeleteFileA(files[0]); + DeleteFileA(files[1]); + } + + delete[] files[0]; + delete[] files[1]; } else - { strcpy_s(fileName, "UNABLE TO LOAD DBGHELP.DLL"); - } - const char *message = nullptr; - const char *reason = nullptr; + LPCSTR message = NULL; + LPCSTR reason = NULL; if (dumpWritten) message = "FATAL ERROR\n\nThe Creation Kit encountered a fatal error and has crashed.\n\nReason: %s (0x%08X).\n\nA minidump has been written to '%s'.\n\nPlease note it may contain private information such as usernames."; @@ -158,14 +207,18 @@ DWORD WINAPI DumpWriterThread(LPVOID Arg) break; } - XUtil::XAssert("", 0, message, reason, exceptionInfo->ExceptionRecord->ExceptionCode, fileName); + if (filezip.Length() > 0) + XUtil::XAssert("", 0, message, reason, exceptionInfo->ExceptionRecord->ExceptionCode, filezip.c_str()); + else + XUtil::XAssert("", 0, message, reason, exceptionInfo->ExceptionRecord->ExceptionCode, ""); + return 0; } -LONG WINAPI DumpExceptionHandler(PEXCEPTION_POINTERS ExceptionInfo) +LONG WINAPI Sys_DumpExceptionHandler(PEXCEPTION_POINTERS ExceptionInfo) { g_DumpTargetThreadId.store(GetCurrentThreadId()); - HANDLE threadHandle = CreateThread(nullptr, 0, DumpWriterThread, ExceptionInfo, 0, nullptr); + HANDLE threadHandle = CreateThread(NULL, 0, Sys_DumpWriterThread, ExceptionInfo, 0, NULL); if (threadHandle) { @@ -174,4 +227,39 @@ LONG WINAPI DumpExceptionHandler(PEXCEPTION_POINTERS ExceptionInfo) } return EXCEPTION_CONTINUE_SEARCH; +} + +/* +================== +Fix_GenerateCrashdumps + +Implements the code in the process +Intercepts errors and creates a dump +================== +*/ +VOID FIXAPI Fix_GenerateCrashdumps(VOID) +{ + SetUnhandledExceptionFilter(Sys_DumpExceptionHandler); + + _set_invalid_parameter_handler([](LPCWSTR, LPCWSTR, LPCWSTR, uint32_t, uintptr_t) + { + RaiseException('PARM', EXCEPTION_NONCONTINUABLE, 0, NULL); + }); + + auto purecallHandler = []() + { + RaiseException('PURE', EXCEPTION_NONCONTINUABLE, 0, NULL); + }; + + auto terminateHandler = []() + { + RaiseException('TERM', EXCEPTION_NONCONTINUABLE, 0, NULL); + }; + + PatchIAT((VOID(*)())terminateHandler, "MSVCR110.dll", "_cexit"); + PatchIAT((VOID(*)())terminateHandler, "MSVCR110.dll", "_exit"); + PatchIAT((VOID(*)())terminateHandler, "MSVCR110.dll", "exit"); + PatchIAT((VOID(*)())terminateHandler, "MSVCR110.dll", "abort"); + PatchIAT((VOID(*)())terminateHandler, "MSVCR110.dll", "terminate"); + PatchIAT((VOID(*)())purecallHandler, "MSVCR110.dll", "_purecall"); } \ No newline at end of file diff --git a/[Common]/EraseIf.h b/[Common]/EraseIf.h new file mode 100644 index 00000000..aed84c7f --- /dev/null +++ b/[Common]/EraseIf.h @@ -0,0 +1,147 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace std { + + // for std::string + template + void erase_if(basic_string& c, Predicate pred) { + c.erase(remove_if(c.begin(), c.end(), pred), c.end()); + } + + // for std::deque + template + void erase_if(deque& c, Predicate pred) { + c.erase(remove_if(c.begin(), c.end(), pred), c.end()); + } + + // for std::vector + template + void erase_if(vector& c, Predicate pred) { + c.erase(remove_if(c.begin(), c.end(), pred), c.end()); + } + + // for std::list + template + void erase_if(list& c, Predicate pred) { + c.remove_if(pred); + } + + // for std::forward_list + template + void erase_if(forward_list& c, Predicate pred) { + c.remove_if(pred); + } + + // for std::map + template + void erase_if(map& c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::multimap + template + void erase_if(multimap & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::set + template + void erase_if(set & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::multiset + template + void erase_if(multiset & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::unordered_map + template + void erase_if(unordered_map & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::unordered_multimap + template + void erase_if(unordered_multimap & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::unordered_set + template + void erase_if(unordered_set & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + + // for std::unordered_multiset + template + void erase_if(unordered_multiset & c, Predicate pred) { + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + } + +} // namespace std \ No newline at end of file diff --git a/[Common]/IMemory.cpp b/[Common]/IMemory.cpp new file mode 100644 index 00000000..4a803f2e --- /dev/null +++ b/[Common]/IMemory.cpp @@ -0,0 +1,217 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" + +/* +Uses oneTBB (oneAPI Threading Building Blocks (oneTBB)) +URL: https://github.com/oneapi-src/oneTBB/tree/a803f276186fa2c286a357207832112265b448e4 + +To increase the performance of the application, the functions are replaced with tbb +*/ + +LPVOID FIXAPI IMemory_v1_6::MemAlloc(size_t Size, UINT32 Alignment, bool Aligned, bool Zeroed) +{ + // If the caller doesn't care, force 4 byte aligns as a minimum + if (!Aligned) + Alignment = 4; + + if (Size <= 0) { + Size = 1; + Alignment = 2; + } + + AssertMsg(Alignment != 0 && Alignment % 2 == 0, "Alignment is fucked"); + + // Must be a power of 2, round it up if needed + if ((Alignment & (Alignment - 1)) != 0) { + Alignment--; + Alignment |= Alignment >> 1; + Alignment |= Alignment >> 2; + Alignment |= Alignment >> 4; + Alignment |= Alignment >> 8; + Alignment |= Alignment >> 16; + Alignment++; + } + + // Size must be a multiple of alignment, round up to nearest + if ((Size % Alignment) != 0) + Size = ((Size + Alignment - 1) / Alignment) * Alignment; + + LPVOID ptr = scalable_aligned_malloc(Size, Alignment); + + if (ptr && Zeroed) + memset(ptr, 0, Size); + + return ptr; +} + +VOID FIXAPI IMemory_v1_6::MemFree(LPVOID Memory, bool Aligned) +{ + if (!Memory) + return; + + scalable_aligned_free(Memory); +} + +size_t FIXAPI IMemory_v1_6::MemSize(LPVOID Memory) +{ + return (size_t)scalable_msize(Memory); +} + +LPSTR FIXAPI IMemory_v1_6::StrDup(LPCSTR string) +{ + size_t len = (strlen(string) + 1); + return (LPSTR)memcpy(MemAlloc(len), string, len); +} + +#if 0 + +#define ALIGN(n, a) (((n) + (a) - 1) & ~((a) - 1)) + +IMemory* g_PoolAllocateMemory = NULL; + +IMemory::IMemory(INT mode) { + _mode = (mode >= MEM_MODE_MIN && mode <= MEM_MODE_MAX) ? mode : MEM_MODE_DEFAULT; + + switch (_mode) + { + case MEM_MODE_ALIGNED: + _Allocate = [](size_t size) -> LPVOID { return _aligned_malloc(size, __MEMALIGN__); }; + _Deallocate = [](LPVOID ptr) { _aligned_free(ptr); }; + _Size = [](LPVOID ptr) -> size_t { return _aligned_msize(ptr, __MEMALIGN__, 0); }; + break; + case MEM_MODE_TBB: + _Allocate = scalable_malloc; + _Deallocate = scalable_free; + _Size = scalable_msize; + break; + case MEM_MODE_TBB_ALIGNED: + _Allocate = [](size_t size) -> LPVOID { return scalable_aligned_malloc(size, __MEMALIGN__); }; + _Deallocate = [](LPVOID ptr) { scalable_aligned_free(ptr); }; + _Size = [](LPVOID ptr) -> size_t { return scalable_msize(ptr); }; + break; + default: + _Allocate = malloc; + _Deallocate = free; + _Size = _msize; + break; + } +} + +LPVOID IMemory::Allocate(size_t size) const { + // Avoiding null returns + if (!size) + size = 1; + + LPVOID ptr = _Allocate(size); + AssertMsgVa(ptr, "Allocate return null pointer\nReturn Address: %X", (uintptr_t)_ReturnAddress()); + + return ptr; +} + +LPVOID IMemory::AllocateAligned(size_t size, size_t alignment) const { + // Avoiding null returns + if (!size) + size = 1; + + // If the caller doesn't care, force 16 byte aligns as a minimum + if (!alignment) + alignment = __MEMALIGN__; + + AssertMsg(alignment % 2 == 0, "Alignment is fucked"); + + // Size must be a multiple of alignment, round up to nearest + if ((size % alignment) != 0) + size = ((size + alignment - 1) / alignment) * alignment; + + LPVOID ptr = _Allocate(sizeof(LPVOID) + alignment - 1 + size); + AssertMsgVa(ptr, "Allocate return null pointer\nReturn Address: %X", (uintptr_t)_ReturnAddress()); + + LPVOID orig_ptr = ptr; + ptr = (LPVOID)ALIGN((uintptr_t)ptr + sizeof(LPVOID), alignment); + ((LPVOID*)ptr)[-1] = orig_ptr; + + return ptr; +} + +IMemory* IMemory::GetInstance(VOID) { + return g_PoolAllocateMemory; +} + +IMemory* IMemory::CreateInstance(DWORD mode) { + if (g_PoolAllocateMemory) + return g_PoolAllocateMemory; + + g_PoolAllocateMemory = new IMemory(mode); + return g_PoolAllocateMemory; +} + +////////////////////////////////////////// + +LPVOID FIXAPI QMemAlloc(UINT64 Size, BOOL Zeroed, BOOL Aligned) { +#if FALLOUT4_MEMORY_ALIGNED_INT + // only aligned memory on 16 + LPVOID Ret = g_PoolAllocateMemory->AllocateAligned(Size); +#else + LPVOID Ret; + if (Aligned) + Ret = g_PoolAllocateMemory->AllocateAligned(Size); + else + Ret = g_PoolAllocateMemory->Allocate(Size); +#endif // !FALLOUT4_MEMORY_ALIGNED + + if (Ret && Zeroed) + memset(Ret, 0, Size); + + return Ret; +} + +VOID FIXAPI QMemFree(LPVOID Memory, BOOL Aligned) { +#if FALLOUT4_MEMORY_ALIGNED_INT + g_PoolAllocateMemory->FreeAligned(Memory); +#else + if (Aligned) + g_PoolAllocateMemory->FreeAligned(Memory); + else + g_PoolAllocateMemory->Free(Memory); +#endif // !FALLOUT4_MEMORY_ALIGNED +} + +UINT64 FIXAPI QMemSize(LPVOID Memory, BOOL Aligned) { +#if FALLOUT4_MEMORY_ALIGNED_INT + return g_PoolAllocateMemory->SizeAligned(Memory); +#else + if (Aligned) + return g_PoolAllocateMemory->SizeAligned(Memory); + else + return g_PoolAllocateMemory->Size(Memory); +#endif // !FALLOUT4_MEMORY_ALIGNED +} + +LPSTR FIXAPI QStrDup(LPCSTR string) { + size_t len = (strlen(string) + 1); + return (LPSTR)memcpy(QMemAlloc(len), (LPVOID)string, len); +} + +#endif \ No newline at end of file diff --git a/[Common]/IMemory.h b/[Common]/IMemory.h new file mode 100644 index 00000000..10f1d4d1 --- /dev/null +++ b/[Common]/IMemory.h @@ -0,0 +1,88 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2022 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include "CommInc.h" + +struct IMemory_v1_6 +{ + static LPVOID FIXAPI MemAlloc(size_t Size, UINT32 Alignment = 0, bool Aligned = FALSE, bool Zeroed = FALSE); + static VOID FIXAPI MemFree(LPVOID Memory, bool Aligned = FALSE); + static size_t FIXAPI MemSize(LPVOID Memory); + static LPSTR FIXAPI StrDup(LPCSTR string); +}; + +#if 0 + +#define __MEMALIGN__ 16 +#define __IMEM_VER 2 + +class IMemory { +public: + typedef std::function MallocT; + typedef std::function FreeT; + typedef std::function MSizeT; + + enum { + MEM_MODE_DEFAULT = 0, + MEM_MODE_ALIGNED, + MEM_MODE_TBB, + MEM_MODE_TBB_ALIGNED, + MEM_MODE_MIN = MEM_MODE_DEFAULT, + MEM_MODE_MAX = MEM_MODE_TBB_ALIGNED, + }; +private: + DWORD _mode; + MallocT _Allocate; + FreeT _Deallocate; + MSizeT _Size; +public: + NOTHROW LPVOID Allocate(size_t size) const; + INLINE NOTHROW VOID Free(LPVOID ptr) const { if (ptr) _Deallocate(ptr); } + INLINE NOTHROW size_t Size(LPVOID ptr) const { return ptr ? _Size(ptr) : 0; } + + INLINE NOTHROW LPVOID GetPointerAligned(LPVOID ptr) const { return ((LPVOID*)ptr)[-1]; } + NOTHROW LPVOID AllocateAligned(size_t size, size_t alignment = __MEMALIGN__) const; + INLINE NOTHROW VOID FreeAligned(LPVOID ptr) const { if (ptr) _Deallocate(GetPointerAligned(ptr)); } + INLINE NOTHROW size_t SizeAligned(LPVOID ptr) const { return ptr ? _Size(GetPointerAligned(ptr)) : 0; } +public: + IMemory(INT mode = MEM_MODE_DEFAULT); +public: + static IMemory* GetInstance(VOID); + static IMemory* CreateInstance(DWORD mode = MEM_MODE_DEFAULT); +}; + +#define TESPOOLMEMORY IMemory::GetInstance() + +LPVOID FIXAPI QMemAlloc(UINT64 Size, BOOL Zeroed = FALSE, BOOL Aligned = FALSE); +VOID FIXAPI QMemFree(LPVOID Memory, BOOL Aligned = FALSE); +UINT64 FIXAPI QMemSize(LPVOID Memory, BOOL Aligned = FALSE); +LPSTR FIXAPI QStrDup(LPCSTR string); + +#endif + +#define QMemAlloc IMemory_v1_6::MemAlloc +#define QMemFree IMemory_v1_6::MemFree +#define QMemSize IMemory_v1_6::MemSize +#define QStrDup IMemory_v1_6::StrDup +#define QMemCopy memcpy diff --git a/[Common]/IMemoryManager.cpp b/[Common]/IMemoryManager.cpp new file mode 100644 index 00000000..35dd3fce --- /dev/null +++ b/[Common]/IMemoryManager.cpp @@ -0,0 +1,47 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" + +LPVOID MemoryManager::Allocate(MemoryManager *Manager, UINT64 Size, UINT32 Alignment, BOOL Aligned) { + return QMemAlloc(Size, Alignment, Aligned, TRUE); +} + +VOID MemoryManager::Deallocate(MemoryManager *Manager, LPVOID Memory, BOOL Aligned) { + QMemFree(Memory, Aligned); +} + +UINT64 MemoryManager::Size(MemoryManager *Manager, LPVOID Memory) { + return QMemSize(Memory); +} + +LPVOID ScrapHeap::Allocate(UINT64 Size, UINT32 Alignment) { + if (Size > g_ScrapSize) + return NULL; + + return QMemAlloc(Size, Alignment, Alignment != 0); +} + +VOID ScrapHeap::Deallocate(LPVOID Memory) { + QMemFree(Memory); +} \ No newline at end of file diff --git a/[Common]/IMemoryManager.h b/[Common]/IMemoryManager.h new file mode 100644 index 00000000..20e0df08 --- /dev/null +++ b/[Common]/IMemoryManager.h @@ -0,0 +1,67 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include "..\[Common]\CommInc.h" + +/* +================== +class MemoryManager + +Main +================== +*/ +class MemoryManager +{ +private: + // We do not describe constructors and destructors + // The class is just a shell + + MemoryManager(VOID) = default; + ~MemoryManager(VOID) = default; +public: + static LPVOID Allocate(MemoryManager *Manager, UINT64 Size, UINT32 Alignment, BOOL Aligned); + static VOID Deallocate(MemoryManager *Manager, LPVOID Memory, BOOL Aligned); + static UINT64 Size(MemoryManager *Manager, LPVOID Memory); +}; + +/* +================== +class ScrapHeap + +For small things (maximum 32, 64, 128 Mbytes size) +================== +*/ +class ScrapHeap +{ +private: + // We do not describe constructors and destructors + // The class is just a shell + + ScrapHeap(VOID) = default; + ~ScrapHeap(VOID) = default; +public: + LPVOID Allocate(UINT64 Size, UINT32 Alignment); + VOID Deallocate(LPVOID Memory); +}; \ No newline at end of file diff --git a/[Common]/INIReader.cpp b/[Common]/INIReader.cpp new file mode 100644 index 00000000..ab59faa0 --- /dev/null +++ b/[Common]/INIReader.cpp @@ -0,0 +1,131 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "INIReader.h" + +#if FALLOUT4_MINI_PROJECT + +#include "StdAfx.h" + +mINIReader::mINIReader(const std::string& fname): m_INIFile(mINI::INIFile(fname)), bChanged(false) +{ + Reload(); +} + +INI_BOOL mINIReader::GetBoolean(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_BOOL ValueDef) +{ + INI_STR valstr = XUtil::Str::LowerCase(Get(section, field, "")); + + if (valstr == "true" || valstr == "yes" || valstr == "on" || valstr == "1") + return true; + else if (valstr == "false" || valstr == "no" || valstr == "off" || valstr == "0") + return false; + else + return ValueDef; +} + +INI_STR mINIReader::Get(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_STR ValueDef) +{ + if (m_INI.has(section)) + { + auto sec = m_INI.get(section); + if (sec.has(field)) + return sec.get(field); + + return ValueDef; + } + + return ValueDef; +} + +INI_FLOAT mINIReader::GetFloat(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_FLOAT ValueDef) +{ + char* end; + sprintf(szBuf, "%f", ValueDef); + INI_STR val = Get(section, field, szBuf); + return (INI_FLOAT)strtof(val.c_str(), &end); +} + +INI_REAL mINIReader::GetReal(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_REAL ValueDef) +{ + char* end; + sprintf(szBuf, "%f", ValueDef); + INI_STR val = Get(section, field, szBuf); + return (INI_REAL)strtod(val.c_str(), &end); +} + +INI_INT mINIReader::GetInteger(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_INT ValueDef) +{ + char* end; + INI_STR val = Get(section, field, _i64toa(ValueDef, szBuf, 10)); + return (INI_INT)strtol(val.c_str(), &end, 10); +} + +void mINIReader::Set(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_STR Value) +{ + bChanged = true; + m_INI[section][field] = Value; +} + +void mINIReader::SetBoolean(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_BOOL Value) +{ + Set(section, field, Value ? "true" : "false"); +} + +void mINIReader::SetFloat(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_FLOAT Value) +{ + sprintf(szBuf, "%f", Value); + Set(section, field, szBuf); +} + +void mINIReader::SetReal(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_REAL Value) +{ + sprintf(szBuf, "%f", Value); + Set(section, field, szBuf); +} + +void mINIReader::SetInteger(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_INT Value) +{ + sprintf(szBuf, "%d", Value); + Set(section, field, szBuf); +} + +void mINIReader::Reload(void) +{ + m_INIFile.read(m_INI); +} + +void mINIReader::Save(void) +{ + if (bChanged) + { + bChanged = false; + m_INIFile.write(m_INI, true); + } +} + +mINIReader::~mINIReader(void) +{ + Save(); +} + +#endif \ No newline at end of file diff --git a/fallout4_test/src/INIReader.h b/[Common]/INIReader.h similarity index 76% rename from fallout4_test/src/INIReader.h rename to [Common]/INIReader.h index 9a67cb45..9d9f8d0f 100644 --- a/fallout4_test/src/INIReader.h +++ b/[Common]/INIReader.h @@ -1,5 +1,73 @@ +////////////////////////////////////////// +/* +* This is a tiny, header only C++ library for manipulating INI files. +* Copyright (c) 2018 Danijel Durakovic +* Copyright (c) 2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + // Read an INI file into easy-to-access name/value pairs. +#pragma once + +#include "..\[Common]\CommInc.h" + +#if FALLOUT4_MINI_PROJECT + +#include "..\[Depends]\mINI\src\mini\ini.h" + +typedef int INI_BOOL; +typedef int INI_INT; +typedef float INI_FLOAT; +typedef double INI_REAL; +typedef std::string INI_STR; +typedef const std::string INI_FIELD_NAME; +typedef const std::string INI_SECTION_NAME; + +// let's create the same class, so that we can rewrite it less. +class mINIReader +{ +private: + mINI::INIFile m_INIFile; + mINI::INIStructure m_INI; + char szBuf[128]; + bool bChanged; +public: + INI_STR Get(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_STR ValueDef); + INI_BOOL GetBoolean(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_BOOL ValueDef); + INI_FLOAT GetFloat(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_FLOAT ValueDef); + INI_REAL GetReal(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_REAL ValueDef); + INI_INT GetInteger(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_INT ValueDef); + + void Set(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_STR Value); + void SetBoolean(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_BOOL Value); + void SetFloat(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_FLOAT Value); + void SetReal(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_REAL Value); + void SetInteger(INI_SECTION_NAME& section, INI_FIELD_NAME& field, INI_INT Value); +public: + void Reload(void); + void Save(void); +public: + mINIReader(const std::string& fname); + virtual ~mINIReader(void); +}; +#else // inih and INIReader are released under the New BSD license (see LICENSE.txt). // Go to the project home page for more info: // @@ -13,9 +81,6 @@ home page for more info: */ -#ifndef __INI_H__ -#define __INI_H__ - /* Make this header file easier to include in C++ code */ #ifdef __cplusplus extern "C" { @@ -125,7 +190,7 @@ inline static char* rstrip(char* s) { char* p = s + strlen(s); while (p > s && isspace((unsigned char)(*--p))) - *p = '\0'; + * p = '\0'; return s; } @@ -216,7 +281,7 @@ inline int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler #if INI_ALLOW_INLINE_COMMENTS end = find_chars_or_comment(start, NULL); if (*end) - *end = '\0'; + * end = '\0'; rstrip(start); #endif @@ -249,7 +314,7 @@ inline int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler #if INI_ALLOW_INLINE_COMMENTS end = find_chars_or_comment(value, NULL); if (*end) - *end = '\0'; + * end = '\0'; #endif rstrip(value); @@ -278,7 +343,7 @@ inline int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler } /* See documentation in header file. */ -inline int ini_parse_file(FILE* file, ini_handler handler, void* user) +inline int ini_parse_file(FILE * file, ini_handler handler, void* user) { return ini_parse_stream((ini_reader)fgets, file, handler, user); } @@ -297,9 +362,6 @@ inline int ini_parse(const char* filename, ini_handler handler, void* user) return error; } -#endif /* __INI_H__ */ - - #ifndef __INIREADER_H__ #define __INIREADER_H__ @@ -363,7 +425,7 @@ class INIReader #include #include -inline INIReader::INIReader(const std::string& filename) +inline INIReader::INIReader(const std::string & filename) { _error = ini_parse(filename.c_str(), ValueHandler, this); } @@ -378,13 +440,13 @@ inline const std::set& INIReader::Sections() const return _sections; } -inline std::string INIReader::Get(const std::string& section, const std::string& name, const std::string& default_value) const +inline std::string INIReader::Get(const std::string & section, const std::string & name, const std::string & default_value) const { std::string key = MakeKey(section, name); return _values.count(key) ? _values.at(key) : default_value; } -inline long INIReader::GetInteger(const std::string& section, const std::string& name, long default_value) const +inline long INIReader::GetInteger(const std::string & section, const std::string & name, long default_value) const { std::string valstr = Get(section, name, ""); const char* value = valstr.c_str(); @@ -394,7 +456,7 @@ inline long INIReader::GetInteger(const std::string& section, const std::string& return end > value ? n : default_value; } -inline double INIReader::GetReal(const std::string& section, const std::string& name, double default_value) const +inline double INIReader::GetReal(const std::string & section, const std::string & name, double default_value) const { std::string valstr = Get(section, name, ""); const char* value = valstr.c_str(); @@ -403,7 +465,7 @@ inline double INIReader::GetReal(const std::string& section, const std::string& return end > value ? n : default_value; } -inline bool INIReader::GetBoolean(const std::string& section, const std::string& name, bool default_value) const +inline bool INIReader::GetBoolean(const std::string & section, const std::string & name, bool default_value) const { std::string valstr = Get(section, name, ""); // Convert to lower case to make string comparisons case-insensitive @@ -416,7 +478,7 @@ inline bool INIReader::GetBoolean(const std::string& section, const std::string& return default_value; } -inline std::string INIReader::MakeKey(const std::string& section, const std::string& name) +inline std::string INIReader::MakeKey(const std::string & section, const std::string & name) { std::string key = section + "=" + name; // Convert to lower case to make section/name lookups case-insensitive @@ -436,4 +498,5 @@ inline int INIReader::ValueHandler(void* user, const char* section, const char* return 1; } -#endif // __INIREADER__ \ No newline at end of file +#endif // __INIREADER__ +#endif // FALLOUT4_MINI_PROJECT diff --git a/[Common]/IProcessMessage.cpp b/[Common]/IProcessMessage.cpp new file mode 100644 index 00000000..7713fe81 --- /dev/null +++ b/[Common]/IProcessMessage.cpp @@ -0,0 +1,96 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2022 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "IProcessMessage.h" + +BOOL FIXAPI IProcessMessage::CloseHandlerDefault(VOID) { + return TRUE; +} + +VOID FIXAPI IProcessMessage::ProcessMessage(HWND hWindow, DWORD dwMsgFilterMin, DWORD dwMsgFilterMax, DWORD flag, + CloseHandlerT CloseHandler) { + MSG msg; + + auto loop = (flag & Loop) == Loop; + + DWORD msg_flag = ((flag & RemoveMessage) == RemoveMessage) ? PM_REMOVE : PM_NOREMOVE; + if ((flag & NoYield) == NoYield) + msg_flag |= PM_NOYIELD; + + if ((flag & ProcessingInput) == ProcessingInput) + msg_flag |= PM_QS_INPUT; + + if ((flag & ProcessingPaint) == ProcessingPaint) + msg_flag |= PM_QS_PAINT; + + if ((flag & ProcessingSends) == ProcessingSends) + msg_flag |= PM_QS_SENDMESSAGE; + + if ((flag & ProcessingPosts) == ProcessingPosts) + msg_flag |= PM_QS_POSTMESSAGE; + + if (loop) { + if (IsWindow(hWindow)) { + while (CloseHandler()) { + if (PeekMessageA(&msg, hWindow, dwMsgFilterMin, dwMsgFilterMax, msg_flag)) { + TranslateMessage(&msg); + DispatchMessageA(&msg); + + if (msg.message == WM_CLOSE) + break; + } + + Sleep(1); + } + } + else { + while (CloseHandler()) { + if (PeekMessageA(&msg, hWindow, dwMsgFilterMin, dwMsgFilterMax, msg_flag)) { + TranslateMessage(&msg); + DispatchMessageA(&msg); + + if (msg.message == WM_QUIT) + break; + } + + Sleep(1); + } + } + } + else { + while (PeekMessageA(&msg, hWindow, dwMsgFilterMin, dwMsgFilterMax, msg_flag)) { + TranslateMessage(&msg); + DispatchMessageA(&msg); + + Sleep(1); + } + } +} + +VOID FIXAPI IProcessMessage::ProcessMessageAsync(HWND hWindow, DWORD dwMsgFilterMin, DWORD dwMsgFilterMax, DWORD flag, + CloseHandlerT CloseHandler) { + std::thread processing_th([](HWND _hWindow, DWORD _dwMsgFilterMin, DWORD _dwMsgFilterMax, DWORD _flag, + CloseHandlerT _CloseHandler) { + ProcessMessage(_hWindow, _dwMsgFilterMin, _dwMsgFilterMax, _flag, _CloseHandler); + }, hWindow, dwMsgFilterMin, dwMsgFilterMax, flag, CloseHandler); + processing_th.detach(); +} \ No newline at end of file diff --git a/[Common]/IProcessMessage.h b/[Common]/IProcessMessage.h new file mode 100644 index 00000000..e74b9b21 --- /dev/null +++ b/[Common]/IProcessMessage.h @@ -0,0 +1,47 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2022 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include "CommInc.h" + +class IProcessMessage { +public: + enum EFlag : DWORD { + ProcessingAll = 0, + RemoveMessage = 1, + NoYield = 2, + Loop = 4, + ProcessingInput = 8, + ProcessingPaint = 16, + ProcessingSends = 32, + ProcessingPosts = 64, + }; + typedef BOOL(FIXAPI* CloseHandlerT)(VOID); +public: + static BOOL FIXAPI CloseHandlerDefault(VOID); +public: + static VOID FIXAPI ProcessMessage(HWND hWindow, DWORD dwMsgFilterMin, DWORD dwMsgFilterMax, DWORD flag, + CloseHandlerT CloseHandler = CloseHandlerDefault); + static VOID FIXAPI ProcessMessageAsync(HWND hWindow, DWORD dwMsgFilterMin, DWORD dwMsgFilterMax, DWORD flag, + CloseHandlerT CloseHandler = CloseHandlerDefault); +}; \ No newline at end of file diff --git a/[Common]/IProgressTaskBar.cpp b/[Common]/IProgressTaskBar.cpp new file mode 100644 index 00000000..8d6d153e --- /dev/null +++ b/[Common]/IProgressTaskBar.cpp @@ -0,0 +1,136 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2022 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +// Let's make the program a little more modern, transfer the progress and TaskBar... +// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-itaskbarlist3 + +#include "StdAfx.h" + +// +// ONLY CK +// +#include "..\[Patches]\CKF4\MainWindow.h" + +IProgressTaskBar* g_IProgressTaskBar = NULL; +IProgressTaskBarContext* g_IProgressTaskBarContext = NULL; + +IProgressTaskBarContext::IProgressTaskBarContext(VOID) : m_ptbl(NULL) { + ITaskbarList3* ptbl = NULL; + if (SUCCEEDED(CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&ptbl)))) { + if (SUCCEEDED(ptbl->HrInit())) + m_ptbl = ptbl; + else { + ptbl->Release(); + _MESSAGE("ITaskbarList::HrInit() has failed."); + } + } + else + _MESSAGE("ITaskbarList could not be created."); +} + +IProgressTaskBarContext::~IProgressTaskBarContext(VOID) { + if (m_ptbl) { + m_ptbl->Release(); + m_ptbl = NULL; + } +} + +BOOL IProgressTaskBarContext::SetProgressState(HWND _linkWnd, DWORD _state) { + return SUCCEEDED(m_ptbl->SetProgressState(_linkWnd, (TBPFLAG)_state)); +} + +IProgressTaskBarContext* IProgressTaskBarContext::GetInstance(VOID) { + return g_IProgressTaskBarContext; +} + +IProgressTaskBarContext* IProgressTaskBarContext::CreateInstance(VOID) { + if (g_IProgressTaskBarContext) + return g_IProgressTaskBarContext; + + g_IProgressTaskBarContext = new IProgressTaskBarContext(); + return g_IProgressTaskBarContext; +} + +VOID IProgressTaskBarContext::DeleteInstance(VOID) { + if (g_IProgressTaskBarContext) { + delete g_IProgressTaskBarContext; + g_IProgressTaskBarContext = NULL; + } +} + +IProgressTaskBar::IProgressTaskBar(HWND _LinkWnd, ULONGLONG _total) : + m_LinkWnd(NULL), m_Marquee(FALSE), m_ullCompleted(0), m_ullTotal(std::max(1, _total)) { + + if (!g_IProgressTaskBarContext) + _MESSAGE("IProgressTaskBarContext not be created."); + else if (!IsWindow(_LinkWnd)) + _MESSAGE("IProgressTaskBar could not be created, because _LinkWnd isn't window."); + else { + if (g_IProgressTaskBarContext->SetProgressState(_LinkWnd, TBPF_NOPROGRESS)) + m_LinkWnd = _LinkWnd; + else + _MESSAGE("ITaskbarList::SetProgressState() has failed."); + } +} + +IProgressTaskBar::~IProgressTaskBar(VOID) { + if (g_IProgressTaskBarContext && m_LinkWnd) + g_IProgressTaskBarContext->SetProgressState(m_LinkWnd, TBPF_NOPROGRESS); +} + + +VOID IProgressTaskBar::SetMarquee(BOOL _value) { + if (g_IProgressTaskBarContext && m_LinkWnd && (_value != m_Marquee)) { + if (_value) + m_Marquee = g_IProgressTaskBarContext->SetProgressState(m_LinkWnd, TBPF_INDETERMINATE); + else { + if (m_Marquee = !g_IProgressTaskBarContext->SetProgressState(m_LinkWnd, TBPF_NORMAL); !m_Marquee) + (*g_IProgressTaskBarContext)->SetProgressValue(m_LinkWnd, m_ullCompleted, m_ullTotal); + } + } +} + +VOID IProgressTaskBar::SetPosition(ULONGLONG _complete) { + if (!m_Marquee) { + m_ullCompleted = std::max(0, std::min(_complete, m_ullTotal)); + (*g_IProgressTaskBarContext)->SetProgressValue(m_LinkWnd, m_ullCompleted, m_ullTotal); + } +} + +IProgressTaskBar* IProgressTaskBar::GetInstance(VOID) { + return g_IProgressTaskBar; +} + +IProgressTaskBar* IProgressTaskBar::CreateInstance(VOID) { + if (g_IProgressTaskBar) + return g_IProgressTaskBar; + + g_IProgressTaskBar = new IProgressTaskBar(MainWindow::GetWindow(), 95); + return g_IProgressTaskBar; +} + +VOID IProgressTaskBar::DeleteInstance(VOID) { + if (g_IProgressTaskBar) { + delete g_IProgressTaskBar; + g_IProgressTaskBar = NULL; + } +} \ No newline at end of file diff --git a/[Common]/IProgressTaskBar.h b/[Common]/IProgressTaskBar.h new file mode 100644 index 00000000..31c9b933 --- /dev/null +++ b/[Common]/IProgressTaskBar.h @@ -0,0 +1,64 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2022 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include "CommInc.h" + +class IProgressTaskBarContext { +private: + ITaskbarList3* m_ptbl; +public: + IProgressTaskBarContext(VOID); + virtual ~IProgressTaskBarContext(VOID); +public: + __forceinline ITaskbarList3* operator->(VOID) { return m_ptbl; } + __forceinline const ITaskbarList3* operator->(VOID) const { return m_ptbl; } +public: + BOOL SetProgressState(HWND _linkWnd, DWORD _state); +public: + static IProgressTaskBarContext* GetInstance(VOID); + static IProgressTaskBarContext* CreateInstance(VOID); + static VOID DeleteInstance(VOID); +}; + + +class IProgressTaskBar { +private: + HWND m_LinkWnd; + BOOL m_Marquee; + ULONGLONG m_ullCompleted; + ULONGLONG m_ullTotal; +public: + IProgressTaskBar(HWND _LinkWnd, ULONGLONG _total); + virtual ~IProgressTaskBar(VOID); +public: + __forceinline BOOL IsMarquee(VOID) const { return m_Marquee; } +public: + VOID SetMarquee(BOOL _value); + VOID SetPosition(ULONGLONG _complete); +public: + static IProgressTaskBar* GetInstance(VOID); + static IProgressTaskBar* CreateInstance(VOID); + static VOID DeleteInstance(VOID); +}; + diff --git a/fallout4_test/src/typeinfo/ms_rtti.cpp b/[Common]/MSRTTI.cpp similarity index 50% rename from fallout4_test/src/typeinfo/ms_rtti.cpp rename to [Common]/MSRTTI.cpp index 8fda028c..79eac0a4 100644 --- a/fallout4_test/src/typeinfo/ms_rtti.cpp +++ b/[Common]/MSRTTI.cpp @@ -1,23 +1,27 @@ -#include "../common.h" -#include "ms_rtti.h" - -extern "C" -{ - typedef void* (*malloc_func_t)(size_t); - typedef void(*free_func_t)(void*); - char *__unDNameEx(char *outputString, const char *name, int maxStringLength, malloc_func_t pAlloc, free_func_t pFree, char *(__fastcall *pGetParameter)(int), unsigned int disableFlags); +#include "MSRTTI.h" +#include "StdAfx.h" + +LPVOID FIXAPI __rtti_MemAlloc(UINT64 Size) { + return QMemAlloc(Size, 8); +} + +VOID FIXAPI __rtti_MemFree(LPVOID Memory) { + QMemFree(Memory); } -namespace MSRTTI -{ +extern "C" { + typedef LPVOID (*malloc_func_t)(size_t); + typedef VOID (*free_func_t)(LPVOID); + LPSTR __unDNameEx(LPSTR outputString, LPCSTR name, INT maxStringLength, malloc_func_t pAlloc, free_func_t pFree, LPSTR (__fastcall *pGetParameter)(INT), UINT disableFlags); +} + +namespace MSRTTI { using namespace detail; std::vector Tables; - void Initialize() - { - for (uintptr_t i = g_RdataBase; i < (g_RdataEnd - sizeof(uintptr_t) - sizeof(uintptr_t)); i++) - { + VOID FIXAPI Initialize(VOID) { + for (UINT_PTR i = g_RdataBase; i < (g_RdataEnd - sizeof(UINT_PTR) - sizeof(UINT_PTR)); i++) { // Skip all non-2-aligned addresses. Not sure if this is OK or it skips tables. if (i % 2 != 0) continue; @@ -28,31 +32,30 @@ namespace MSRTTI // - The COL has a valid signature // - The first virtual function points to .text // - uintptr_t addr = *(uintptr_t *)i; - uintptr_t vfuncAddr = *(uintptr_t *)(i + sizeof(uintptr_t)); + UINT_PTR addr = *(UINT_PTR*)i; + UINT_PTR vfuncAddr = *(UINT_PTR*)(i + sizeof(UINT_PTR)); if (!IsWithinRDATA(addr) || !IsWithinCODE(vfuncAddr)) continue; - auto locator = reinterpret_cast(addr); + auto locator = reinterpret_cast(addr); if (!IsValidCOL(locator)) continue; Info info; - info.VTableAddress = i + sizeof(uintptr_t); - info.VTableOffset = locator->Offset; - info.VFunctionCount = 0; - info.RawName = locator->TypeDescriptor.Get()->name; - info.Locator = locator; + info.VTableAddress = i + sizeof(UINT_PTR); + info.VTableOffset = locator->Offset; + info.VFunctionCount = 0; + info.RawName = locator->TypeDescriptor.Get()->name; + info.Locator = locator; // Demangle - info.Name = __unDNameEx(nullptr, info.RawName + 1, 0, malloc, free, nullptr, 0x2800); + info.Name = __unDNameEx(NULL, info.RawName + 1, 0, __rtti_MemAlloc, __rtti_MemFree, NULL, 0x2800); // Determine number of virtual functions - for (uintptr_t j = info.VTableAddress; j < (g_RdataEnd - sizeof(uintptr_t)); j += sizeof(uintptr_t)) - { - if (!IsWithinCODE(*(uintptr_t *)j)) + for (UINT_PTR j = info.VTableAddress; j < (g_RdataEnd - sizeof(UINT_PTR)); j += sizeof(UINT_PTR)) { + if (!IsWithinCODE(*(UINT_PTR*)j)) break; info.VFunctionCount++; @@ -63,35 +66,29 @@ namespace MSRTTI } } - void Dump(FILE *File) - { + VOID FIXAPI Dump(FILE* File) { for (const Info& info : Tables) fprintf(File, "`%s`: VTable [0x%p, 0x%p offset, %lld functions] `%s`\n", info.Name, info.VTableAddress - g_ModuleBase, info.VTableOffset, info.VFunctionCount, info.RawName); } - const Info *Find(const char *Name, bool Exact) - { + const Info* FIXAPI Find(LPCSTR Name, BOOL Exact) { auto results = FindAll(Name, Exact); AssertMsgDebug(results.size() == 1, "Had no results or had more than 1 result"); return results.at(0); } - std::vector FindAll(const char *Name, bool Exact) - { + std::vector FIXAPI FindAll(LPCSTR Name, BOOL Exact) { // Multiple classes can have identical names but different vtable displacements, // so return all that match - std::vector results; + std::vector results; - for (const Info& info : Tables) - { - if (Exact) - { + for (const Info& info : Tables) { + if (Exact) { if (!strcmp(info.Name, Name)) results.push_back(&info); } - else - { + else { if (strcasestr(info.Name, Name)) results.push_back(&info); } @@ -100,30 +97,24 @@ namespace MSRTTI return results; } - namespace detail - { - bool IsWithinRDATA(uintptr_t Address) - { + namespace detail { + BOOL FIXAPI IsWithinRDATA(UINT_PTR Address) { return (Address >= g_RdataBase && Address <= g_RdataEnd) || (Address >= g_DataBase && Address <= g_DataEnd); } - bool IsWithinCODE(uintptr_t Address) - { + BOOL FIXAPI IsWithinCODE(UINT_PTR Address) { return Address >= g_CodeBase && Address <= g_CodeEnd; } - bool IsValidCOL(CompleteObjectLocator *Locator) - { + BOOL FIXAPI IsValidCOL(CompleteObjectLocator* Locator) { return Locator->Signature == CompleteObjectLocator::COL_Signature64 && IsWithinRDATA(Locator->TypeDescriptor.Address()); } - const char *strcasestr(const char *String, const char *Substring) - { - const char *a, *b; + LPCSTR FIXAPI strcasestr(LPCSTR String, LPCSTR Substring) { + LPCSTR a, b; - for (; *String; *String++) - { + for (; *String; *String++) { a = String; b = Substring; @@ -132,7 +123,7 @@ namespace MSRTTI return String; } - return nullptr; + return NULL; } } } \ No newline at end of file diff --git a/[Common]/MSRTTI.h b/[Common]/MSRTTI.h new file mode 100644 index 00000000..224da390 --- /dev/null +++ b/[Common]/MSRTTI.h @@ -0,0 +1,106 @@ +#pragma once + +#include "[Common]\CommInc.h" + +namespace MSRTTI { + namespace detail { struct CompleteObjectLocator; } + + struct Info { + UINT_PTR VTableAddress; // Address in .rdata section + UINT_PTR VTableOffset; // Offset of this vtable in complete class (from top) + UINT64 VFunctionCount; // Number of contiguous functions + LPCSTR Name; // Demangled + LPCSTR RawName; // Mangled + detail::CompleteObjectLocator* Locator; // + }; + + VOID FIXAPI Initialize(VOID); + VOID FIXAPI Dump(FILE* File); + const Info* FIXAPI Find(LPCSTR Name, BOOL Exact = TRUE); + std::vector FIXAPI FindAll(LPCSTR Name, BOOL Exact = TRUE); + + namespace detail { + struct TypeDescriptor; + struct PMD; + struct CompleteObjectLocator; + struct ClassHierarchyDescriptor; + struct BaseClassArray; + struct BaseClassDescriptor; + + template + struct RVA { + UINT32 Offset; + UINT_PTR Address() { return (UINT_PTR)GetModuleHandleA(NULL) + Offset; } + T Get() { return (T)Address(); } + }; + + // Also known as `class type_info` + struct TypeDescriptor { + LPVOID vftable; // const type_info::`vftable' + UINT64 unknown; // CRT internal + CHAR name[1]; + }; + + struct PMD { + INT Mdisp; // Member displacement (vftable offset in the class itself) + INT Pdisp; // Vbtable displacement (vbtable offset, -1: vftable is at displacement PMD.mdisp inside the class) + INT Vdisp; // Displacement inside vbtable + }; + + struct CompleteObjectLocator { + enum { + COL_Signature32 = 0, + COL_Signature64 = 1, + }; + + UINT32 Signature; // 32-bit zero, 64-bit one + UINT32 Offset; // Offset of this vtable in the complete class + UINT32 CDOffset; // Constructor displacement offset + RVA TypeDescriptor; // TypeDescriptor of the complete class + RVA ClassDescriptor; // Describes inheritance hierarchy + }; + + struct ClassHierarchyDescriptor { + enum { + HCD_NoInheritance = 0, + HCD_MultipleInheritance = 1, + HCD_VirtualInheritance = 2, + HCD_AmbiguousInheritance = 4, + }; + + UINT32 Signature; // Always zero or one + UINT32 Attributes; // Flags + UINT32 NumBaseClasses; // Number of classes in BaseClassArray + RVA BaseClassArray; // BaseClassArray + }; + +#pragma warning(push) +#pragma warning(disable: 4200) // nonstandard extension used: zero-sized array in struct/union + struct BaseClassArray { + UINT32 ArrayOfBaseClassDescriptors[]; // BaseClassDescriptor* + }; +#pragma warning(pop) + + struct BaseClassDescriptor { + enum { + BCD_NotVisible = 1, + BCD_Ambiguous = 2, + BCD_Private = 4, + BCD_PrivOrProtBase = 8, + BCD_Virtual = 16, + BCD_Nonpolymorphic = 32, + BCD_HasHierarchyDescriptor = 64, + }; + + RVA TypeDescriptor; // Type descriptor of the class + UINT32 NumContainedBases; // Number of nested classes following in the Base Class Array + PMD Disp; // Pointer-to-member displacement info + UINT32 Attributes; // Flags (BaseClassDescriptorFlags) + }; + + BOOL FIXAPI IsWithinRDATA(UINT_PTR Address); + BOOL FIXAPI IsWithinCODE(UINT_PTR Address); + BOOL FIXAPI IsValidCOL(CompleteObjectLocator* Locator); + LPCSTR FIXAPI strcasestr(LPCSTR String, LPCSTR Substring); + } +} \ No newline at end of file diff --git a/fallout4_test/src/patches/offsets.cpp b/[Common]/Offsets.cpp similarity index 68% rename from fallout4_test/src/patches/offsets.cpp rename to [Common]/Offsets.cpp index e646a2cc..3a08552c 100644 --- a/fallout4_test/src/patches/offsets.cpp +++ b/[Common]/Offsets.cpp @@ -1,4 +1,26 @@ -#include "../common.h" +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" std::unordered_map AddressMap; @@ -19,10 +41,6 @@ namespace Offsets Assert(false); } - void BuildTableForCKSSEVersion(uint32_t Version) - { - } - void BuildTableForGameVersion(uint32_t Version) { Assert(false); diff --git a/[Common]/Offsets.h b/[Common]/Offsets.h new file mode 100644 index 00000000..b0afac77 --- /dev/null +++ b/[Common]/Offsets.h @@ -0,0 +1,123 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include + +#define OFFSET(RelOffset, Version) (g_ModuleBase + RelOffset) +#define OFFSET_ENTRY_KEY(RelOffset, Version) (((uint64_t)(Version) << 32) | (RelOffset)) +#define OFFSET_ENTRY(RelOffset, Version, Signature, SigAdjustment, TranslatedOffset) { RelOffset, Version, Signature, SigAdjustment, (uint32_t)(TranslatedOffset) }, + +namespace Offsets { + struct OffsetEntry { + uint32_t RelOffset; + uint32_t Version; + const char *Signature; + int SigAdjustment; + uint32_t TranslatedOffset; + }; + + uintptr_t Resolve(uint32_t RelOffset, uint32_t Version); + bool CanResolve(uint32_t RelOffset, uint32_t Version); + + void BuildTableForCKF4Version(uint32_t Version); + void BuildTableForGameVersion(uint32_t Version); + void BuildTable(const OffsetEntry *Table, size_t Count, bool CurrentVersion); + void ValidateTable(const OffsetEntry *Table, size_t Count); + void DumpLoadedTable(const char *FilePath); +} + +// thread-safe template versions of fastCall() + +template +__forceinline TR fastCall(size_t reloff) { + return ((TR(__fastcall*)())OFFSET(reloff, 0))(); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1) { + return ((TR(__fastcall*)(T1))OFFSET(reloff, 0))(a1); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2) { + return ((TR(__fastcall*)(T1, T2))OFFSET(reloff, 0))(a1, a2); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2, T3 a3) { + return ((TR(__fastcall*)(T1, T2, T3))OFFSET(reloff, 0))(a1, a2, a3); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2, T3 a3, T4 a4) { + return ((TR(__fastcall*)(T1, T2, T3, T4))OFFSET(reloff, 0))(a1, a2, a3, a4); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) { + return ((TR(__fastcall*)(T1, T2, T3, T4, T5))OFFSET(reloff, 0))(a1, a2, a3, a4, a5); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) { + return ((TR(__fastcall*)(T1, T2, T3, T4, T5, T6))OFFSET(reloff, 0))(a1, a2, a3, a4, a5, a6); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7) { + return ((TR(__fastcall*)(T1, T2, T3, T4, T5, T6, T7))OFFSET(reloff, 0))(a1, a2, a3, a4, a5, a6, a7); +} + +template +__forceinline TR fastCall(size_t reloff, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8) { + return ((TR(__fastcall*)(T1, T2, T3, T4, T5, T6, T7, T8))OFFSET(reloff, 0))(a1, a2, a3, a4, a5, a6, a7, a8); +} + +// thread-safe template versions of thisCall() + +template +__forceinline TR thisCall(size_t reloff, const void* ths) { + return ((TR(__fastcall*)(const void*))OFFSET(reloff, 0))(ths); +} + +template +__forceinline TR thisCall(size_t reloff, const void* ths, T1 a1) { + return ((TR(__fastcall*)(const void*, T1))OFFSET(reloff, 0))(ths, a1); +} + +template +__forceinline TR thisCall(size_t reloff, const void* ths, T1 a1, T2 a2) { + return ((TR(__fastcall*)(const void*, T1, T2))OFFSET(reloff, 0))(ths, a1, a2); +} + +template +__forceinline TR thisCall(size_t reloff, const void* ths, T1 a1, T2 a2, T3 a3) { + return ((TR(__fastcall*)(const void*, T1, T2, T3))OFFSET(reloff, 0))(ths, a1, a2, a3); +} + +template +__forceinline TR thisCall(size_t reloff, const void* ths, T1 a1, T2 a2, T3 a3, T4 a4) { + return ((TR(__fastcall*)(const void*, T1, T2, T3, T4))OFFSET(reloff, 0))(ths, a1, a2, a3, a4); +} \ No newline at end of file diff --git a/fallout4_test/src/profiler_internal.h b/[Common]/ProfilerInternal.h similarity index 68% rename from fallout4_test/src/profiler_internal.h rename to [Common]/ProfilerInternal.h index c938bec6..a1ada076 100644 --- a/fallout4_test/src/profiler_internal.h +++ b/[Common]/ProfilerInternal.h @@ -1,5 +1,31 @@ -static constexpr uint32_t crc_table[256] = -{ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include +#include +#include + +static constexpr uint32_t crc_table[256] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, @@ -46,25 +72,20 @@ static constexpr uint32_t crc_table[256] = }; template -struct XCRCCalculate -{ - static constexpr unsigned int crc32(const char *str, unsigned int prev_crc = 0xFFFFFFFF) - { +struct XCRCCalculate { + static constexpr unsigned int crc32(const char *str, unsigned int prev_crc = 0xFFFFFFFF) { return XCRCCalculate::crc32(str, (prev_crc >> 8) ^ crc_table[(prev_crc ^ str[idx]) & 0xFF]); } }; template -struct XCRCCalculate -{ - static constexpr unsigned int crc32(const char *str, unsigned int prev_crc = 0xFFFFFFFF) - { +struct XCRCCalculate { + static constexpr unsigned int crc32(const char *str, unsigned int prev_crc = 0xFFFFFFFF) { return prev_crc ^ 0xFFFFFFFF; } }; -constexpr uint32_t CRC32(const char *in) -{ +constexpr uint32_t CRC32(const char *in) { uint32_t crc = 0xFFFFFFFF; for (uint32_t i = 0; char c = in[i]; ++i) @@ -73,8 +94,17 @@ constexpr uint32_t CRC32(const char *in) return ~crc; } -struct Entry -{ +constexpr uint32_t CRC32Buffer(const void* in, const uint32_t size) { + uint32_t crc = 0xFFFFFFFF; + const uint8_t* buf = (const uint8_t*)in; + + for (uint32_t i = 0; i < size; ++i) + crc = crc_table[(crc ^ buf[i]) & 0xFF] ^ (crc >> 8); + + return ~crc; +} + +struct Entry { int64_t Value; int64_t OldValue; // Only updated after a request to get 'Value' const char *File; @@ -85,7 +115,7 @@ struct Entry constexpr int MaxEntries = 16384; extern std::array GlobalCounters; -extern std::unordered_map LookupMap; +extern std::unordered_map LookupMap; extern int64_t CpuFrequency; #define COMPILE_TIME_CRC32_STR(x) (Profiler::Internal::XCRCCalculate::crc32(x)) diff --git a/[Common]/StdAfx.cpp b/[Common]/StdAfx.cpp new file mode 100644 index 00000000..2124e2eb --- /dev/null +++ b/[Common]/StdAfx.cpp @@ -0,0 +1,79 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" + +#pragma comment(lib, "delayimp.lib") +#pragma comment(lib, "msimg32.lib") +#pragma comment(lib, "winmm.lib") +#pragma comment(lib, "d3d11.lib") +#pragma comment(lib, "dxgi.lib") +#pragma comment(lib, "D3DCompiler.lib") +#pragma comment(lib, "dxguid.lib") +#pragma comment(lib, "ws2_32.lib") +#pragma comment(lib, "uxtheme.lib") +#pragma comment(lib, "Version.lib") +#pragma comment(lib, "Dwmapi.lib") +#pragma comment(lib, "libdeflate.lib") // Boost deflate +#pragma comment(lib, "tbb.lib") // Thread Building Blocks +#pragma comment(lib, "libzydis.lib") // Zydis +#pragma comment(lib, "libmeshoptimizer.lib") // Meshoptimizer +#pragma comment(lib, "detours.lib") // Detours +#pragma comment(lib, "tbbmalloc.lib") // TBB Allocator + +HINSTANCE g_hModule; + +#if FALLOUT4_MINI_PROJECT +mINIReader* g_INI; +mINIReader* g_INI_CK; +mINIReader* g_INI_CK_Cfg; +mINIReader* g_INI_CK_CfgCustom; +#else +INIReader* g_INI; +INIReader* g_INI_CK_Cfg; +INIReader* g_INI_CK_CfgCustom; +#endif // FALLOUT4_MINI_PROJECT + +uintptr_t g_ModuleBase; +uintptr_t g_ModuleSize; + +uintptr_t g_ScrapSize = 0x2000000; +uintptr_t g_bhkMemSize = 0x2000000; + +uintptr_t g_CodeBase; // .text or .textbss +uintptr_t g_CodeEnd; +uintptr_t g_RdataBase; // .rdata +uintptr_t g_RdataEnd; +uintptr_t g_DataBase; // .data +uintptr_t g_DataEnd; + +HMODULE g_DllDXGI; +HMODULE g_DllD3D11; + +int8_t g_i8DialogMode = 0; +int8_t g_i8NeedLoadBA2 = 0; +BOOL g_AttachRenderWnd = 0; +BOOL g_HotkeyReplace = 0; + +GAME_EXECUTABLE_TYPE g_LoadType; +char g_GitVersion[64] = VER_CURRENT_COMMIT_ID; +char g_GitDataVersion[64] = VER_CURRENT_DATE; \ No newline at end of file diff --git a/[Common]/StdAfx.h b/[Common]/StdAfx.h new file mode 100644 index 00000000..db661d24 --- /dev/null +++ b/[Common]/StdAfx.h @@ -0,0 +1,139 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include "..\[Common]\CommInc.h" + +#define SETTING_CREATIONKIT "CreationKit.ini" +#define SETTING_CREATIONKIT_CUSTOM "CreationKitCustom.ini" +#define SETTING_CREATIONKIT_PREFS "CreationKitPrefs.ini" +#define SETTING_CREATIONKIT_FIXES "fallout4_test.ini" + +// jDialogs +#define JDIALOG_NO_FUNCTIONS_CREATE_CONTROLS +#define JDIALOG_NO_MANIFEST_LINKER_COMMCTRL +#include "..\[Depends]\jDialogs\include\jdialogs.h" + +// Zipper +#include "..\[Depends]\zipper\src\zip.h" + +// Memory +#include "IMemory.h" +#include "IMemoryManager.h" + +// String +#include "..\[EditorAPI]\BSString.h" + +// INIReader +#if FALLOUT4_MINI_PROJECT +#include "INIReader.h" + +extern mINIReader* g_INI; +extern mINIReader* g_INI_CK; +extern mINIReader* g_INI_CK_Cfg; +extern mINIReader* g_INI_CK_CfgCustom; +#else +#define INI_ALLOW_MULTILINE 0 +#define INI_USE_STACK 0 +#define INI_MAX_LINE 4096 +#include "INIReader.h" + +extern INIReader* g_INI; +extern INIReader* g_INI_CK_Cfg; +extern INIReader* g_INI_CK_CfgCustom; +#endif // FALLOUT4_MINI_PROJECT + +#define F4CK_PATH_BIN "bin\\" +#define F4CK_PATH_DIALOGS "dia\\" +#define F4CK_PATH_FONTS "fonts\\" + +// OTHER +#include "UtfStr.h" +#include "ProfilerInternal.h" +#include "Utilities.h" +#include "Offsets.h" +#include "IProcessMessage.h" +#include "IProgressTaskBar.h" + +// DirectX +#include "D3D11Proxy.h" + +// RTTI +#include "MSRTTI.h" + +// LogWindow (ONLY CK) +#include "..\[Patches]\CKF4\LogWindow.h" + +extern "C" IMAGE_DOS_HEADER __ImageBase; + +extern HINSTANCE g_hModule; + +extern uintptr_t g_ModuleBase; +extern uintptr_t g_ModuleSize; + +extern uintptr_t g_ScrapSize; +extern uintptr_t g_bhkMemSize; + +extern uintptr_t g_CodeBase; // .text or .textbss +extern uintptr_t g_CodeEnd; +extern uintptr_t g_RdataBase; // .rdata +extern uintptr_t g_RdataEnd; +extern uintptr_t g_DataBase; // .data +extern uintptr_t g_DataEnd; + +extern HMODULE g_DllDXGI; +extern HMODULE g_DllD3D11; + +extern int8_t g_i8DialogMode; +extern int8_t g_i8NeedLoadBA2; +extern BOOL g_AttachRenderWnd; +extern BOOL g_HotkeyReplace; + +enum class GAME_EXECUTABLE_TYPE { + UNKNOWN, + LAUNCHER_FALLOUT4, + GAME_FALLOUT4, + CREATIONKIT_FALLOUT4, + CREATIONKIT_FALLOUT4_PATCHED_PREVIS, +}; + +struct __addr_t +{ + uintptr_t Based; + uintptr_t End; +}; + +struct __hotkey_t { + CHAR VirtualKey; + BOOL Alt, Ctrl, Shift; +}; + +struct range_t +{ + __addr_t addr; + DWORD protection; +}; + +extern GAME_EXECUTABLE_TYPE g_LoadType; +extern char g_GitVersion[64]; +extern char g_GitDataVersion[64]; \ No newline at end of file diff --git a/[Common]/UtfStr.cpp b/[Common]/UtfStr.cpp new file mode 100644 index 00000000..db4ccdbd --- /dev/null +++ b/[Common]/UtfStr.cpp @@ -0,0 +1,541 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" + +#define __deprecated_utf8 + +#ifndef __deprecated_utf8 +#define UNICODE_INVALID 63 +#endif // __deprecated_utf8 + +namespace XUtil +{ + namespace Conversion + { +#if FALLOUT4_LAZ_UNICODE_PLUGIN + typedef bool(*laz_unicode_plugin_is_utf8_t)(const char* str); + typedef int(*laz_unicode_plugin_wincp_to_utf8_t)(const char* src, char* dst); + typedef int(*laz_unicode_plugin_utf8_to_wincp_t)(const char* src, char* dst, const bool test_invalid); + typedef int(*laz_unicode_plugin_utf16_to_utf8_t)(const wchar_t* src, char* dst); + typedef int(*laz_unicode_plugin_utf8_to_utf16_t)(const char* src, wchar_t* dst, const bool test_invalid); + + laz_unicode_plugin_is_utf8_t laz_unicode_plugin_is_utf8 = nullptr; + laz_unicode_plugin_wincp_to_utf8_t laz_unicode_plugin_wincp_to_utf8 = nullptr; + laz_unicode_plugin_utf8_to_wincp_t laz_unicode_plugin_utf8_to_wincp = nullptr; + laz_unicode_plugin_utf16_to_utf8_t laz_unicode_plugin_utf16_to_utf8 = nullptr; + laz_unicode_plugin_utf8_to_utf16_t laz_unicode_plugin_utf8_to_utf16 = nullptr; +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN + +#if FALLOUT4_LAZ_UNICODE_PLUGIN + bool UTILAPI LazUnicodePluginInit(void) + { + auto path = XUtil::GetDataPathUnicode() + L"F4CKFixes\\bin\\"; + HMODULE hModule = LoadLibraryExW((path + L"CreationKitUnicodePlugin.dll").c_str(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH); + if (hModule) + { + laz_unicode_plugin_is_utf8 = (laz_unicode_plugin_is_utf8_t)GetProcAddress(hModule, (LPCSTR)5); + laz_unicode_plugin_wincp_to_utf8 = (laz_unicode_plugin_wincp_to_utf8_t)GetProcAddress(hModule, (LPCSTR)2); + laz_unicode_plugin_utf8_to_wincp = (laz_unicode_plugin_utf8_to_wincp_t)GetProcAddress(hModule, (LPCSTR)1); + laz_unicode_plugin_utf16_to_utf8 = (laz_unicode_plugin_utf16_to_utf8_t)GetProcAddress(hModule, (LPCSTR)4); + laz_unicode_plugin_utf8_to_utf16 = (laz_unicode_plugin_utf8_to_utf16_t)GetProcAddress(hModule, (LPCSTR)3); + + return laz_unicode_plugin_is_utf8 && laz_unicode_plugin_wincp_to_utf8 && laz_unicode_plugin_utf8_to_wincp && + laz_unicode_plugin_utf16_to_utf8 && laz_unicode_plugin_utf8_to_utf16; + } + + return false; + } +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN + + bool UTILAPI IsUtf8Valid(const utf8string &str) + { +#if FALLOUT4_LAZ_UNICODE_PLUGIN + if (laz_unicode_plugin_is_utf8) + return laz_unicode_plugin_is_utf8(str.c_str()); + else + { + if (!MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0)) + return GetLastError() == ERROR_NO_UNICODE_TRANSLATION; + return true; + } +#else + if (!MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0)) + return GetLastError() == ERROR_NO_UNICODE_TRANSLATION; + return true; +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN + } + + utf8string UTILAPI Utf16ToUtf8(const utf16string &str) + { + utf8string utf8str; + + if (str.empty()) + return utf8str; + +#if FALLOUT4_LAZ_UNICODE_PLUGIN + if (laz_unicode_plugin_utf16_to_utf8) + { + int l = laz_unicode_plugin_utf16_to_utf8(str.c_str(), NULL); + AssertMsgVa(l > 0, "laz_unicode_plugin_utf16_to_utf8()"); + // this will null-terminate + utf8str.resize(l); + laz_unicode_plugin_utf16_to_utf8(str.c_str(), &utf8str[0]); + } + else + { + int utf8_cnt = WideCharToMultiByte(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, NULL, 0, NULL, NULL); + AssertMsgVa(utf8_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("WideCharToMultiByte()").c_str()); + // this will null-terminate + utf8str.resize(utf8_cnt); + WideCharToMultiByte(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, &utf8str[0], utf8_cnt, NULL, NULL); + } +#else + int utf8_cnt = WideCharToMultiByte(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, NULL, 0, NULL, NULL); + AssertMsgVa(utf8_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("WideCharToMultiByte()").c_str()); + // this will null-terminate + utf8str.resize(utf8_cnt); + WideCharToMultiByte(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, &utf8str[0], utf8_cnt, NULL, NULL); +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN + return utf8str; + } + +#ifndef __deprecated_utf8 + int sub_utf8_to_utf16(wchar_t* dest, size_t max_dest_chars, const char* source, size_t source_bytes) + { + if (source == nullptr) + return 0; + + int result = -1; + size_t input_utf8 = 0; + size_t output_utf16 = 0; + char cByte, cTemp; + size_t char_len = 0; + size_t uChar; + + if (source_bytes >= 3) + { + if (source[0] == 0xEF && source[0] == 0xBB && source[0] == 0xBF) + input_utf8 = 3; + } + + if (dest) + { + while ((output_utf16 < max_dest_chars) && (input_utf8 < source_bytes)) + { + cByte = source[input_utf8]; + if (!(cByte & 0x80)) + { + // One character US-ASCII, convert it to unicode + + dest[output_utf16] = (wchar_t)cByte; + output_utf16++; + input_utf8++; + } + else + { + cTemp = cByte; + char_len = 0; + + while (cTemp & 0x80) + { + cTemp = (cTemp << 1) & 0xFE; + char_len++; + } + + // Test for the "CharLen" conforms UTF-8 string + // This means the 10xxxxxx pattern. + + if ((input_utf8 + char_len - 1) > source_bytes) + // Insuficient chars in string to decode + // UTF-8 array. Fallback to single char. + char_len = 1; + + for (size_t look = 1; look < char_len; look++) + { + if ((((source[input_utf8 + look]) & 0x80) != 0x80) || ((source[input_utf8 + look]) & 0x40)) + { + // Invalid UTF-8 sequence, fallback. + char_len = look; + break; + } + } + + uChar = 0xFFFF; + switch (char_len) + { + case 1: + { + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID+1; + break; + } + case 2: + { + // Two bytes UTF, convert it + uChar = (source[input_utf8] & 0x1F) << 6; + uChar |= source[input_utf8 + 1] & 0x3F; + if (uChar < 0x80) + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID+2; + break; + } + case 3: + { + // Three bytes, convert it to unicode + uChar = (source[input_utf8] & 0x0F) << 12; + uChar |= (source[input_utf8 + 1] & 0x3F) << 6; + uChar |= source[input_utf8 + 2] & 0x3F; + if (uChar < 0x800 || uChar >= 0xFFFE || (uChar >= 0xD800 && (uChar <= 0xDFFF))) + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID+3; + break; + } + case 4: + { + // Four bytes, convert it to two unicode characters + uChar = (source[input_utf8] & 0x07) << 18; + uChar |= (source[input_utf8 + 1] & 0x3F) << 12; + uChar |= (source[input_utf8 + 2] & 0x3F) << 6; + uChar |= source[input_utf8 + 3] & 0x3F; + if (uChar < 0x10000 || uChar > 0x10FFFF) + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID+4; + else + { + // only store pair if room + uChar -= 0x10000; + if (output_utf16 < max_dest_chars - 1) + { + dest[output_utf16] = (wchar_t)((uChar >> 10) + 0xD800); + output_utf16++; + uChar = (uChar & 0x3FF) + 0xDC00; + } + else + { + input_utf8 = input_utf8 + char_len; + // don't store anything + char_len = 0; + } + } + + break; + } + default: + // Invalid UTF8 to unicode conversion, + // mask it as invalid UNICODE too. + uChar = UNICODE_INVALID+5; + break; + } + + if (char_len) + { + dest[output_utf16] = (wchar_t)uChar; + output_utf16++; + } + + input_utf8 += char_len; + } + } // while ((output_utf16 < max_dest_chars) && (input_utf8 < source_bytes)) + + result = (int)(output_utf16 + 1); + } + // calc length + else + { + while (input_utf8 < source_bytes) + { + cByte = source[input_utf8]; + if (!(cByte & 0x80)) + { + // One character US-ASCII, convert it to unicode + output_utf16++; + input_utf8++; + } + else + { + cTemp = cByte; + char_len = 0; + + while (cTemp & 0x80) + { + cTemp = (cTemp << 1) & 0xFE; + char_len++; + } + + // Test for the "CharLen" conforms UTF-8 string + // This means the 10xxxxxx pattern. + + if ((input_utf8 + char_len - 1) > source_bytes) + // Insuficient chars in string to decode + // UTF-8 array. Fallback to single char. + char_len = 1; + + for (size_t look = 1; look < char_len; look++) + { + if ((((source[input_utf8 + look]) & 0x80) != 0x80) || ((source[input_utf8 + look]) & 0x40)) + { + // Invalid UTF-8 sequence, fallback. + char_len = look; + break; + } + } + + uChar = 0xFFFF; + switch (char_len) + { + case 1: + { + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID; + break; + } + case 2: + { + // Two bytes UTF, convert it + uChar = (source[input_utf8] & 0x1F) << 6; + uChar |= source[input_utf8 + 1] & 0x3F; + if (uChar < 0x80) + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID; + break; + } + case 3: + { + // Three bytes, convert it to unicode + uChar = (source[input_utf8] & 0x0F) << 12; + uChar |= (source[input_utf8 + 1] & 0x3F) << 6; + uChar |= source[input_utf8 + 2] & 0x3F; + if (uChar < 0x800 || uChar >= 0xFFFE || (uChar >= 0xD800 && (uChar <= 0xDFFF))) + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID; + break; + } + case 4: + { + // Four bytes, convert it to two unicode characters + uChar = (source[input_utf8] & 0x07) << 18; + uChar |= (source[input_utf8 + 1] & 0x3F) << 12; + uChar |= (source[input_utf8 + 2] & 0x3F) << 6; + uChar |= source[input_utf8 + 3] & 0x3F; + if (uChar < 0x10000 || uChar > 0x10FFFF) + // Not valid UTF-8 sequence + uChar = UNICODE_INVALID; + else + // extra character character + output_utf16++; + break; + } + default: + // Invalid UTF8 to unicode conversion, + // mask it as invalid UNICODE too. + uChar = UNICODE_INVALID; + break; + } + + if (char_len) + { + dest[output_utf16] = (wchar_t)uChar; + output_utf16++; + } + + input_utf8 += char_len; + } + } // while (input_utf8 < source_bytes) + + result = (int)(output_utf16 + 1); + } + + return result; + } +#endif // __deprecated_utf8 + + utf16string UTILAPI Utf8ToUtf16(const utf8string &str) + { + utf16string utf16str; + + if (str.empty()) + return utf16str; + +#ifndef __deprecated_utf8 + utf16str.resize(str.length()); + int iRes = sub_utf8_to_utf16(&utf16str[0], utf16str.length(), &str[0], str.length()); + AssertMsgVa(iRes > 0, "%s", "sub_utf8_to_utf16()"); + // this will null-terminate + utf16str.resize(iRes); +#else +#if FALLOUT4_LAZ_UNICODE_PLUGIN + if (laz_unicode_plugin_utf8_to_utf16) + { + utf16str.resize(str.length()); + int l = laz_unicode_plugin_utf8_to_utf16(str.c_str(), &utf16str[0], false); + AssertMsgVa(l > 0, "laz_unicode_plugin_utf8_to_utf16()"); + // this will null-terminate + utf16str.resize(l); + } + else + { + int utf16_cnt = MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, NULL, 0); + AssertMsgVa(utf16_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("MultiByteToWideChar()").c_str()); + // this will null-terminate + utf16str.resize(utf16_cnt); + MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, &utf16str[0], utf16_cnt); + } +#else + int utf16_cnt = MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, NULL, 0); + AssertMsgVa(utf16_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("MultiByteToWideChar()").c_str()); + // this will null-terminate + utf16str.resize(utf16_cnt); + MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, str.c_str(), -1, &utf16str[0], utf16_cnt); +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN +#endif // !__deprecated_utf8 + + return utf16str; + } + + std::string UTILAPI Utf8ToAnsi(const utf8string &str) + { + std::string ansistr; + + if (str.empty()) + return ansistr; + +#if FALLOUT4_LAZ_UNICODE_PLUGIN + if (laz_unicode_plugin_utf8_to_wincp) + { + ansistr.resize(str.length()); + int l = laz_unicode_plugin_utf8_to_wincp(str.c_str(), &ansistr[0], false); + AssertMsgVa(l > 0, "laz_unicode_plugin_utf8_to_wincp()"); + // this will null-terminate + ansistr.resize(l); + } + else + { + utf16string utf16str = Utf8ToUtf16(str); + int ansi_cnt = WideCharToMultiByte(CP_ACP, 0, utf16str.c_str(), -1, NULL, 0, NULL, NULL); + + AssertMsgVa(ansi_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("WideCharToMultiByte()").c_str()); + // this will null-terminate + ansistr.resize(ansi_cnt); + WideCharToMultiByte(CP_ACP, 0, utf16str.c_str(), -1, &ansistr[0], ansi_cnt, NULL, NULL); + } +#else + utf16string utf16str = utf8_to_utf16(str); + int ansi_cnt = WideCharToMultiByte(CP_ACP, 0, utf16str.c_str(), -1, NULL, 0, NULL, NULL); + + AssertMsgVa(ansi_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("WideCharToMultiByte()").c_str()); + // this will null-terminate + ansistr.resize(ansi_cnt); + WideCharToMultiByte(CP_ACP, 0, utf16str.c_str(), -1, &ansistr[0], ansi_cnt, NULL, NULL); +#endif // __INC_LAZ_UNICODE_PLUGIN + return ansistr; + } + + utf8string UTILAPI AnsiToUtf8(const std::string &str) + { + if (str.empty()) + return utf8string(); + + +#if FALLOUT4_LAZ_UNICODE_PLUGIN + if (laz_unicode_plugin_wincp_to_utf8) + { + utf8string utf8str; + int l = laz_unicode_plugin_wincp_to_utf8(str.c_str(), NULL); + AssertMsgVa(l > 0, "laz_unicode_plugin_utf16_to_utf8()"); + // this will null-terminate + utf8str.resize(l); + laz_unicode_plugin_wincp_to_utf8(str.c_str(), &utf8str[0]); + return utf8str; + } + else + { + utf16string utf16str; + int utf16_cnt = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); + AssertMsgVa(utf16_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("MultiByteToWideChar()").c_str()); + // this will null-terminate + utf16str.resize(utf16_cnt); + MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, &utf16str[0], utf16_cnt); + + return Utf16ToUtf8(utf16str); + } +#else + utf16string utf16str; + int utf16_cnt = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); + AssertMsgVa(utf16_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("MultiByteToWideChar()").c_str()); + // this will null-terminate + utf16str.resize(utf16_cnt); + MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, &utf16str[0], utf16_cnt); + + return utf16_to_utf8(utf16str); +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN + } + + std::string UTILAPI Utf16ToAnsi(const utf16string &str) + { + if (str.empty()) + return std::string(); + + return Utf8ToAnsi(Utf16ToUtf8(str)); + } + + utf16string UTILAPI AnsiToUtf16(const std::string &str) + { + if (str.empty()) + return utf16string(); + + return Utf8ToUtf16(AnsiToUtf8(str)); + } + + std::string UTILAPI WideToAnsi(const std::wstring &str) + { + std::string ansistr; + + if (str.empty()) + return ansistr; + + int ansi_cnt = WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL); + AssertMsgVa(ansi_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("WideCharToMultiByte()").c_str()); + // this will null-terminate + ansistr.resize(ansi_cnt); + WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, &ansistr[0], ansi_cnt, NULL, NULL); + + return ansistr; + } + + std::wstring UTILAPI AnsiToWide(const std::string &str) + { + std::wstring widestr; + + if (str.empty()) + return widestr; + + int wide_cnt = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str.c_str(), (int)str.length(), NULL, 0); + AssertMsgVa(wide_cnt > 0, "%s", XUtil::Str::GetLastErrorToStr("MultiByteToWideChar()").c_str()); + // this will null-terminate + widestr.resize(wide_cnt); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str.c_str(), (int)str.length(), &widestr[0], wide_cnt); + + return widestr; + } + } +} \ No newline at end of file diff --git a/[Common]/UtfStr.h b/[Common]/UtfStr.h new file mode 100644 index 00000000..6fa60166 --- /dev/null +++ b/[Common]/UtfStr.h @@ -0,0 +1,51 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#include +#include + +#define UTILAPI WINAPI + +namespace XUtil +{ + namespace Conversion + { + typedef std::basic_string utf8string; + typedef std::basic_string utf16string; + +#if FALLOUT4_LAZ_UNICODE_PLUGIN + bool UTILAPI LazUnicodePluginInit(void); +#endif // !FALLOUT4_LAZ_UNICODE_PLUGIN + + bool UTILAPI IsUtf8Valid(const utf8string &str); + utf8string UTILAPI Utf16ToUtf8(const utf16string &str); + utf16string UTILAPI Utf8ToUtf16(const utf8string &str); + std::string UTILAPI Utf8ToAnsi(const utf8string &str); + utf8string UTILAPI AnsiToUtf8(const std::string &str); + std::string UTILAPI Utf16ToAnsi(const utf16string &str); + utf16string UTILAPI AnsiToUtf16(const std::string &str); + std::string UTILAPI WideToAnsi(const std::wstring &str); + std::wstring UTILAPI AnsiToWide(const std::string &str); + } +} diff --git a/[Common]/Utilities.cpp b/[Common]/Utilities.cpp new file mode 100644 index 00000000..1fd879df --- /dev/null +++ b/[Common]/Utilities.cpp @@ -0,0 +1,494 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#include "StdAfx.h" +#include "Utilities.h" + +XUtil::ITiming XUtil::Timing; + +XUtil::ITiming::msecond_t XUtil::ITiming::getTime(void) { + return std::chrono::duration_cast(clock_t::now() - time); +} + +void XUtil::ITiming::Begin(void) { + time = clock_t::now(); +} + +void XUtil::ITiming::End(const char* funcname) { + _MESSAGE_FMT("The function \"%s\" is completed in %f seconds", funcname, getTime().count()); +} + +void XUtil::ITiming::End(const char* funcname, const char* format, ...) { + va_list va; + char message[2048]; + + va_start(va, format); + _vsnprintf(&message[0], _TRUNCATE, format, va); + va_end(va); + + _MESSAGE(message); + _MESSAGE_FMT("The function \"%s\" is completed in %f seconds", funcname, getTime().count()); +} + +std::string XUtil::GetAppPath(void) { + CHAR szBuf[MAX_PATH + 1]; + AssertMsg(GetModuleFileNameA(GetModuleHandleA(NULL), szBuf, MAX_PATH), + "ERROR: An error occurred while retrieving the root folder."); + + return XUtil::Str::dirnameOf(szBuf) + "\\"; +} + +std::string XUtil::GetDataPath(void) { + return XUtil::GetAppPath() + "Data\\"; +} + +std::wstring XUtil::GetAppPathUnicode(void) { + WCHAR szBuf[MAX_PATH + 1]; + AssertMsg(GetModuleFileNameW(GetModuleHandleW(NULL), szBuf, MAX_PATH), + "ERROR: An error occurred while retrieving the root folder."); + + return XUtil::Str::dirnameOf(szBuf) + L"\\"; +} + +std::wstring XUtil::GetDataPathUnicode(void) { + return XUtil::GetAppPathUnicode() + L"Data\\"; +} + +void XUtil::Trim(char* Buffer, char C) { + size_t len = strlen(Buffer); + + if (len > 0 && Buffer[len - 1] == C) + Buffer[len - 1] = '\0'; +} + +void XUtil::XAssert(const char* File, int Line, const char* Format, ...) { + char buffer[4096]; + char message[4096]; + + va_list ap; + va_start(ap, Format); + + _vsnprintf_s(buffer, _TRUNCATE, Format, ap); + sprintf_s(message, "%s(%d):\n\n%s", File, Line, buffer); + + MessageBoxA(nullptr, message, "ASSERTION", MB_ICONERROR); + + if (IsDebuggerPresent()) { + OutputDebugStringA(message); + __debugbreak(); + } + + TerminateProcess(GetCurrentProcess(), 1); + __assume(0); +} + +uint64_t XUtil::MurmurHash64A(const void* Key, size_t Len, uint64_t Seed) { + /*----------------------------------------------------------------------------- + // https://github.com/abrandoned/murmur2/blob/master/MurmurHash2.c#L65 + // MurmurHash2, 64-bit versions, by Austin Appleby + // + // The same caveats as 32-bit MurmurHash2 apply here - beware of alignment + // and endian-ness issues if used across multiple platforms. + // + // 64-bit hash for 64-bit platforms + */ + const uint64_t m = 0xc6a4a7935bd1e995ull; + const int r = 47; + + uint64_t h = Seed ^ (Len * m); + + const uint64_t* data = (const uint64_t*)Key; + const uint64_t* end = data + (Len / 8); + + while (data != end) + { + uint64_t k = *data++; + + k *= m; + k ^= k >> r; + k *= m; + + h ^= k; + h *= m; + } + + const unsigned char* data2 = (const unsigned char*)data; + + switch (Len & 7) { + case 7: h ^= ((uint64_t)data2[6]) << 48; + case 6: h ^= ((uint64_t)data2[5]) << 40; + case 5: h ^= ((uint64_t)data2[4]) << 32; + case 4: h ^= ((uint64_t)data2[3]) << 24; + case 3: h ^= ((uint64_t)data2[2]) << 16; + case 2: h ^= ((uint64_t)data2[1]) << 8; + case 1: h ^= ((uint64_t)data2[0]); + h *= m; + } + + h ^= h >> r; + h *= m; + h ^= h >> r; + + return h; +} + +uintptr_t XUtil::FindPattern(uintptr_t StartAddress, uintptr_t MaxSize, const char* Mask) { + std::vector> pattern; + + for (size_t i = 0; i < strlen(Mask);) { + if (Mask[i] != '?') { + pattern.emplace_back((uint8_t)strtoul(&Mask[i], nullptr, 16), false); + i += 3; + } + else { + pattern.emplace_back(0x00, true); + i += 2; + } + } + + const uint8_t* dataStart = (uint8_t*)StartAddress; + const uint8_t* dataEnd = (uint8_t*)StartAddress + MaxSize + 1; + + auto ret = std::search(dataStart, dataEnd, pattern.begin(), pattern.end(), + [](uint8_t CurrentByte, std::pair& Pattern) { + return Pattern.second || (CurrentByte == Pattern.first); + }); + + if (ret == dataEnd) + return 0; + + return std::distance(dataStart, ret) + StartAddress; +} + +std::vector XUtil::FindPatterns(uintptr_t StartAddress, uintptr_t MaxSize, const char* Mask) { + std::vector results; + std::vector> pattern; + + for (size_t i = 0; i < strlen(Mask);) { + if (Mask[i] != '?') { + pattern.emplace_back((uint8_t)strtoul(&Mask[i], nullptr, 16), false); + i += 3; + } + else { + pattern.emplace_back(0x00, true); + i += 2; + } + } + + const uint8_t* dataStart = (uint8_t*)StartAddress; + const uint8_t* dataEnd = (uint8_t*)StartAddress + MaxSize + 1; + + for (const uint8_t* i = dataStart;;) { + auto ret = std::search(i, dataEnd, pattern.begin(), pattern.end(), + [](uint8_t CurrentByte, std::pair& Pattern) { + return Pattern.second || (CurrentByte == Pattern.first); + }); + + // No byte pattern matched, exit loop + if (ret == dataEnd) + break; + + uintptr_t addr = std::distance(dataStart, ret) + StartAddress; + results.push_back(addr); + + i = (uint8_t*)(addr + 1); + } + + return results; +} + +bool XUtil::GetPESectionRange(uintptr_t ModuleBase, const char* Section, uintptr_t* Start, uintptr_t* End) { + PIMAGE_NT_HEADERS64 ntHeaders = (PIMAGE_NT_HEADERS64)(ModuleBase + ((PIMAGE_DOS_HEADER)ModuleBase)->e_lfanew); + PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(ntHeaders); + + // Assume PE header if no section + if (!Section || strlen(Section) <= 0) { + if (Start) + *Start = ModuleBase; + + if (End) + *End = ModuleBase + ntHeaders->OptionalHeader.SizeOfHeaders; + + return true; + } + + for (uint32_t i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++, section++) { + // Name might not be null-terminated + char sectionName[sizeof(IMAGE_SECTION_HEADER::Name) + 1] = { }; + memcpy(sectionName, section->Name, sizeof(IMAGE_SECTION_HEADER::Name)); + + if (!strcmp(sectionName, Section)) { + if (Start) + *Start = ModuleBase + section->VirtualAddress; + + if (End) + *End = ModuleBase + section->VirtualAddress + section->Misc.VirtualSize; + + return true; + } + } + + return false; +} + +void XUtil::PatchMemory(uintptr_t Address, uint8_t* Data, size_t Size) { + DWORD d = 0; + VirtualProtect((LPVOID)Address, Size, PAGE_EXECUTE_READWRITE, &d); + + for (uintptr_t i = Address; i < (Address + Size); i++) + *(volatile uint8_t*)i = *Data++; + + VirtualProtect((LPVOID)Address, Size, d, &d); + FlushInstructionCache(GetCurrentProcess(), (LPVOID)Address, Size); +} + +void XUtil::PatchMemory(uintptr_t Address, std::initializer_list Data) { + DWORD d = 0; + VirtualProtect((LPVOID)Address, Data.size(), PAGE_EXECUTE_READWRITE, &d); + + uintptr_t i = Address; + for (auto value : Data) + *(volatile uint8_t*)i++ = value; + + VirtualProtect((LPVOID)Address, Data.size(), d, &d); + FlushInstructionCache(GetCurrentProcess(), (LPVOID)Address, Data.size()); +} + +void XUtil::PatchMemoryNop(uintptr_t Address, size_t Size) { + DWORD d = 0; + VirtualProtect((LPVOID)Address, Size, PAGE_EXECUTE_READWRITE, &d); + + for (uintptr_t i = Address; i < (Address + Size); i++) + *(volatile uint8_t*)i = 0x90; + + VirtualProtect((LPVOID)Address, Size, d, &d); + FlushInstructionCache(GetCurrentProcess(), (LPVOID)Address, Size); +} + +void XUtil::PatchMemoryWP(uintptr_t Address, uint8_t* Data, size_t Size) +{ + for (uintptr_t i = Address; i < (Address + Size); i++) + *(volatile uint8_t*)i = *Data++; +} + +void XUtil::PatchMemoryWP(uintptr_t Address, std::initializer_list Data) +{ + uintptr_t i = Address; + for (auto value : Data) + *(volatile uint8_t*)i++ = value; +} + +void XUtil::PatchMemoryNopWP(uintptr_t Address, size_t Size) +{ + for (uintptr_t i = Address; i < (Address + Size); i++) + *(volatile uint8_t*)i = 0x90; +} + +static DWORD dwOldFlagProtected = 0; + +void XUtil::UnlockWP(uintptr_t Address, size_t Size) +{ + Assert(!dwOldFlagProtected); + VirtualProtect((LPVOID)Address, Size, PAGE_EXECUTE_READWRITE, &dwOldFlagProtected); +} + +void XUtil::LockWP(uintptr_t Address, size_t Size) +{ + Assert(dwOldFlagProtected); + VirtualProtect((LPVOID)Address, Size, dwOldFlagProtected, &dwOldFlagProtected); + FlushInstructionCache(GetCurrentProcess(), (LPVOID)Address, Size); + dwOldFlagProtected = 0; +} + +void XUtil::DetourJump(uintptr_t Target, uintptr_t Destination) { + Detours::X64::DetourFunction(Target, Destination, Detours::X64Option::USE_REL32_JUMP); +} + +void XUtil::DetourCall(uintptr_t Target, uintptr_t Destination) { + Detours::X64::DetourFunction(Target, Destination, Detours::X64Option::USE_REL32_CALL); +} + +std::string __stdcall XUtil::Str::GetLastErrorToStr(DWORD err, const std::string& namefunc) +{ + // Retrieve the system error message for the last-error code + + std::string str; + LPVOID lpMsgBuf; + LPVOID lpDisplayBuf; + + FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + err, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPSTR)&lpMsgBuf, + 0, NULL); + + // Display the error message and exit the process + + lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, + (lstrlenA((LPCSTR)lpMsgBuf) + lstrlenA(namefunc.c_str()) + 40) * sizeof(CHAR)); + StringCchPrintfA((LPSTR)lpDisplayBuf, + LocalSize(lpDisplayBuf) / sizeof(CHAR), + "%s failed with error %d: %s", + namefunc.c_str(), err, lpMsgBuf); + str = (LPSTR)lpDisplayBuf; + + LocalFree(lpMsgBuf); + LocalFree(lpDisplayBuf); + + return str; +} + +std::string __stdcall XUtil::Str::GetLastErrorToStr(const std::string& namefunc) +{ + return GetLastErrorToStr(GetLastError(), namefunc); +} + +VtableIndexUtil* VtableIndexUtil::GlobalInstance; + +VtableIndexUtil* VtableIndexUtil::Instance() +{ + if (!GlobalInstance) + { + GlobalInstance = new VtableIndexUtil(); + GlobalInstance->ForceVtableReference(); + + // Overwrite this class's vtable pointers + static const VtableIndexFn VtableIndexArray[] = + { +#define MAKE_ENTRY(Index) []() -> int { return Index; } + MAKE_ENTRY(0), MAKE_ENTRY(1), MAKE_ENTRY(2), + MAKE_ENTRY(3), MAKE_ENTRY(4), MAKE_ENTRY(5), + MAKE_ENTRY(6), MAKE_ENTRY(7), MAKE_ENTRY(8), + MAKE_ENTRY(9), MAKE_ENTRY(10), MAKE_ENTRY(11), + MAKE_ENTRY(12), MAKE_ENTRY(13), MAKE_ENTRY(14), + MAKE_ENTRY(15), MAKE_ENTRY(16), MAKE_ENTRY(17), + MAKE_ENTRY(18), MAKE_ENTRY(19), MAKE_ENTRY(20), + MAKE_ENTRY(21), MAKE_ENTRY(22), MAKE_ENTRY(23), + MAKE_ENTRY(24), MAKE_ENTRY(25), MAKE_ENTRY(26), + MAKE_ENTRY(27), MAKE_ENTRY(28), MAKE_ENTRY(29), + MAKE_ENTRY(30), MAKE_ENTRY(31), MAKE_ENTRY(32), + MAKE_ENTRY(33), MAKE_ENTRY(34), MAKE_ENTRY(35), + MAKE_ENTRY(36), MAKE_ENTRY(37), MAKE_ENTRY(38), + MAKE_ENTRY(39), MAKE_ENTRY(40), MAKE_ENTRY(41), + MAKE_ENTRY(42), MAKE_ENTRY(43), MAKE_ENTRY(44), + MAKE_ENTRY(45), MAKE_ENTRY(46), MAKE_ENTRY(47), + MAKE_ENTRY(48), MAKE_ENTRY(49), MAKE_ENTRY(50), + MAKE_ENTRY(51), MAKE_ENTRY(52), MAKE_ENTRY(53), + MAKE_ENTRY(54), MAKE_ENTRY(55), MAKE_ENTRY(56), + MAKE_ENTRY(57), MAKE_ENTRY(58), MAKE_ENTRY(59), + MAKE_ENTRY(60), MAKE_ENTRY(61), MAKE_ENTRY(62), + MAKE_ENTRY(63), MAKE_ENTRY(64), MAKE_ENTRY(65), + MAKE_ENTRY(66), MAKE_ENTRY(67), MAKE_ENTRY(68), + MAKE_ENTRY(69), MAKE_ENTRY(70), MAKE_ENTRY(71), + MAKE_ENTRY(72), MAKE_ENTRY(73), MAKE_ENTRY(74), + MAKE_ENTRY(75), MAKE_ENTRY(76), MAKE_ENTRY(77), + MAKE_ENTRY(78), MAKE_ENTRY(79), MAKE_ENTRY(80), + MAKE_ENTRY(81), MAKE_ENTRY(82), MAKE_ENTRY(83), + MAKE_ENTRY(84), MAKE_ENTRY(85), MAKE_ENTRY(86), + MAKE_ENTRY(87), MAKE_ENTRY(88), MAKE_ENTRY(89), + MAKE_ENTRY(90), MAKE_ENTRY(91), MAKE_ENTRY(92), + MAKE_ENTRY(93), MAKE_ENTRY(94), MAKE_ENTRY(95), + MAKE_ENTRY(96), MAKE_ENTRY(97), MAKE_ENTRY(98), + MAKE_ENTRY(99), MAKE_ENTRY(100), MAKE_ENTRY(101), + MAKE_ENTRY(102), MAKE_ENTRY(103), MAKE_ENTRY(104), + MAKE_ENTRY(105), MAKE_ENTRY(106), MAKE_ENTRY(107), + MAKE_ENTRY(108), MAKE_ENTRY(109), MAKE_ENTRY(110), + MAKE_ENTRY(111), MAKE_ENTRY(112), MAKE_ENTRY(113), + MAKE_ENTRY(114), MAKE_ENTRY(115), MAKE_ENTRY(116), + MAKE_ENTRY(117), MAKE_ENTRY(118), MAKE_ENTRY(119), + MAKE_ENTRY(120), +#undef MAKE_ENTRY + }; + + *(uintptr_t*)GlobalInstance = (uintptr_t)&VtableIndexArray; + } + + return GlobalInstance; +} + +int VtableIndexUtil::ForceVtableReference() +{ + return 0; +} + +void XUtil::SetThreadName(uint32_t ThreadID, const char* ThreadName) +{ +#pragma pack(push, 8) + const DWORD MS_VC_EXCEPTION = 0x406D1388; + + typedef struct tagTHREADNAME_INFO { + DWORD dwType; // Must be 0x1000. + LPCSTR szName; // Pointer to name (in user addr space). + DWORD dwThreadID; // Thread ID (-1=caller thread). + DWORD dwFlags; // Reserved for future use, must be zero. + } THREADNAME_INFO; +#pragma pack(pop) + + THREADNAME_INFO info; + info.dwType = 0x1000; + info.szName = ThreadName; + info.dwThreadID = ThreadID; + info.dwFlags = 0; + + __try { + RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR*)&info); + } + __except (EXCEPTION_EXECUTE_HANDLER){} +} + +size_t XUtil::Str::findCaseInsensitive(std::string data, std::string toSearch, size_t pos) +{ + // Convert complete given String to lower case + std::transform(data.begin(), data.end(), data.begin(), ::tolower); + // Convert complete given Sub String to lower case + std::transform(toSearch.begin(), toSearch.end(), toSearch.begin(), ::tolower); + // Find sub string in given string + return data.find(toSearch, pos); +} + +void XUtil::Str::replaceAll(std::string& source, const std::string& from, const std::string& to) +{ + // https://stackoverflow.com/questions/2896600/how-to-replace-all-occurrences-of-a-character-in-string + + std::string newString; + newString.reserve(source.length()); // avoids a few memory allocations + + std::string::size_type lastPos = 0; + std::string::size_type findPos; + + while (std::string::npos != (findPos = source.find(from, lastPos))) + { + newString.append(source, lastPos, findPos - lastPos); + newString += to; + lastPos = findPos + from.length(); + } + + // Care for the rest after last occurrence + newString += source.substr(lastPos); + + source.swap(newString); +} \ No newline at end of file diff --git a/[Common]/Utilities.h b/[Common]/Utilities.h new file mode 100644 index 00000000..5307deb4 --- /dev/null +++ b/[Common]/Utilities.h @@ -0,0 +1,369 @@ +////////////////////////////////////////// +/* +* Copyright (c) 2020 Nukem9 +* Copyright (c) 2020-2021 Perchik71 +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +* PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ +////////////////////////////////////////// + +#pragma once + +#pragma warning(disable:4094) // untagged 'struct' declared no symbols +#pragma warning(disable:4172) + +#include +#include +#include +#include +#include +#include +#include + +#include + +//#define ProfileCounterInc(x) if(IsDebuggerPresent()) {}; + +#define Assert(Cond) if(!(Cond)) XUtil::XAssert(__FILE__, __LINE__, #Cond); +#define AssertDebug(Cond) if(!(Cond)) XUtil::XAssert(__FILE__, __LINE__, #Cond); +#define AssertMsgVa(Cond, Msg, ...) if(!(Cond)) XUtil::XAssert(__FILE__, __LINE__, "%s\n\n" Msg, #Cond, ##__VA_ARGS__); +#define AssertMsg(Cond, Msg) AssertMsgVa(Cond, Msg) +#define AssertMsgDebug(Cond, Msg) AssertMsgVa(Cond, Msg) + +#define _TIMING_START XUtil::Timing.Begin() +#define _TIMING_END XUtil::Timing.End(__FUNCTION__) +#define _TIMING_END_FMT(x, ...) XUtil::Timing.End(__FUNCTION__, x, ##__VA_ARGS__) + +#define RECTWIDTH(r) (r.right - r.left) +#define RECTHEIGHT(r) (r.bottom - r.top) + +#define PatchIAT(detour, module, procname) Detours::IATHook(g_ModuleBase, (module), (procname), (uintptr_t)(detour)); + +#define templated(...) __VA_ARGS__ +#define AutoPtr(Type, Name, Offset) static Type& Name = (*(Type *)((uintptr_t)GetModuleHandle(nullptr) + Offset)) +#define AutoFunc(Type, Name, Offset) static auto Name = ((Type)((uintptr_t)GetModuleHandle(nullptr) + Offset)) + +#define static_assert_offset(Structure, Member, Offset) struct __declspec(empty_bases) : CheckOffset { } +#define assert_vtable_index(Function, Index) AssertMsgVa(VtableIndexUtil::GetIndexOf(Function) == Index, "Virtual table index does not match (%d != %d)", VtableIndexUtil::GetIndexOf(Function), Index) + +#define GAME_TLS(Type, Offset) *(Type *)(*(uintptr_t *)(__readgsqword(0x58u) + 8i64 * (*(uint32_t *)(g_ModuleBase + 0x34BBA78))) + (Offset)) + +#define STATIC_CONSTRUCTOR(Id, Lambda) \ + struct \ + { \ + static void Id() \ + { \ + StaticConstructor<&Id>::C; \ + Lambda(); \ + } \ + }; + +#define DECLARE_CONSTRUCTOR_HOOK(Class) \ + static Class *__ctor__(void *Instance) \ + { \ + return new (Instance) Class(); \ + } \ + \ + static Class *__dtor__(Class *Thisptr, unsigned __int8) \ + { \ + Thisptr->~Class(); \ + return Thisptr; \ + } + +class VtableIndexUtil { +private: + typedef int(*VtableIndexFn)(); + static VtableIndexUtil* GlobalInstance; +public: + static VtableIndexUtil* Instance(); + + template + static int GetIndexOf(T ptr) { + return (Instance()->**((decltype(&ForceVtableReference)*)(&ptr)))(); + } +private: + virtual int ForceVtableReference(); +}; + +template +struct StaticConstructor +{ + struct Constructor + { + Constructor() + { + ctor(); + } + }; + + static Constructor C; +}; + +template +typename StaticConstructor::Constructor StaticConstructor::C; + +template +struct __declspec(empty_bases)CheckOffset +{ + static_assert(Offset <= RequiredOffset, "Offset is larger than expected"); + static_assert(Offset >= RequiredOffset, "Offset is smaller than expected"); +}; + +// thread-safe template versions of thisVirtualCall() + +template +__forceinline TR thisVirtualCall(size_t reloff, const void* ths) { + return (*(TR(__fastcall**)(const void*))(*(__int64*)ths + reloff))(ths); +} + +template +__forceinline TR thisVirtualCall(size_t reloff, const void* ths, T1 a1) { + return (*(TR(__fastcall**)(const void*, T1))(*(__int64*)ths + reloff))(ths, a1); +} + +template +__forceinline TR thisVirtualCall(size_t reloff, const void* ths, T1 a1, T2 a2) { + return (*(TR(__fastcall**)(const void*, T1, T2))(*(__int64*)ths + reloff))(ths, a1, a2); +} + +template +__forceinline TR thisVirtualCall(size_t reloff, const void* ths, T1 a1, T2 a2, T3 a3) { + return (*(TR(__fastcall**)(const void*, T1, T2, T3))(*(__int64*)ths + reloff))(ths, a1, a2, a3); +} + +template +__forceinline TR thisVirtualCall(size_t reloff, const void* ths, T1 a1, T2 a2, T3 a3, T4 a4) { + return (*(TR(__fastcall**)(const void*, T1, T2, T3, T4))(*(__int64*)ths + reloff))(ths, a1, a2, a3, a4); +} + +namespace XUtil { + + class ITiming { + public: + typedef std::chrono::high_resolution_clock clock_t; + typedef std::chrono::duration msecond_t; + private: + clock_t::time_point time; + private: + msecond_t getTime(void); + public: + ITiming(void) = default; + public: + void Begin(void); + void End(const char* funcname); + void End(const char* funcname, const char* format, ...); + }; + + extern ITiming Timing; + + std::string GetAppPath(void); + std::string GetDataPath(void); + + std::wstring GetAppPathUnicode(void); + std::wstring GetDataPathUnicode(void); + + void SetThreadName(uint32_t ThreadID, const char* ThreadName); + void Trim(char* Buffer, char C); + void XAssert(const char* File, int Line, const char* Format, ...); + uint64_t MurmurHash64A(const void* Key, size_t Len, uint64_t Seed = 0); + + uintptr_t FindPattern(uintptr_t StartAddress, uintptr_t MaxSize, const char* Mask); + std::vector FindPatterns(uintptr_t StartAddress, uintptr_t MaxSize, const char* Mask); + bool GetPESectionRange(uintptr_t ModuleBase, const char* Section, uintptr_t* Start, uintptr_t* End); + void PatchMemory(uintptr_t Address, uint8_t* Data, size_t Size); + void PatchMemory(uintptr_t Address, std::initializer_list Data); + void PatchMemoryNop(uintptr_t Address, size_t Size); + void PatchMemoryWP(uintptr_t Address, uint8_t* Data, size_t Size); + void PatchMemoryWP(uintptr_t Address, std::initializer_list Data); + void PatchMemoryNopWP(uintptr_t Address, size_t Size); + void UnlockWP(uintptr_t Address, size_t Size); + void LockWP(uintptr_t Address, size_t Size); + void DetourJump(uintptr_t Target, uintptr_t Destination); + void DetourCall(uintptr_t Target, uintptr_t Destination); + + template + __forceinline void DetourJump(uintptr_t Target, T Destination) { + static_assert(std::is_member_function_pointer_v || (std::is_pointer_v && std::is_function_v::type>)); + DetourJump(Target, *(uintptr_t*)&Destination); + } + + template + __forceinline void DetourCall(uintptr_t Target, T Destination) { + static_assert(std::is_member_function_pointer_v || (std::is_pointer_v && std::is_function_v::type>)); + DetourCall(Target, *(uintptr_t*)&Destination); + } + + template + __forceinline void __stdcall DetourClassCall(uintptr_t target, T destination){ + Detours::X64::DetourFunctionClass(target, destination, Detours::X64Option::USE_REL32_CALL); + } + + template + __forceinline void __stdcall DetourClassJump(uintptr_t target, T destination) { + Detours::X64::DetourFunctionClass(target, destination, Detours::X64Option::USE_REL32_JUMP); + } + + namespace Parallel + { + // https://stackoverflow.com/questions/40805197/parallel-for-each-more-than-two-times-slower-than-stdfor-each + // fast than tbb::parallel_for_each + + class join_threads + { + public: + explicit join_threads(std::vector& threads) + : threads_(threads) {} + + ~join_threads() + { + for (size_t i = 0; i < threads_.size(); ++i) + { + if (threads_[i].joinable()) + { + threads_[i].join(); + } + } + } + + private: + std::vector& threads_; + }; + + template + void for_each(Iterator first, Iterator last, Func func) + { + const auto length = std::distance(first, last); + if (0 == length) return; + + const auto min_per_thread = 25u; + const unsigned max_threads = (length + min_per_thread - 1) / min_per_thread; + const auto hardware_threads = std::thread::hardware_concurrency(); + const auto num_threads = std::min(hardware_threads != 0 ? hardware_threads : 2u, max_threads); + const auto block_size = length / num_threads; + + std::vector> futures(num_threads - 1); + std::vector threads(num_threads - 1); + join_threads joiner(threads); + + auto block_start = first; + for (unsigned i = 0; i < num_threads - 1; ++i) + { + auto block_end = block_start; + std::advance(block_end, block_size); + std::packaged_task task([block_start, block_end, func]() + { + std::for_each(block_start, block_end, func); + }); + futures[i] = task.get_future(); + threads[i] = std::thread(std::move(task)); + block_start = block_end; + } + + std::for_each(block_start, last, func); + + for (size_t i = 0; i < num_threads - 1; ++i) + futures[i].get(); + } + } + + namespace Str + { + static char* whitespaceDelimiters = " \t\n\r\f\v"; + + // https://thispointer.com/implementing-a-case-insensitive-stringfind-in-c/ + + /* + * Find Case Insensitive Sub String in a given substring + */ + + size_t findCaseInsensitive(std::string data, std::string toSearch, size_t pos = 0); + + // dirnameOf https://stackoverflow.com/questions/8518743/get-directory-from-file-path-c/34740989 + static inline std::string dirnameOf(const std::string& fname) { + size_t pos = fname.find_last_of("\\/"); + return (std::string::npos == pos) + ? "" + : fname.substr(0, pos); + } + + // dirnameOf https://stackoverflow.com/questions/8518743/get-directory-from-file-path-c/34740989 + static inline std::wstring dirnameOf(const std::wstring& fname) { + size_t pos = fname.find_last_of(L"\\/"); + return (std::wstring::npos == pos) + ? L"" + : fname.substr(0, pos); + } + + // convert string to upper case + static inline std::string& UpperCase(std::string& s) { + std::for_each(s.begin(), s.end(), [](char& c) { + c = ::toupper(c); + }); + return s; + } + + // convert string to upper case + static inline std::string& LowerCase(std::string& s) { + std::for_each(s.begin(), s.end(), [](char& c) { + c = ::tolower(c); + }); + return s; + } + + // convert string to upper case + static inline std::wstring& UpperCaseW(std::wstring& s) { + std::for_each(s.begin(), s.end(), [](wchar_t& c) { + c = ::toupper(c); + }); + return s; + } + + // convert string to upper case + static inline std::wstring& LowerCaseW(std::wstring& s) { + std::for_each(s.begin(), s.end(), [](wchar_t& c) { + c = ::tolower(c); + }); + return s; + } + + // https://docs.microsoft.com/en-us/windows/win32/debug/retrieving-the-last-error-code + std::string __stdcall GetLastErrorToStr(DWORD err, const std::string& namefunc); + std::string __stdcall GetLastErrorToStr(const std::string& namefunc); + + static inline std::string ChangeFileExt(const std::string sfile, const std::string snewext) { + if (auto it = sfile.find_last_of('.'); it != std::string::npos) + return sfile.substr(0, it) + snewext; + else + return sfile + snewext; + } + + inline std::string& trim(std::string& str) { + + str.erase(str.find_last_not_of(whitespaceDelimiters) + 1); + str.erase(0, str.find_first_not_of(whitespaceDelimiters)); + + return str; + } + + inline std::string trim(const char* s) { + std::string str(s); + return trim(str); + } + + void replaceAll(std::string& source, const std::string& from, const std::string& to); + } +} \ No newline at end of file diff --git a/[Components]/f4ck_loader/Resource.rc b/[Components]/f4ck_loader/Resource.rc new file mode 100644 index 00000000..f8195910 Binary files /dev/null and b/[Components]/f4ck_loader/Resource.rc differ diff --git a/[Components]/f4ck_loader/f4ck_loader.aps b/[Components]/f4ck_loader/f4ck_loader.aps new file mode 100644 index 00000000..dd34af81 Binary files /dev/null and b/[Components]/f4ck_loader/f4ck_loader.aps differ diff --git a/[Components]/f4ck_loader/f4ck_loader.cpp b/[Components]/f4ck_loader/f4ck_loader.cpp new file mode 100644 index 00000000..0d5e8707 --- /dev/null +++ b/[Components]/f4ck_loader/f4ck_loader.cpp @@ -0,0 +1,295 @@ +п»ї#define WIN32_LEAN_AND_MEAN +#define _CRT_SECURE_NO_WARNINGS +#define F4CKLAPI __stdcall + +#pragma warning(disable : 26451) + +#include "resource1.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CREATIONKIT L"CreationKit.exe" +#define CREATIONKIT_PATCHED L"CreationKit.patched.exe" + +struct membuf : public std::streambuf { + membuf(DWORD len) + : std::streambuf() + , len(len) + , src((len > 0) ? new CHAR[len] : NULL) + { + setg(src.get(), src.get(), src.get() + len); + } + + // direct buffer access for file load. + LPSTR get(VOID) { return src.get(); }; + DWORD size(VOID) const { return len; }; + +private: + std::unique_ptr src; + DWORD len; +}; + +std::map dllENBs = { + { L"d3d11.dll", NULL }, + { L"d3d10.dll", NULL }, + { L"d3d9.dll", NULL }, + { L"d3dcompiler_46e.dll", NULL }, + { L"dxgi.dll", NULL }, + { L"enbimgui.dll", NULL }, +}; + +std::wstring app_path; + +#ifdef HIDEWINDOW + +VOID F4CKLAPI HideConsole(VOID) { + ShowWindow(GetConsoleWindow(), SW_HIDE); +} + +#endif + +BOOL F4CKLAPI FileExists(const std::wstring fname) { + return std::filesystem::exists(app_path + fname); +} + +BOOL F4CKLAPI KillProcess(DWORD dwPid) { + HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid); + if (!hProc) + return FALSE; + + BOOL bResult = TerminateProcess(hProc, 0); + WaitForSingleObject(hProc, INFINITE); + + return bResult; +} + +VOID F4CKLAPI ReadFileToMemory(VOID) { + for (auto dll = dllENBs.begin(); dllENBs.end() != dll; dll++) { + if (FileExists((*dll).first)) { +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" found and will be remove.\n"; +#endif + HANDLE fileDll = CreateFileW((app_path + (*dll).first).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); + if (!fileDll) { +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" failed open.\n"; +#else + std::wstring msg = std::wstring(L"File """) + (*dll).first.c_str() + L""" failed open."; + MessageBoxW(0, msg.c_str(), L"Error", MB_OK | MB_ICONERROR); +#endif + break; + } + + DWORD len = GetFileSize(fileDll, NULL); + + (*dll).second = new membuf(len); + + DWORD m; + if (!ReadFile(fileDll, (*dll).second->get(), len, &m, NULL)) { +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" failed read file.\n"; +#endif + } + CloseHandle(fileDll); +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" read " << m << L".\n"; +#endif + DeleteFileW((app_path + (*dll).first).c_str()); + } + } +} + +VOID F4CKLAPI WriteFileToFolder(VOID) +{ + for (auto dll = dllENBs.begin(); dllENBs.end() != dll; dll++) { + if ((*dll).second) { +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" was removed and will be restored.\n"; +#endif + HANDLE fileDll = CreateFileW((app_path + (*dll).first).c_str(), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL); + if (!fileDll) { +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" failed create.\n"; +#else + std::wstring msg = std::wstring(L"File """) + (*dll).first.c_str() + L""" failed create."; + MessageBoxW(0, msg.c_str(), L"Error", MB_OK | MB_ICONERROR); +#endif + break; + } + + DWORD m; + if (!WriteFile(fileDll, (*dll).second->get(), (*dll).second->size(), &m, NULL)) { +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" failed write file.\n"; +#endif + } + CloseHandle(fileDll); +#ifndef HIDEWINDOW + std::wcout << L"File """ << (*dll).first.c_str() << L""" write " << m << L".\n"; +#endif + delete (*dll).second; + (*dll).second = NULL; + } + } +} + +INT_PTR CALLBACK DlgPleaseWaitProc(HWND DialogHwnd, UINT Message, WPARAM wParam, LPARAM lParam) { + return FALSE; +} + +VOID WaitCloseF4CKLoader(VOID) { + DWORD dwCount = 0; + PROCESSENTRY32 entry; + entry.dwSize = sizeof(PROCESSENTRY32); + + HANDLE hProcess = INVALID_HANDLE_VALUE; + HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); + DWORD dwCurrentProcessID = GetCurrentProcessId(); + + if (Process32First(snapshot, &entry) == TRUE) { + while (Process32Next(snapshot, &entry) == TRUE) { + if (entry.th32ProcessID != dwCurrentProcessID && !_wcsicmp(entry.szExeFile, L"f4ck_loader.exe")) { + dwCount++; + if (dwCount >= 2) + // user spam run + TerminateProcess(GetCurrentProcess(), 0); + + hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); + } + } + } + + CloseHandle(snapshot); + + if (hProcess != INVALID_HANDLE_VALUE) { + + HWND hDlg = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_PLEASEWAIT), NULL, &DlgPleaseWaitProc); + + WaitForSingleObject(hProcess, INFINITE); + + EndDialog(hDlg, 0); + DestroyWindow(hDlg); + } +} + +INT32 WINAPI main(INT32 argc, LPSTR argv[]) +{ +#ifdef HIDEWINDOW + HideConsole(); +#endif + + WaitCloseF4CKLoader(); + + std::wstring StrCmdLine; + BOOL bSafeRun = TRUE; + BOOL bPatchedPreVis = FALSE; + CHAR basePath[2048] = ""; + GetFullPathNameA(argv[0], 2048, basePath, NULL); + std::filesystem::path p(basePath); + app_path = p.parent_path(); + app_path += L"\\"; + + if (argc > 1) { + bSafeRun = FALSE; + DWORD pid = MAXDWORD; + LPSTR cmd, token; + DWORD scmd = (DWORD)strlen(argv[1]); + if (!scmd) + goto l_skip; + + cmd = new CHAR[scmd + 1]; + strcpy(cmd, argv[1]); + token = strtok(cmd, ":"); + if (token) { + if (_stricmp(token, "pid")) + goto l_skip_f; + + if (token = strtok(NULL, ","); token) + pid = (DWORD)strtoul(token, NULL, 10); + } + + l_skip_f: + delete[] cmd; + + if (pid != MAXDWORD) { + bSafeRun = KillProcess(pid); + if (!bSafeRun) { +#ifndef HIDEWINDOW + std::wcout << L"required process """ << pid << L""" couldn't be closed.\n"; +#else + MessageBoxW(0, + L"Required process couldn't be closed.\n" + L"The CreationKit will not be started.", + L"Error", + MB_OK | MB_ICONERROR); + +#endif + return 1; + } + } + else { + bSafeRun = TRUE; + + size_t istart = std::wstring::npos; + StrCmdLine = GetCommandLineW(); + if (StrCmdLine.c_str()[0] == '"') { + istart = StrCmdLine.find_first_of('"', 1); + if (std::wstring::npos != istart) + istart++; + } + else + istart = StrCmdLine.find_first_of(' '); + + if (std::wstring::npos != istart) { + StrCmdLine = StrCmdLine.substr(istart + 1); + + istart = StrCmdLine.find_first_of('-'); + if (std::wstring::npos != istart) { + auto iend = StrCmdLine.find_first_of(':', istart); + if (std::wstring::npos != iend) { + auto sCmd = StrCmdLine.substr(istart, iend - 1); + + if (!_wcsicmp(sCmd.c_str(), L"-GeneratePreCombined") || + !_wcsicmp(sCmd.c_str(), L"-GeneratePreVisData") || + !_wcsicmp(sCmd.c_str(), L"-BuildCDX") || + !_wcsicmp(sCmd.c_str(), L"-CompressPSG")) + bPatchedPreVis = std::filesystem::exists(app_path + CREATIONKIT_PATCHED); + } + } + } + else + StrCmdLine.clear(); + } + } +l_skip: +#ifndef HIDEWINDOW + std::wcout << L"Root dir: " << app_path << L"\n"; + std::wcout << L"Delete files.\n"; +#endif + ReadFileToMemory(); +#ifndef HIDEWINDOW + std::wcout << L"Open Creation Kit.\n"; +#endif + if (bSafeRun) + ShellExecuteW(NULL, L"open", bPatchedPreVis ? CREATIONKIT_PATCHED : CREATIONKIT, StrCmdLine.c_str(), app_path.c_str(), SW_SHOW); +#ifndef HIDEWINDOW + std::wcout << L"Wait 15 sec.\n"; +#endif + Sleep(bPatchedPreVis ? 25000 : 15000); +#ifndef HIDEWINDOW + std::wcout << L"Return files.\n"; +#endif + WriteFileToFolder(); + + return 0; +} + +#pragma warning(default : 26451) \ No newline at end of file diff --git a/[Components]/f4ck_loader/f4ck_loader.rc b/[Components]/f4ck_loader/f4ck_loader.rc new file mode 100644 index 00000000..5820f55f --- /dev/null +++ b/[Components]/f4ck_loader/f4ck_loader.rc @@ -0,0 +1,154 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource1.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Русский (Россия) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource1.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,4,0,0 + PRODUCTVERSION 0,4,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "041904b0" + BEGIN + VALUE "FileDescription", "Fallout 4 Creation Kit 64 Loader without ENBSeries mod" + VALUE "FileVersion", "0.4.0.0" + VALUE "InternalName", "f4ck_loader.exe" + VALUE "LegalCopyright", "Copyright 2020-2021 aka Perchik71 developer. All Rights Reserved." + VALUE "OriginalFilename", "f4ck_loader.exe" + VALUE "ProductName", "Fallout 4 Creation Kit 64 Loader for Windows" + VALUE "ProductVersion", "0.4.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x419, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_PLEASEWAIT DIALOGEX 0, 0, 120, 38 +STYLE DS_SYSMODAL | DS_SETFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_SYSMENU +EXSTYLE WS_EX_NOACTIVATE +FONT 12, "Microsoft Sans Serif", 400, 0, 0xCC +BEGIN + LTEXT "",IDC_STATIC,7,7,106,24,WS_BORDER + CTEXT "Please wait...",IDC_STATIC,14,16,92,8 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_PLEASEWAIT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 113 + TOPMARGIN, 7 + BOTTOMMARGIN, 31 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// AFX_DIALOG_LAYOUT +// + +IDD_PLEASEWAIT AFX_DIALOG_LAYOUT +BEGIN + 0 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICONAPP ICON "..\\..\\[Resources]\\0409\\11_2Tu_icon.ico" + +#endif // Русский (Россия) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/[Components]/f4ck_loader/f4ck_loader.vcxproj b/[Components]/f4ck_loader/f4ck_loader.vcxproj new file mode 100644 index 00000000..4f39410b --- /dev/null +++ b/[Components]/f4ck_loader/f4ck_loader.vcxproj @@ -0,0 +1,112 @@ + + + + + Release + Win32 + + + Release + x64 + + + + 16.0 + {16FBC8F6-E657-4242-8DBE-441CC9123674} + Win32Proj + f4ckloader + 10.0 + + + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + false + f4ck_loader + + + false + + + + NotUsing + Level3 + MaxSpeed + true + true + true + HIDEWINDOW;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + stdc17 + + + + Console + true + true + false + + + powershell Copy-Item -Path "$(SolutionDir)$(Platform)\$(Configuration)\f4ck_loader.exe" -Destination "$(SolutionDir)[Resources]\f4ck_loader.bin" + + + + + + + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/[Components]/f4ck_loader/f4ck_loader.vcxproj.filters b/[Components]/f4ck_loader/f4ck_loader.vcxproj.filters new file mode 100644 index 00000000..244893f2 --- /dev/null +++ b/[Components]/f4ck_loader/f4ck_loader.vcxproj.filters @@ -0,0 +1,37 @@ +п»ї + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Рсходные файлы + + + + + Файлы заголовков + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/[Components]/f4ck_loader/resource.h b/[Components]/f4ck_loader/resource.h new file mode 100644 index 00000000..8469d232 --- /dev/null +++ b/[Components]/f4ck_loader/resource.h @@ -0,0 +1,22 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется Resource.rc +// +#define IDB_PNG1 101 +#define IDB_PNG2 102 +#define IDB_PNG3 103 +#define IDB_PNG4 104 +#define IDB_PNG5 105 +#define IDB_PNG6 106 +#define IDB_PNG7 107 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 108 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/[Components]/f4ck_loader/resource1.h b/[Components]/f4ck_loader/resource1.h new file mode 100644 index 00000000..b4474337 --- /dev/null +++ b/[Components]/f4ck_loader/resource1.h @@ -0,0 +1,18 @@ +//{{NO_DEPENDENCIES}} +// Включаемый файл, созданный в Microsoft Visual C++. +// Используется f4ck_loader.rc +// +#define IDD_PLEASEWAIT 101 +#define IDI_ICON1 125 +#define IDI_ICONAPP 125 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 126 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/[Data]/CreationKitWarnings.txt b/[Data]/CreationKitWarnings.txt new file mode 100644 index 00000000..87b5906a --- /dev/null +++ b/[Data]/CreationKitWarnings.txt @@ -0,0 +1,3183 @@ +Add new entries at the bottom of this list. Toggled by WarningBlacklist setting. +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no preHitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipper' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeAttackRipperStart' has no preHitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipper' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeAttackRipperStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no preHitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipperSneak' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeattackRipperSneakStart' has no preHitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipperSneak' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeattackRipperSneakStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no preHitFrame event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipper' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeAttackRipperStart' has no preHitFrame event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipper' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeAttackRipperStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no preHitFrame event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipperSneak' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeattackRipperSneakStart' has no preHitFrame event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipperSneak' on race 'HumanRaceSubGraphDataAdditiveDLC06' for attack event 'meleeattackRipperSneakStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC03\FogCrawler\Animations\Attack2' on race 'DLC03_FogCrawlerRace' for attack event 'meleeStart_2' has no HitFrame event +ANIMATION: Animation 'Actors\DLC03\Hermit\Animations\Attack3' on race 'DLC03_HermitCrabRace' for attack event 'meleeStart_3' has no HitFrame event +ANIMATION: Could not find base MT/weapon graph for race 'DLC01AssaultronRaceAdditiveSubgraphRace' (01004E05) +ANIMATION: Could not find root behavior for project /. Is this set up properly? +ANIMATION: Could not get event 'WeaponFire' time in animation 'Angler_AttackBite' when querying about length of fire animation for weapon DLC03AnglerVomit (01048EC7) using NPC DLC03MQ06_LvlAngler (01043FBF) with race DLC03_AnglerRace (0100FEEA) +ANIMATION: Could not get event 'WeaponFire' time in animation 'Angler_AttackBite' when querying about length of fire animation for weapon DLC03AnglerVomit (03048EC7) using NPC DLC03MQ06_LvlAngler (03043FBF) with race DLC03_AnglerRace (0300FEEA) +ANIMATION: Could not get proper data when querying about length of fire animation for weapon DLC04FakeAlienBlasterTurret (0101FAAB) using NPC Player (00000007) with race HumanRace (00013746) +ANIMATION: Could not get proper data when querying about length of fire animation for weapon DLC04FakeAlienBlasterTurret (0601FAAB) using NPC Player (00000007) with race HumanRace (00013746) +ANIMATION: Could not get proper data when querying about length of reload animation for weapon VRWorkshopShared_AlienBlaster_NonPlayable (0024A3B0) using NPC VRWorkshopShared_encAlien (0024A37D) with race AlienRace (00184C4D) +ASSERTION: Failed to find the address of D3DCompile in D3DCompiler_46.dll (Win32\BSGraphicsRenderer.cpp line 1385) +ASSERTION: Failed to find the address of D3DReflect in D3DCompiler_46.dll (Win32\BSGraphicsRenderer.cpp line 1389) +ASSERTION: Failed to load D3DCompiler_46.dll. (Win32\BSGraphicsRenderer.cpp line 1381) +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Ref is not in its persistence location 'CommonwealthLocation' (00002CF0). +CELLS: Ref is not in its persistence location 'DLC03CliffsEdgeHotelLocation' (0100F041). +CELLS: Ref is not in its persistence location 'DLC03CliffsEdgeHotelLocation' (0300F041). +CELLS: Ref is not in its persistence location 'DLC03HorizonFlight1207Location' (0100F044). +CELLS: Ref is not in its persistence location 'DLC03HorizonFlight1207Location' (0300F044). +CELLS: Ref is not in its persistence location 'DLC04GauntletLocation' (0100BD04). +CELLS: Ref is not in its persistence location 'DLC04GauntletLocation' (0600BD04). +CELLS: Ref is not in its persistence location 'DLC04GrandchesterMansionLocation' (0101EB9B). +CELLS: Ref is not in its persistence location 'DLC04GrandchesterMansionLocation' (0601EB9B). +CELLS: Ref is not in its persistence location 'DLC04KiddieKingdomLocation' (01017645). +CELLS: Ref is not in its persistence location 'DLC04KiddieKingdomLocation' (06017645). +CELLS: Ref is not in its persistence location 'DLC04NukaTownUSALocation' (0101FCEC). +CELLS: Ref is not in its persistence location 'DLC04NukaTownUSALocation' (0601FCEC). +CELLS: Ref is not in its persistence location 'DLC04SafariAdventureLocation' (0101FC7F). +CELLS: Ref is not in its persistence location 'DLC04SafariAdventureLocation' (0601FC7F). +CELLS: Ref is not in its persistence location 'DLC04WildWestLocation' (0101FB1C). +CELLS: Ref is not in its persistence location 'DLC04WildWestLocation' (0601FB1C). +CELLS: Ref is not in its persistence location 'MysticPinesLocation' (0004E011). +DEFAULT: (Faction Reaction Error) Faction 'DLC03VRDefenseConstructFaction' (0202E020) is a Friend or Ally of Faction 'DLC03VRDefenderFaction' (0200385D), but Faction 'DLC03VRDefenderFaction' (0200385D) is not a Friend or Ally of Faction 'DLC03VRDefenseConstructFaction' (0202E020). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction05' (02024FC1) is a Friend or Ally of Faction 'WorkshopCrimeFaction05' (001EC194), but Faction 'WorkshopCrimeFaction05' (001EC194) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction05' (02024FC1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction04' (02024FC0) is a Friend or Ally of Faction 'WorkshopCrimeFaction04' (001EC193), but Faction 'WorkshopCrimeFaction04' (001EC193) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction04' (02024FC0). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction03' (02024FBF) is a Friend or Ally of Faction 'WorkshopCrimeFaction03' (001EC192), but Faction 'WorkshopCrimeFaction03' (001EC192) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction03' (02024FBF). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction02' (02024FBE) is a Friend or Ally of Faction 'WorkshopCrimeFaction02' (001EC191), but Faction 'WorkshopCrimeFaction02' (001EC191) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction02' (02024FBE). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction01' (02024FBD) is a Friend or Ally of Faction 'WorkshopCrimeFaction01' (001EBAFE), but Faction 'WorkshopCrimeFaction01' (001EBAFE) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction01' (02024FBD). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (020140F1) is a Friend or Ally of Faction 'AnimalFriend02Faction' (00052408), but Faction 'AnimalFriend02Faction' (00052408) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (020140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (020140F1) is a Friend or Ally of Faction 'AnimalFriend01Faction' (00052407), but Faction 'AnimalFriend01Faction' (00052407) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (020140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (020140F1) is a Friend or Ally of Faction 'VertibirdFaction' (001E5F60), but Faction 'VertibirdFaction' (001E5F60) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (020140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (020140F1) is a Friend or Ally of Faction 'CaptiveFaction' (0003E0C8), but Faction 'CaptiveFaction' (0003E0C8) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (020140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03SettlementFarHarborCrimeFaction' (02005C7F) is a Friend or Ally of Faction 'DLC03SettlementFarHarborFaction' (02005C7E), but Faction 'DLC03SettlementFarHarborFaction' (02005C7E) is not a Friend or Ally of Faction 'DLC03SettlementFarHarborCrimeFaction' (02005C7F). +DEFAULT: (Faction Reaction Error) Faction 'DLC03TrapperFactionCoast' (02002DB6) is a Friend or Ally of Faction 'DLC03AtomM01EncounterFaction' (020567C6), but Faction 'DLC03AtomM01EncounterFaction' (020567C6) is not a Friend or Ally of Faction 'DLC03TrapperFactionCoast' (02002DB6). +DEFAULT: (Faction Reaction Error) Faction 'DLC04POISC07_DunmoreVendorFaction' (03042B43) is a Friend or Ally of Faction 'DLC04POISC07_DunmoreFaction' (03042B42), but Faction 'DLC04POISC07_DunmoreFaction' (03042B42) is not a Friend or Ally of Faction 'DLC04POISC07_DunmoreVendorFaction' (03042B43). +DEFAULT: (Faction Reaction Error) Faction 'DLC01CaravanFaction' (0100FEFE) is a Friend or Ally of Faction 'PlayerFaction' (0001C21C), but Faction 'PlayerFaction' (0001C21C) is not a Friend or Ally of Faction 'DLC01CaravanFaction' (0100FEFE). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopArenaCombatantFactionA' (0100085C) is a Friend or Ally of Faction 'WorkshopNPCFaction' (000337F3), but Faction 'WorkshopNPCFaction' (000337F3) is not a Friend or Ally of Faction 'DLC02WorkshopArenaCombatantFactionA' (0100085C). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopArenaCombatantFactionA' (0200085C) is a Friend or Ally of Faction 'WorkshopNPCFaction' (000337F3), but Faction 'WorkshopNPCFaction' (000337F3) is not a Friend or Ally of Faction 'DLC02WorkshopArenaCombatantFactionA' (0200085C). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopArenaCombatantFactionB' (0100085D) is a Friend or Ally of Faction 'WorkshopNPCFaction' (000337F3), but Faction 'WorkshopNPCFaction' (000337F3) is not a Friend or Ally of Faction 'DLC02WorkshopArenaCombatantFactionB' (0100085D). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopArenaCombatantFactionB' (0200085D) is a Friend or Ally of Faction 'WorkshopNPCFaction' (000337F3), but Faction 'WorkshopNPCFaction' (000337F3) is not a Friend or Ally of Faction 'DLC02WorkshopArenaCombatantFactionB' (0200085D). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (01000859) is a Friend or Ally of Faction 'CaravanFaction' (00130B7B), but Faction 'CaravanFaction' (00130B7B) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (01000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (01000859) is a Friend or Ally of Faction 'PlayerAllyFaction' (00106C30), but Faction 'PlayerAllyFaction' (00106C30) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (01000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (01000859) is a Friend or Ally of Faction 'PlayerFaction' (0001C21C), but Faction 'PlayerFaction' (0001C21C) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (01000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (01000859) is a Friend or Ally of Faction 'PlayerFriendFaction' (00106C31), but Faction 'PlayerFriendFaction' (00106C31) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (01000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (01000859) is a Friend or Ally of Faction 'WorkshopNPCFaction' (000337F3), but Faction 'WorkshopNPCFaction' (000337F3) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (01000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (02000859) is a Friend or Ally of Faction 'CaravanFaction' (00130B7B), but Faction 'CaravanFaction' (00130B7B) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (02000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (02000859) is a Friend or Ally of Faction 'PlayerAllyFaction' (00106C30), but Faction 'PlayerAllyFaction' (00106C30) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (02000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (02000859) is a Friend or Ally of Faction 'PlayerFaction' (0001C21C), but Faction 'PlayerFaction' (0001C21C) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (02000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (02000859) is a Friend or Ally of Faction 'PlayerFriendFaction' (00106C31), but Faction 'PlayerFriendFaction' (00106C31) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (02000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC02WorkshopTamedCreatureFaction' (02000859) is a Friend or Ally of Faction 'WorkshopNPCFaction' (000337F3), but Faction 'WorkshopNPCFaction' (000337F3) is not a Friend or Ally of Faction 'DLC02WorkshopTamedCreatureFaction' (02000859). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (010140F1) is a Friend or Ally of Faction 'AnimalFriend01Faction' (00052407), but Faction 'AnimalFriend01Faction' (00052407) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (010140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (010140F1) is a Friend or Ally of Faction 'AnimalFriend02Faction' (00052408), but Faction 'AnimalFriend02Faction' (00052408) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (010140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (010140F1) is a Friend or Ally of Faction 'CaptiveFaction' (0003E0C8), but Faction 'CaptiveFaction' (0003E0C8) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (010140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (010140F1) is a Friend or Ally of Faction 'VertibirdFaction' (001E5F60), but Faction 'VertibirdFaction' (001E5F60) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (010140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (030140F1) is a Friend or Ally of Faction 'AnimalFriend01Faction' (00052407), but Faction 'AnimalFriend01Faction' (00052407) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (030140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (030140F1) is a Friend or Ally of Faction 'AnimalFriend02Faction' (00052408), but Faction 'AnimalFriend02Faction' (00052408) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (030140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (030140F1) is a Friend or Ally of Faction 'CaptiveFaction' (0003E0C8), but Faction 'CaptiveFaction' (0003E0C8) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (030140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03_WolfFaction' (030140F1) is a Friend or Ally of Faction 'VertibirdFaction' (001E5F60), but Faction 'VertibirdFaction' (001E5F60) is not a Friend or Ally of Faction 'DLC03_WolfFaction' (030140F1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03SettlementFarHarborCrimeFaction' (01005C7F) is a Friend or Ally of Faction 'DLC03SettlementFarHarborFaction' (01005C7E), but Faction 'DLC03SettlementFarHarborFaction' (01005C7E) is not a Friend or Ally of Faction 'DLC03SettlementFarHarborCrimeFaction' (01005C7F). +DEFAULT: (Faction Reaction Error) Faction 'DLC03SettlementFarHarborCrimeFaction' (03005C7F) is a Friend or Ally of Faction 'DLC03SettlementFarHarborFaction' (03005C7E), but Faction 'DLC03SettlementFarHarborFaction' (03005C7E) is not a Friend or Ally of Faction 'DLC03SettlementFarHarborCrimeFaction' (03005C7F). +DEFAULT: (Faction Reaction Error) Faction 'DLC03TrapperFactionCoast' (01002DB6) is a Friend or Ally of Faction 'DLC03AtomM01EncounterFaction' (010567C6), but Faction 'DLC03AtomM01EncounterFaction' (010567C6) is not a Friend or Ally of Faction 'DLC03TrapperFactionCoast' (01002DB6). +DEFAULT: (Faction Reaction Error) Faction 'DLC03TrapperFactionCoast' (03002DB6) is a Friend or Ally of Faction 'DLC03AtomM01EncounterFaction' (030567C6), but Faction 'DLC03AtomM01EncounterFaction' (030567C6) is not a Friend or Ally of Faction 'DLC03TrapperFactionCoast' (03002DB6). +DEFAULT: (Faction Reaction Error) Faction 'DLC03VRDefenseConstructFaction' (0102E020) is a Friend or Ally of Faction 'DLC03VRDefenderFaction' (0100385D), but Faction 'DLC03VRDefenderFaction' (0100385D) is not a Friend or Ally of Faction 'DLC03VRDefenseConstructFaction' (0102E020). +DEFAULT: (Faction Reaction Error) Faction 'DLC03VRDefenseConstructFaction' (0302E020) is a Friend or Ally of Faction 'DLC03VRDefenderFaction' (0300385D), but Faction 'DLC03VRDefenderFaction' (0300385D) is not a Friend or Ally of Faction 'DLC03VRDefenseConstructFaction' (0302E020). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction01' (01024FBD) is a Friend or Ally of Faction 'WorkshopCrimeFaction01' (001EBAFE), but Faction 'WorkshopCrimeFaction01' (001EBAFE) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction01' (01024FBD). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction01' (03024FBD) is a Friend or Ally of Faction 'WorkshopCrimeFaction01' (001EBAFE), but Faction 'WorkshopCrimeFaction01' (001EBAFE) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction01' (03024FBD). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction02' (01024FBE) is a Friend or Ally of Faction 'WorkshopCrimeFaction02' (001EC191), but Faction 'WorkshopCrimeFaction02' (001EC191) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction02' (01024FBE). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction02' (03024FBE) is a Friend or Ally of Faction 'WorkshopCrimeFaction02' (001EC191), but Faction 'WorkshopCrimeFaction02' (001EC191) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction02' (03024FBE). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction03' (01024FBF) is a Friend or Ally of Faction 'WorkshopCrimeFaction03' (001EC192), but Faction 'WorkshopCrimeFaction03' (001EC192) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction03' (01024FBF). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction03' (03024FBF) is a Friend or Ally of Faction 'WorkshopCrimeFaction03' (001EC192), but Faction 'WorkshopCrimeFaction03' (001EC192) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction03' (03024FBF). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction04' (01024FC0) is a Friend or Ally of Faction 'WorkshopCrimeFaction04' (001EC193), but Faction 'WorkshopCrimeFaction04' (001EC193) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction04' (01024FC0). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction04' (03024FC0) is a Friend or Ally of Faction 'WorkshopCrimeFaction04' (001EC193), but Faction 'WorkshopCrimeFaction04' (001EC193) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction04' (03024FC0). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction05' (01024FC1) is a Friend or Ally of Faction 'WorkshopCrimeFaction05' (001EC194), but Faction 'WorkshopCrimeFaction05' (001EC194) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction05' (01024FC1). +DEFAULT: (Faction Reaction Error) Faction 'DLC03WorkshopCrimeFaction05' (03024FC1) is a Friend or Ally of Faction 'WorkshopCrimeFaction05' (001EC194), but Faction 'WorkshopCrimeFaction05' (001EC194) is not a Friend or Ally of Faction 'DLC03WorkshopCrimeFaction05' (03024FC1). +DEFAULT: (Faction Reaction Error) Faction 'DLC04POISC07_DunmoreVendorFaction' (01042B43) is a Friend or Ally of Faction 'DLC04POISC07_DunmoreFaction' (01042B42), but Faction 'DLC04POISC07_DunmoreFaction' (01042B42) is not a Friend or Ally of Faction 'DLC04POISC07_DunmoreVendorFaction' (01042B43). +DEFAULT: (Faction Reaction Error) Faction 'DLC04POISC07_DunmoreVendorFaction' (06042B43) is a Friend or Ally of Faction 'DLC04POISC07_DunmoreFaction' (06042B42), but Faction 'DLC04POISC07_DunmoreFaction' (06042B42) is not a Friend or Ally of Faction 'DLC04POISC07_DunmoreVendorFaction' (06042B43). +DEFAULT: DEFAULT: Setting key 'fMouseScale:General' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'fMinMouseScale:General' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'bSkipProgramFlows:MESSAGES' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'bSkipInitializationFlows:MESSAGES' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'sResourcePrefixList:Archive' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'uMaterialCount:BudgetCaps' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'fMaxDistanceMoved:Pathfinding' already used in list.Setting keys must be unique. +DEFAULT: DEFAULT: Setting key 'fTessFactorMaxDistanceScale:Display' already used in list.Setting keys must be unique. +DIALOGUE: Info (01042AF0) in quest 'DLC04POISC07Dialogue' uses shared info 'DN049_Player_JustBrowsing' (00046C3E) in non-starts enabled or potentially dormant quest 'DN049' (0004542B) +DIALOGUE: Info (06042AF0) in quest 'DLC04POISC07Dialogue' uses shared info 'DN049_Player_JustBrowsing' (00046C3E) in non-starts enabled or potentially dormant quest 'DN049' (0004542B) +EDITOR: Editor ID 'AnimObjectFish' for ANIO (060341A3) is not unique, previous object (0300C6AA) is type ANIO. Editor ID will be set to 'AnimObjectFishDUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Creepy_256_031' for REFR (0604AB57) is not unique, previous object (0304A672) is type REFR. Editor ID will be set to 'AO_Comment_Creepy_256_031DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Dusty_256_005' for REFR (0604ABA7) is not unique, previous object (0304A65F) is type REFR. Editor ID will be set to 'AO_Comment_Dusty_256_005DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Dusty_512_012' for REFR (03056667) is not unique, previous object (0100F656) is type REFR. Editor ID will be set to 'AO_Comment_Dusty_512_012DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Dusty_512_012' for REFR (0604AB54) is not unique, previous object (0100F656) is type REFR. Editor ID will be set to 'AO_Comment_Dusty_512_012DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Exposed_512_015' for REFR (0604ABAB) is not unique, previous object (0304A66F) is type REFR. Editor ID will be set to 'AO_Comment_Exposed_512_015DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Gory_256_019' for REFR (06048918) is not unique, previous object (0304A65E) is type REFR. Editor ID will be set to 'AO_Comment_Gory_256_019DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Smelly_1024_008' for REFR (06053866) is not unique, previous object (0305666F) is type REFR. Editor ID will be set to 'AO_Comment_Smelly_1024_008DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Smelly_256_029' for REFR (0604AAFA) is not unique, previous object (0304A670) is type REFR. Editor ID will be set to 'AO_Comment_Smelly_256_029DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Smelly_512_012' for REFR (0604ABA8) is not unique, previous object (0304A66B) is type REFR. Editor ID will be set to 'AO_Comment_Smelly_512_012DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_005' for REFR (060520E5) is not unique, previous object (0304D6B1) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_005DUPLICATE002'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_011' for REFR (06053852) is not unique, previous object (0304A666) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_011DUPLICATE002'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_110' for REFR (06053854) is not unique, previous object (0304A668) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_110DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_112' for REFR (06053855) is not unique, previous object (0304A669) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_112DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_113' for REFR (06053856) is not unique, previous object (03056664) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_113DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_114' for REFR (06053857) is not unique, previous object (0305666B) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_114DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_115' for REFR (06053858) is not unique, previous object (0305666C) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_115DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_256_003' for REFR (0604C797) is not unique, previous object (0304A664) is type REFR. Editor ID will be set to 'AO_Comment_Unique_256_003DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Unique_256_004' for REFR (0604C798) is not unique, previous object (0304D6B7) is type REFR. Editor ID will be set to 'AO_Comment_Unique_256_004DUPLICATE002'. +EDITOR: Editor ID 'AO_Comment_Unique_512_032' for REFR (060520E6) is not unique, previous object (0304A65D) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_032DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_041' for REFR (0604C79A) is not unique, previous object (0304A661) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_041DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_042' for REFR (0604C79B) is not unique, previous object (0304A665) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_042DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_043' for REFR (0604C7A0) is not unique, previous object (0304D6B5) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_043DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_044' for REFR (060520EA) is not unique, previous object (0304D6B6) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_044DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_046' for REFR (06053853) is not unique, previous object (030566AD) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_046DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Watery_1024_008' for REFR (0605385C) is not unique, previous object (0304A66C) is type REFR. Editor ID will be set to 'AO_Comment_Watery_1024_008DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Watery_256_022' for REFR (0605385A) is not unique, previous object (0304A663) is type REFR. Editor ID will be set to 'AO_Comment_Watery_256_022DUPLICATE000'. +EDITOR: Editor ID 'ap_bot_HeadArmorRoboBrain' for KYWD (03036745) is not unique, previous object (01004F39) is type KYWD. Editor ID will be set to 'ap_bot_HeadArmorRoboBrainDUPLICATE000'. +EDITOR: Editor ID 'ap_bot_HomingMod' for KYWD (03036742) is not unique, previous object (0100837F) is type KYWD. Editor ID will be set to 'ap_bot_HomingModDUPLICATE000'. +EDITOR: Editor ID 'ap_bot_ModArmLeftRoboBrainArmor' for KYWD (03036744) is not unique, previous object (01004F30) is type KYWD. Editor ID will be set to 'ap_bot_ModArmLeftRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_bot_ModArmRightRoboBrainArmor' for KYWD (03036743) is not unique, previous object (01004F31) is type KYWD. Editor ID will be set to 'ap_bot_ModArmRightRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_ModHandLeftRoboBrainArmor' for KYWD (03034DBE) is not unique, previous object (01004F37) is type KYWD. Editor ID will be set to 'ap_Bot_ModHandLeftRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_ModHandRightRoboBrainArmor' for KYWD (03034DBF) is not unique, previous object (01004F38) is type KYWD. Editor ID will be set to 'ap_Bot_ModHandRightRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_RoboBrainBackTorsoArmor' for KYWD (03034DC0) is not unique, previous object (01003625) is type KYWD. Editor ID will be set to 'ap_Bot_RoboBrainBackTorsoArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_RoboBrainFrontTorsoArmor' for KYWD (03034DC1) is not unique, previous object (01003623) is type KYWD. Editor ID will be set to 'ap_Bot_RoboBrainFrontTorsoArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_RoboBrainWaistArmor' for KYWD (03034DC2) is not unique, previous object (01003627) is type KYWD. Editor ID will be set to 'ap_Bot_RoboBrainWaistArmorDUPLICATE000'. +EDITOR: Editor ID 'BarnOuthouse01' for STAT (06044627) is not unique, previous object (030041AE) is type STAT. Editor ID will be set to 'BarnOuthouse01DUPLICATE000'. +EDITOR: Editor ID 'BarnOuthouseDoor01' for DOOR (06044629) is not unique, previous object (030041B5) is type DOOR. Editor ID will be set to 'BarnOuthouseDoor01DUPLICATE000'. +EDITOR: Editor ID 'BarnOuthouseDoorStatic01' for STAT (06044628) is not unique, previous object (030041AF) is type STAT. Editor ID will be set to 'BarnOuthouseDoorStatic01DUPLICATE000'. +EDITOR: Editor ID 'Critters' for LAYR (0602022C) is not unique, previous object (03053D63) is type LAYR. Editor ID will be set to 'CrittersDUPLICATE000'. +EDITOR: Editor ID 'CtestBedRef001' for REFR (0304FBE7) is not unique, previous object (02000C14) is type REFR. Editor ID will be set to 'CtestBedRef001DUPLICATE000'. +EDITOR: Editor ID 'CtestBedRef001' for REFR (04000B83) is not unique, previous object (02000C14) is type REFR. Editor ID will be set to 'CtestBedRef001DUPLICATE001'. +EDITOR: Editor ID 'Entrance' for LAYR (050015F3) is not unique, previous object (0301D28C) is type LAYR. Editor ID will be set to 'EntranceDUPLICATE001'. +EDITOR: Editor ID 'NewLightsDUPLICATE000' for LAYR (06045A55) is not unique, previous object (010092D5) is type LAYR. Editor ID will be set to 'NewLightsDUPLICATE000DUPLICATE000'. +EDITOR: Editor ID 'NewmachinesDUPLICATE007' for LAYR (0603D254) is not unique, previous object (010093BE) is type LAYR. Editor ID will be set to 'NewmachinesDUPLICATE007DUPLICATE001'. +EDITOR: Editor ID 'OldlightsDUPLICATE001' for LAYR (06045A54) is not unique, previous object (010092D4) is type LAYR. Editor ID will be set to 'OldlightsDUPLICATE001DUPLICATE000'. +EDITOR: Editor ID 'TestCory01' for CELL (0300291A) is not unique, previous object (0100112A) is type CELL. Editor ID will be set to 'TestCory01DUPLICATE000'. +EDITOR: Editor ID 'TestCory01' for CELL (0400095A) is not unique, previous object (0100112A) is type CELL. Editor ID will be set to 'TestCory01DUPLICATE001'. +EDITOR: Editor ID 'TestCory01' for CELL (0600F9A9) is not unique, previous object (0100112A) is type CELL. Editor ID will be set to 'TestCory01DUPLICATE002'. +EDITOR: Editor ID 'testJeffb1' for REFR (060439F9) is not unique, previous object (0100878B) is type REFR. Editor ID will be set to 'testJeffb1DUPLICATE000'. +EDITOR: Editor ID 'testJeffB2' for REFR (06048A92) is not unique, previous object (01004142) is type REFR. Editor ID will be set to 'testJeffB2DUPLICATE000'. +EDITOR: Editor ID 'TestTony' for CELL (03008831) is not unique, previous object (01002623) is type CELL. Editor ID will be set to 'TestTonyDUPLICATE000'. +EDITOR: Editor ID 'WorkshopPowerConnection' for KYWD (00054BA4) is not unique, previous object (000002D0) is type AVIF. Editor ID will be set to 'WorkshopPowerConnectionDUPLICATE000'. +EDITOR: Editor ID 'xxx' for PACK (0600A681) is not unique, previous object (0100C571) is type NPC_. Editor ID will be set to 'xxxDUPLICATE000'. +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint21.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint21.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint22.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint22.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint23.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint23.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint24.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint24.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint25.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint25.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint26.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint26.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint27.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint27.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint28.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint28.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint29.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint29.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint30.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint30.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint31.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint31.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint32.dds' on race 'HumanRace' (00013746) +FORMS: Could not find face customization texture 'DLC03\Actors\Character\Character Assets\TintMasks\FacePaint32.dds' on race 'TestDLC04AnimatronicHumanRace' (0100EFF4) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03_UnarmedWolf (01043224) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03_UnarmedWolf (03043224) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballBlueLeft (0105D0B1) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballBlueLeft (0305D0B1) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballBlueRight (0105D0B0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballBlueRight (0305D0B0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballGreenLeft (0105D0B3) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballGreenLeft (0305D0B3) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballGreenRight (0105D0B4) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballGreenRight (0305D0B4) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballOrangeLeft (0105D0B5) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballOrangeLeft (0305D0B5) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballOrangeRight (0105D0B6) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballOrangeRight (0305D0B6) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballRedLeft (0105D0B7) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballRedLeft (0305D0B7) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballRedRight (0105D0B8) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballRedRight (0305D0B8) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballWhiteLeft (0105D0B9) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballWhiteLeft (0305D0B9) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballWhiteRight (0105D0BA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballWhiteRight (0305D0BA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballYellowLeft (0105D0BB) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballYellowLeft (0305D0BB) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballYellowRight (0105D0BC) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballYellowRight (0305D0BC) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04_TurretMountedLaserGunSpaceBlue (0104BEFC) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04_TurretMountedLaserGunSpaceBlue (0604BEFC) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04AnimatronicAlienGun (0101FAAA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04AnimatronicAlienGun (0601FAAA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04AnimatronicAlienWeapon (0101FAB0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04AnimatronicAlienWeapon (0601FAB0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Melee_Nira_Left (01047DFF) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Melee_Nira_Left (06047DFF) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Melee_Nira_Right (01047E00) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Melee_Nira_Right (06047E00) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01LeftArmLaserGun (01044C60) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01LeftArmLaserGun (06044C60) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01LeftArmLaserGun_Blue (0104A1BD) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01LeftArmLaserGun_Blue (0604A1BD) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01RightArmLaserGun (01044C61) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01RightArmLaserGun (06044C61) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01RightArmLaserGun_Blue (0104A1BE) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01RightArmLaserGun_Blue (0604A1BE) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftAutoLaser (01044F0D) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftAutoLaser (06044F0D) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftAutoLaser_Blue (0104A1BF) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftAutoLaser_Blue (0604A1BF) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftShoulderClusterLauncher (0104A37F) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftShoulderClusterLauncher (0604A37F) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightAutoLaser (01044F0E) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightAutoLaser (06044F0E) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightAutoLaser_Blue (0104A1C0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightAutoLaser_Blue (0604A1C0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightShoulderClusterLauncher (0104A380) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightShoulderClusterLauncher (0604A380) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperCherryLeft (01044C65) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperCherryLeft (06044C65) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperCherryRight (01044C66) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperCherryRight (06044C66) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperQuantumLeft (01044C67) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperQuantumLeft (06044C67) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperQuantumRight (01044C68) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperQuantumRight (06044C68) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04MrGutsy_LaserGun_Right (0101FAA9) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04MrGutsy_LaserGun_Right (0601FAA9) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04RaiderOverboss_FragGrenadeSingleNP (0104A619) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04RaiderOverboss_FragGrenadeSingleNP (0604A619) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon VRWorkshopShared_Flamer_NonPlayable (0024A3A6) +FORMS: DOOR: Reference MetalTrapdoor01 001B9AE2 has portal to navmesh 0104F4D3 which is not found. Please finalize navmesh in cell Wilderness 0000DFB7 to resolve this. +FORMS: Movement type ID 'Angler' for movement type 'DLC03Angler_Default_MT' (0102016B) is already in use by movement type 'DLC03RadChicken_Default_MT' (01043328). One of these needs its Material Name changed. +FORMS: Movement type ID 'Angler' for movement type 'DLC03Angler_Default_MT' (0302016B) is already in use by movement type 'DLC03RadChicken_Default_MT' (03043328). One of these needs its Material Name changed. +FORMS: Movement type ID 'Angler' for movement type 'DLC03RadRabbit_Default_MT' (01043327) is already in use by movement type 'DLC03RadChicken_Default_MT' (01043328). One of these needs its Material Name changed. +FORMS: Movement type ID 'Angler' for movement type 'DLC03RadRabbit_Default_MT' (03043327) is already in use by movement type 'DLC03RadChicken_Default_MT' (03043328). One of these needs its Material Name changed. +FORMS: Movement type ID 'Robobrain' for movement type 'DLC03RoboBrain_Default_MT' (0303DB70) is already in use by movement type 'DLC01RoboBrain_Default_MT' (01001120). One of these needs its Material Name changed. +FORMS: Movement type ID 'RoboBrainCrippled' for movement type 'DLC03RoboBrain_Crippled_MT' (03042526) is already in use by movement type 'DLC01RoboBrain_Crippled_MT' (0100363B). One of these needs its Material Name changed. +FORMS: No match for tinting entry 1763 in NPC 'DN123_NessMercenary01' (0004B36C) +FORMS: No match for tinting entry 1763 in NPC 'EmogeneCabotYoung' (001A0094) +FORMS: Non-parent LAYR form 'Fog' (00189000) exists in both file 'DLCNukaWorld.esm' and 'DLCCoast.esm' +FORMS: Non-parent LCTN form 'CommonwealthLocation' (00002CF0) exists in both file 'DLCCoast.esm' and 'DLCRobot.esm' +FORMS: Non-parent LCTN form 'PersistAllLocation' (0002178D) exists in both file 'DLCNukaWorld.esm' and 'DLCCoast.esm' +FORMS: Non-parent LCTN form 'VirtualLocation' (0002178E) exists in both file 'DLCNukaWorld.esm' and 'DLCRobot.esm' +FORMS: Non-parent NAVI form '' (00000FF1) exists in both file 'DLCCoast.esm' and 'DLCRobot.esm' +FORMS: Non-parent NAVI form '' (00000FF1) exists in both file 'DLCNukaWorld.esm' and 'DLCRobot.esm' +FORMS: Non-parent NAVI form '' (00000FF1) exists in both file 'DLCworkshop01.esm' and 'DLCRobot.esm' +FORMS: Non-parent NAVI form '' (00000FF1) exists in both file 'DLCworkshop02.esm' and 'DLCRobot.esm' +FORMS: Non-parent NAVI form '' (00000FF1) exists in both file 'DLCWorkshop03.esm' and 'DLCRobot.esm' +FORMS: Non-parent SMBN form 'RESpecialEvents' (0002FD71) exists in both file 'DLCNukaWorld.esm' and 'DLCCoast.esm' +FORMS: Non-parent SMBN form 'WorkshopScriptEvents' (0004643F) exists in both file 'DLCNukaWorld.esm' and 'DLCRobot.esm' +FORMS: Non-parent SMBN form 'WorkshopScriptEvents' (0004643F) exists in both file 'DLCworkshop01.esm' and 'DLCRobot.esm' +FORMS: Non-parent SMQN form 'WorkshopAttackNode' (000250E6) exists in both file 'DLCCoast.esm' and 'DLCRobot.esm' +FORMS: Non-parent SMQN form 'WorkshopAttackNode' (000250E6) exists in both file 'DLCNukaWorld.esm' and 'DLCRobot.esm' +FORMS: Non-parent SMQN form 'WorkshopAttackNode' (000250E6) exists in both file 'DLCworkshop01.esm' and 'DLCRobot.esm' +FORMS: Non-parent SMQN form 'WorkshopAttackNode' (000250E6) exists in both file 'DLCWorkshop03.esm' and 'DLCRobot.esm' +FORMS: Package action 1 in scene 'z013_MQ104_MemoryDen' (000393DD) has no packages in its list +FORMS: Package action 14 in scene 'DN092_EntryCombatScene' (0001D80A) has no packages in its list +FORMS: Package action 23 in scene 'REObjectRJ02Scene01' (001AC74D) has no packages in its list +FORMS: Package action 28 in scene 'MVIFatherStage10Scene' (00079587) has no packages in its list +FORMS: Scene '001a_MS07EllieIntrosEarlSterling' (0013C2F7) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '001b_MS07NickEllieEarlSterlingScene' (0005FE3F) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '003b_OpenCyropodScene' (000A24C5) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '004b_NickEllieMartyScene' (0005FE40) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '005_MS07EllieTransitionFromAToB' (00192828) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'AO_Companion_Bar_Switchboard' (000424D2) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'BoSM01_Brandis_100C' (000B3D78) has multiple actions that share ID 10 +FORMS: Scene 'BoSM01_Brandis_100C' (000B3D78) has multiple actions that share ID 12 +FORMS: Scene 'BoSM01_Brandis_100D' (000B3D79) has multiple actions that share ID 6 +FORMS: Scene 'BoSM01PostquestStage25_Main' (000B35BF) has multiple actions that share ID 4 +FORMS: Scene 'BoSM01PostquestStage25_Main' (000B35BF) has multiple actions that share ID 5 +FORMS: Scene 'BoSM02_ClarkeStage260_Main09' (000BDCDC) has multiple actions that share ID 5 +FORMS: Scene 'BoSM02_Kells_Stage400_Main2' (000BDA52) has multiple actions that share ID 7 +FORMS: Scene 'BoSM02_Kells_Stage400_Main3' (000BDA53) has multiple actions that share ID 9 +FORMS: Scene 'CathyGreetSceneTrailoff02' (0013A440) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'ConvDiamondCityGenericNPC04Scene' (00022ED1) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'ConvDiamondCityGenericNPC06Scene' (00022ED3) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'CZ_Arena_Combat_Pre_A' (0010C017) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'CZ_Arena_Combat_Pre_B' (0002347D) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'CZ_Arena_Combat_StartFight_B' (00023484) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC03_ADV017_BuyDog' (0104B64C) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyDog' (0304B64C) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyFEVHound' (0104B64E) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyFEVHound' (0304B64E) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyWolf' (0104B64D) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyWolf' (0304B64D) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017PathToCamp' (0104E769) has multiple actions that share ID 5 +FORMS: Scene 'DLC03_ADV017PathToCamp' (0304E769) has multiple actions that share ID 5 +FORMS: Scene 'DLC03_V118_QuestIntroGildaKeithWait' (01045CE0) has multiple actions that share ID 15 +FORMS: Scene 'DLC03_V118_QuestIntroGildaKeithWait' (01045CE0) has multiple actions that share ID 16 +FORMS: Scene 'DLC03_V118_QuestIntroGildaKeithWait' (03045CE0) has multiple actions that share ID 15 +FORMS: Scene 'DLC03_V118_QuestIntroGildaKeithWait' (03045CE0) has multiple actions that share ID 16 +FORMS: Scene 'DLC03_V118_QuestIntroJuliannaBertWait' (01045CE1) has multiple actions that share ID 7 +FORMS: Scene 'DLC03_V118_QuestIntroJuliannaBertWait' (01045CE1) has multiple actions that share ID 8 +FORMS: Scene 'DLC03_V118_QuestIntroJuliannaBertWait' (03045CE1) has multiple actions that share ID 7 +FORMS: Scene 'DLC03_V118_QuestIntroJuliannaBertWait' (03045CE1) has multiple actions that share ID 8 +FORMS: Scene 'DLC03MQ02_0650c_PreacherKilled' (0104D2F4) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC03MQ02_0650c_PreacherKilled' (0304D2F4) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC03MQ06a_DiMAHCScene' (01038A7D) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC03MQ06a_DiMAHCScene' (03038A7D) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC04_KiddieKingdomWall' (01048644) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC04_KiddieKingdomWall' (06048644) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC06MQ03_150_AtValeryArea' (01005146) has multiple actions that share ID 10 +FORMS: Scene 'DLC06MQ03_150_AtValeryArea' (01005146) has multiple actions that share ID 11 +FORMS: Scene 'DLC06MQ03_150_AtValeryArea' (05005146) has multiple actions that share ID 10 +FORMS: Scene 'DLC06MQ03_150_AtValeryArea' (05005146) has multiple actions that share ID 11 +FORMS: Scene 'DLC06MQ03_ReactCandidates' (01005E91) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC06MQ03_ReactCandidates' (05005E91) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC06MQ03_ReactDesk' (01005E90) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC06MQ03_ReactDesk' (05005E90) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DN154_Arlen_020_Intro02' (000ED3CB) has multiple actions that share ID 17 +FORMS: Scene 'DN154_Arlen_020_Intro04' (000ED3CD) has multiple actions that share ID 6 +FORMS: Scene 'DN154_Arlen_215_AtomatoysCleared' (000BFB3A) has multiple actions that share ID 5 +FORMS: Scene 'DN154_Arlen_215_AtomatoysCleared' (000BFB3A) has multiple actions that share ID 6 +FORMS: Scene 'FFDiamondCity07MQ103Branch' (00095431) has multiple actions that share ID 4 +FORMS: Scene 'InstM03OpenHydroDoor1' (000BE7F6) has multiple actions that share ID 6 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 27 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 28 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 29 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 30 +FORMS: Scene 'Min01PrestonOutroFinal' (000B140E) has multiple actions that share ID 4 +FORMS: Scene 'Min01PrestonOutroFinal' (000B140E) has multiple actions that share ID 7 +FORMS: Scene 'Min01SturgesNextObjectiveFood' (0007303F) has multiple actions that share ID 2 +FORMS: Scene 'Min03RonnieArmoryScene02' (0012E2CC) has multiple actions that share ID 9 +FORMS: Scene 'Min03RonnieInsideArmoryDoorNEW' (0012EFA5) has multiple actions that share ID 8 +FORMS: Scene 'MinRadiantOwned10ShootSynthScene' (00109DD5) has multiple actions that share ID 10 +FORMS: Scene 'MinutemenRadioMainLoop' (0009FF46) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MQ202_010_MemoryLounger' (0016897A) has multiple actions that share ID 8 +FORMS: Scene 'MQ202_010_MemoryLounger' (0016897A) has multiple actions that share ID 9 +FORMS: Scene 'MQ203AmariVoiceoverScene' (000E2B06) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MQ206MinTeleportScene' (000CF9CB) has multiple actions that share ID 5 +FORMS: Scene 'MQ206RR_004_TinkerTomPlatformBuilt' (000D101C) has multiple actions that share ID 6 +FORMS: Scene 'MS05B_PoppaWatchesScene' (00168600) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS05B_TurnInEggToWellingham01_WrapUp' (001685EA) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07b_002_NickSeesMartyCorpse' (00196AC4) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07b_003_ApproachFanueilHall' (00061511) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07b_004_NickMartyCommentScene' (00061514) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_004_OpeningBunker' (0014BF21) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_005_StartledEddie' (0014F65E) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_006_EddieShouts' (00198911) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_011_EddieDead' (000DD38C) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_012_NickGraveScene' (0014BF2E) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_012a_NickGraveSceneBailOut' (00184408) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 10 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 11 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 12 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 13 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 9 +FORMS: Scene 'MS09ParsonsBossRoomFreeLorenzo' (00077ED9) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS09ParsonsBossRoomFreeLorenzoChoice' (001A8C4C) has multiple actions that share ID 7 +FORMS: Scene 'MS09ParsonsBossRoomRaidersLooping' (001A7CCA) has multiple actions that share ID 6 +FORMS: Scene 'MS09ParsonsBossRoomRaidersLooping' (001A7CCA) has multiple actions that share ID 7 +FORMS: Scene 'RadioDiamondCityNewsScene07_MQ302' (001764B7) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'RadioDiamondCityNewsScene45_RR303' (001764DC) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'REAssaultSC01_Stage110C_NessExplain1' (000CB2AC) has multiple actions that share ID 12 +FORMS: Scene 'RelayTower12Scene' (001A0D2C) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'RR303_0825_ApproachPrydwen' (00046AA6) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'zzRadioDiamondCitySilverShroudScene01' (00036FE0) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Unable to find preview transform (01000EB7) for 'LS_DLC01_WorkbenchRobot' (01000EB6). +LOOTJOY: Unable to find default template item for Bound Object 'MQ302InstituteBoss01' (001cfb17). First Object Template Item used. +LOOTJOY: Unable to find default template item for Bound Object 'MQ302InstituteBoss02' (001cfb18). First Object Template Item used. +LOOTJOY: Unable to find default template item for Bound Object 'MQ302InstituteBoss03' (001cfb19). First Object Template Item used. +LOOTJOY: Unable to find default template item for Bound Object 'WorkshopTurretLaser' (0019a7f2). First Object Template Item used. +MAGIC: Magic Item (00000827) 'HC_SleepEffect_Rested' has no effects defined. +MAGIC: Magic Item (0000087B) 'HC_ThirstEffect_Hydrated' has no effects defined. +MAGIC: Magic Item (01007528) 'DLC03VRDataRetrieverAbility' has no effects defined. +MAGIC: Magic Item (03007528) 'DLC03VRDataRetrieverAbility' has no effects defined. +MASTERFILE: *** Cell DLC01Caravan (0000DF5D) combined data is owned by file DLCRobot.esm due to ref CampFireMed01_Off_Blocks (0100FEBB) +MASTERFILE: *** Cell DLC01LairExt (0000E017) combined data is owned by file DLCRobot.esm due to ref DecoMainA1x1Cor02 (01007EF7) +MASTERFILE: *** Cell DLC03NakanoMapMarkerCell (0000D907) combined data is owned by file DLCCoast.esm due to ref BeachGrassBluffLarge (0022BB94) +MASTERFILE: *** Cell DLC04TransitCenterExt (0000DF77) combined data is owned by file DLCNukaWorld.esm due to ref PrivetHedgePostWar01 (0100A7C0) +MASTERFILE: *** Cell DLC04TransitCenterExt (0000DF77) combined data is owned by file DLCNukaWorld.esm due to ref PrivetHedgePostWar01 (0600A7C0) +MASTERFILE: *** Cell DLC04TransitCenterExt02 (0000DF78) combined data is owned by file DLCNukaWorld.esm due to ref RWBridgeRive01 (0100A7BD) +MASTERFILE: *** Cell DLC04TransitCenterExt02 (0000DF78) combined data is owned by file DLCNukaWorld.esm due to ref RWBridgeRive01 (0600A7BD) +MASTERFILE: *** Cell DLC04TransitCenterExt03 (0000DF99) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x1CorWall01 (0100A80C) +MASTERFILE: *** Cell DLC04TransitCenterExt03 (0000DF99) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x1CorWall01 (0600A80C) +MASTERFILE: *** Cell DLC04TransitCenterExt04 (0000DF98) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x2Wall01a (0100A7F8) +MASTERFILE: *** Cell DLC04TransitCenterExt04 (0000DF98) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x2Wall01a (0600A7F8) +MASTERFILE: *** Cell DmndValentines01 (00001E47) combined data is owned by file DLCCoast.esm due to ref DLC03MQ01NakanoCase (010141AB) +MASTERFILE: *** Cell DmndValentines01 (00001E47) combined data is owned by file DLCCoast.esm due to ref DLC03MQ01NakanoCase (030141AB) +MASTERFILE: *** Cell EastBostonPrepSchoolExt (0000DBBB) combined data is owned by file DLCRobot.esm due to ref SignRestricted01 (01008393) +MASTERFILE: *** Cell FortHagenSatelliteArrayExt (0000E43A) combined data is owned by file DLCRobot.esm due to ref ShackMetalWallFlat01 (01004CDC) +MASTERFILE: *** Cell FortHagenSatelliteArrayExt02 (0000E439) combined data is owned by file DLCRobot.esm due to ref LvlSentryBot_LevelGated (0023E55A) +MASTERFILE: *** Cell GeneralAtomicsFactory01 (0004280D) combined data is owned by file DLCRobot.esm due to ref DLC01LvlMechMrHandy (0100FF9D) +MASTERFILE: *** Cell GlowingSeaCrater (0000E7D6) combined data is owned by file DLCCoast.esm due to ref NPCKneelSit (00245936) +MASTERFILE: *** Cell POIRJ13 (0000D908) combined data is owned by file DLCCoast.esm due to ref FishDead02 (000D347C) +MASTERFILE: *** Cell QASmoke (0001F7A9) combined data is owned by file DLCNukaWorld.esm due to ref FancyTableDinner01 (0603C0EE) +MASTERFILE: *** Cell QuincyQuarriesExt02 (0000E2A8) combined data is owned by file DLCWorkshop03.esm due to ref QrySlabRubble02 (01003CC7) +MASTERFILE: *** Cell QuincyQuarriesExt02 (0000E2A8) combined data is owned by file DLCWorkshop03.esm due to ref QrySlabRubble02 (05003CC7) +MASTERFILE: *** Cell QuincyQuarriesExt03 (0000E289) combined data is owned by file DLCWorkshop03.esm due to ref QrySlabRubble02 (010011FA) +MASTERFILE: *** Cell QuincyQuarriesExt03 (0000E289) combined data is owned by file DLCWorkshop03.esm due to ref QrySlabRubble02 (050011FA) +MASTERFILE: *** Cell QuincyQuarriesExt04 (0000E28A) combined data is owned by file DLCWorkshop03.esm due to ref RadiationHazardLight2048 (001A31E8) +MASTERFILE: *** Cell RailroadHQ01 (00092B21) combined data is owned by file DLCCoast.esm due to ref DLC03RailroadContactRef (0102F3FF) +MASTERFILE: *** Cell RailroadHQ01 (00092B21) combined data is owned by file DLCCoast.esm due to ref DLC03RailroadContactRef (0302F3FF) +MASTERFILE: *** Cell UniversityPointExt02 (0000E1ED) combined data is owned by file DLCWorkshop03.esm due to ref DecoBaseA1x1CorStairs01 (01003CD8) +MASTERFILE: *** Cell UniversityPointExt02 (0000E1ED) combined data is owned by file DLCWorkshop03.esm due to ref DecoBaseA1x1CorStairs01 (05003CD8) +MASTERFILE: *** Cell WattzExt01 (0000DF5E) combined data is owned by file DLCRobot.esm due to ref TreeElmTree01Static (00215906) +MASTERFILE: *** Cell Wilderness (000083B1) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Low01 (01032B6E) +MASTERFILE: *** Cell Wilderness (000083B1) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Low01 (03032B6E) +MASTERFILE: *** Cell Wilderness (000083DC) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (01032A2D) +MASTERFILE: *** Cell Wilderness (000083DC) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (03032A2D) +MASTERFILE: *** Cell Wilderness (000083DE) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_LargeCorner01 (01032AF3) +MASTERFILE: *** Cell Wilderness (000083DE) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_LargeCorner01 (03032AF3) +MASTERFILE: *** Cell Wilderness (0000D84E) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (01021C40) +MASTERFILE: *** Cell Wilderness (0000D84E) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (03021C40) +MASTERFILE: *** Cell Wilderness (0000D86D) combined data is owned by file DLCCoast.esm due to ref BeachFence_Broken01 (0101FF6A) +MASTERFILE: *** Cell Wilderness (0000D86D) combined data is owned by file DLCCoast.esm due to ref BeachFence_Broken01 (0301FF6A) +MASTERFILE: *** Cell Wilderness (0000D886) combined data is owned by file DLCCoast.esm due to ref TreeCluster02 (01021D7A) +MASTERFILE: *** Cell Wilderness (0000D886) combined data is owned by file DLCCoast.esm due to ref TreeCluster02 (03021D7A) +MASTERFILE: *** Cell Wilderness (0000D887) combined data is owned by file DLCCoast.esm due to ref TreeCluster03 (01021D76) +MASTERFILE: *** Cell Wilderness (0000D887) combined data is owned by file DLCCoast.esm due to ref TreeCluster03 (03021D76) +MASTERFILE: *** Cell Wilderness (0000D88D) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (01021C45) +MASTERFILE: *** Cell Wilderness (0000D88D) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (03021C45) +MASTERFILE: *** Cell Wilderness (0000D88F) combined data is owned by file DLCCoast.esm due to ref TreeClusterDead03 (0021F1C1) +MASTERFILE: *** Cell Wilderness (0000D890) combined data is owned by file DLCCoast.esm due to ref DeerFenceSCLg03Curve (01032B33) +MASTERFILE: *** Cell Wilderness (0000D890) combined data is owned by file DLCCoast.esm due to ref DeerFenceSCLg03Curve (03032B33) +MASTERFILE: *** Cell Wilderness (0000D891) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Low01 (01032CCE) +MASTERFILE: *** Cell Wilderness (0000D891) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Low01 (03032CCE) +MASTERFILE: *** Cell Wilderness (0000D8A0) combined data is owned by file DLCCoast.esm due to ref TreeCluster06 (01032D00) +MASTERFILE: *** Cell Wilderness (0000D8A0) combined data is owned by file DLCCoast.esm due to ref TreeCluster06 (03032D00) +MASTERFILE: *** Cell Wilderness (0000D8A1) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast02 (01032C98) +MASTERFILE: *** Cell Wilderness (0000D8A1) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast02 (03032C98) +MASTERFILE: *** Cell Wilderness (0000D8A4) combined data is owned by file DLCCoast.esm due to ref TreeCluster01 (01021D81) +MASTERFILE: *** Cell Wilderness (0000D8A4) combined data is owned by file DLCCoast.esm due to ref TreeCluster01 (03021D81) +MASTERFILE: *** Cell Wilderness (0000D8AA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast01 (01002932) +MASTERFILE: *** Cell Wilderness (0000D8AA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast01 (03002932) +MASTERFILE: *** Cell Wilderness (0000D8AB) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastShort02 (0104F4F2) +MASTERFILE: *** Cell Wilderness (0000D8AB) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastShort02 (0304F4F2) +MASTERFILE: *** Cell Wilderness (0000D8AC) combined data is owned by file DLCCoast.esm due to ref TreeCluster08 (01021E10) +MASTERFILE: *** Cell Wilderness (0000D8AC) combined data is owned by file DLCCoast.esm due to ref TreeCluster08 (03021E10) +MASTERFILE: *** Cell Wilderness (0000D8AD) combined data is owned by file DLCCoast.esm due to ref RockCliff05 (01021D14) +MASTERFILE: *** Cell Wilderness (0000D8AD) combined data is owned by file DLCCoast.esm due to ref RockCliff05 (03021D14) +MASTERFILE: *** Cell Wilderness (0000D8AE) combined data is owned by file DLCCoast.esm due to ref TreeStump04 (01021D39) +MASTERFILE: *** Cell Wilderness (0000D8AE) combined data is owned by file DLCCoast.esm due to ref TreeStump04 (03021D39) +MASTERFILE: *** Cell Wilderness (0000D8AF) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Large02 (01032B36) +MASTERFILE: *** Cell Wilderness (0000D8AF) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Large02 (03032B36) +MASTERFILE: *** Cell Wilderness (0000D8C5) combined data is owned by file DLCCoast.esm due to ref SkeletonBareBody01 (01021C29) +MASTERFILE: *** Cell Wilderness (0000D8C5) combined data is owned by file DLCCoast.esm due to ref SkeletonBareBody01 (03021C29) +MASTERFILE: *** Cell Wilderness (0000D8C6) combined data is owned by file DLCCoast.esm due to ref DLC03InvColBox256 (01057745) +MASTERFILE: *** Cell Wilderness (0000D8C6) combined data is owned by file DLCCoast.esm due to ref DLC03InvColBox256 (03057745) +MASTERFILE: *** Cell Wilderness (0000D8C8) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastSlab (00159376) +MASTERFILE: *** Cell Wilderness (0000D8C9) combined data is owned by file DLCCoast.esm due to ref CoastBeach01 (01020870) +MASTERFILE: *** Cell Wilderness (0000D8C9) combined data is owned by file DLCCoast.esm due to ref CoastBeach01 (03020870) +MASTERFILE: *** Cell Wilderness (0000D8CA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastSlab (0104F4F0) +MASTERFILE: *** Cell Wilderness (0000D8CA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastSlab (0304F4F0) +MASTERFILE: *** Cell Wilderness (0000D8CB) combined data is owned by file DLCCoast.esm due to ref Bramble03 (0104F4D0) +MASTERFILE: *** Cell Wilderness (0000D8CB) combined data is owned by file DLCCoast.esm due to ref Bramble03 (0304F4D0) +MASTERFILE: *** Cell Wilderness (0000D8E7) combined data is owned by file DLCCoast.esm due to ref Rowboat01Stand01_SC_DLC03 (01020862) +MASTERFILE: *** Cell Wilderness (0000D8E7) combined data is owned by file DLCCoast.esm due to ref Rowboat01Stand01_SC_DLC03 (03020862) +MASTERFILE: *** Cell Wilderness (0000D8E8) combined data is owned by file DLCCoast.esm due to ref FishNetFallenCrates02 (0102084A) +MASTERFILE: *** Cell Wilderness (0000D8E8) combined data is owned by file DLCCoast.esm due to ref FishNetFallenCrates02 (0302084A) +MASTERFILE: *** Cell Wilderness (0000D8E9) combined data is owned by file DLCCoast.esm due to ref Bramble03 (0104F4EF) +MASTERFILE: *** Cell Wilderness (0000D8E9) combined data is owned by file DLCCoast.esm due to ref Bramble03 (0304F4EF) +MASTERFILE: *** Cell Wilderness (0000D8EA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast02 (0104F4D5) +MASTERFILE: *** Cell Wilderness (0000D8EA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast02 (0304F4D5) +MASTERFILE: *** Cell Wilderness (0000D8EB) combined data is owned by file DLCCoast.esm due to ref RockPileL01_NF_Roots01 (0104F4D9) +MASTERFILE: *** Cell Wilderness (0000D8EB) combined data is owned by file DLCCoast.esm due to ref RockPileL01_NF_Roots01 (0304F4D9) +MASTERFILE: *** Cell Wilderness (0000D8FF) combined data is owned by file DLCCoast.esm due to ref BlastedForestBurntBranch01 (01033FE1) +MASTERFILE: *** Cell Wilderness (0000D8FF) combined data is owned by file DLCCoast.esm due to ref BlastedForestBurntBranch01 (03033FE1) +MASTERFILE: *** Cell Wilderness (0000D966) combined data is owned by file DLCCoast.esm due to ref DLC03MQ01SetStage45TriggerREF (01049D13) +MASTERFILE: *** Cell Wilderness (0000D966) combined data is owned by file DLCCoast.esm due to ref DLC03MQ01SetStage45TriggerREF (03049D13) +MASTERFILE: *** Cell Wilderness (0000DBF9) combined data is owned by file DLCRobot.esm due to ref DecoMainA2x1Cor01 (01007EF9) +MASTERFILE: *** Cell Wilderness (0000DEF8) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleCurveR01 (0021F448) +MASTERFILE: *** Cell Wilderness (0000DF15) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0100B0A5) +MASTERFILE: *** Cell Wilderness (0000DF15) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0600B0A5) +MASTERFILE: *** Cell Wilderness (0000DF16) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster06 (0021AEC0) +MASTERFILE: *** Cell Wilderness (0000DF18) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleRampUp01 (0021F447) +MASTERFILE: *** Cell Wilderness (0000DF30) combined data is owned by file DLCNukaWorld.esm due to ref BillboardBldgVerticalSm02 (001F21AC) +MASTERFILE: *** Cell Wilderness (0000DF35) combined data is owned by file DLCNukaWorld.esm due to ref TreeLeanScrub07 (00144794) +MASTERFILE: *** Cell Wilderness (0000DF36) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff02_NF (0100AABF) +MASTERFILE: *** Cell Wilderness (0000DF36) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff02_NF (0600AABF) +MASTERFILE: *** Cell Wilderness (0000DF37) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster07 (0021AED1) +MASTERFILE: *** Cell Wilderness (0000DF38) combined data is owned by file DLCNukaWorld.esm due to ref TreeMapleblasted05 (0021E5E9) +MASTERFILE: *** Cell Wilderness (0000DF39) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04_NF (0100B04C) +MASTERFILE: *** Cell Wilderness (0000DF39) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04_NF (0600B04C) +MASTERFILE: *** Cell Wilderness (0000DF3A) combined data is owned by file DLCNukaWorld.esm due to ref TreeMapleForest7 (0021E5F9) +MASTERFILE: *** Cell Wilderness (0000DF51) combined data is owned by file DLCNukaWorld.esm due to ref BillboardBldgSm01 (0104BF65) +MASTERFILE: *** Cell Wilderness (0000DF51) combined data is owned by file DLCNukaWorld.esm due to ref BillboardBldgSm01 (0604BF65) +MASTERFILE: *** Cell Wilderness (0000DF52) combined data is owned by file DLCNukaWorld.esm due to ref HighwaySignPostLG01 (001F21AF) +MASTERFILE: *** Cell Wilderness (0000DF54) combined data is owned by file DLCNukaWorld.esm due to ref VaultTecVan01Blue (01022D30) +MASTERFILE: *** Cell Wilderness (0000DF54) combined data is owned by file DLCNukaWorld.esm due to ref VaultTecVan01Blue (06022D30) +MASTERFILE: *** Cell Wilderness (0000DF55) combined data is owned by file DLCNukaWorld.esm due to ref ExtRubble_Plain_Sm_Mid02 (0100A7D0) +MASTERFILE: *** Cell Wilderness (0000DF55) combined data is owned by file DLCNukaWorld.esm due to ref ExtRubble_Plain_Sm_Mid02 (0600A7D0) +MASTERFILE: *** Cell Wilderness (0000DF56) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleStr01 (0100A7B7) +MASTERFILE: *** Cell Wilderness (0000DF56) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleStr01 (0600A7B7) +MASTERFILE: *** Cell Wilderness (0000DF57) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0100AAC7) +MASTERFILE: *** Cell Wilderness (0000DF57) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0600AAC7) +MASTERFILE: *** Cell Wilderness (0000DF58) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01 (0100AAC9) +MASTERFILE: *** Cell Wilderness (0000DF58) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01 (0600AAC9) +MASTERFILE: *** Cell Wilderness (0000DF59) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04_NF (0100AAD2) +MASTERFILE: *** Cell Wilderness (0000DF59) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04_NF (0600AAD2) +MASTERFILE: *** Cell Wilderness (0000DF5A) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0100B046) +MASTERFILE: *** Cell Wilderness (0000DF5A) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0600B046) +MASTERFILE: *** Cell Wilderness (0000DF74) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleCurveL01 (0100A94B) +MASTERFILE: *** Cell Wilderness (0000DF74) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleCurveL01 (0600A94B) +MASTERFILE: *** Cell Wilderness (0000DF76) combined data is owned by file DLCNukaWorld.esm due to ref TerrainShelfRocks01 (0100B03E) +MASTERFILE: *** Cell Wilderness (0000DF76) combined data is owned by file DLCNukaWorld.esm due to ref TerrainShelfRocks01 (0600B03E) +MASTERFILE: *** Cell Wilderness (0000DF79) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x1CorWall01 (0100A91E) +MASTERFILE: *** Cell Wilderness (0000DF79) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x1CorWall01 (0600A91E) +MASTERFILE: *** Cell Wilderness (0000DF7A) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff02_NF (0100AAD6) +MASTERFILE: *** Cell Wilderness (0000DF7A) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff02_NF (0600AAD6) +MASTERFILE: *** Cell Wilderness (0000DF7B) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0100B047) +MASTERFILE: *** Cell Wilderness (0000DF7B) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0600B047) +MASTERFILE: *** Cell Wilderness (0000DF96) combined data is owned by file DLCNukaWorld.esm due to ref LeafPile01 (0104F493) +MASTERFILE: *** Cell Wilderness (0000DF96) combined data is owned by file DLCNukaWorld.esm due to ref LeafPile01 (0604F493) +MASTERFILE: *** Cell Wilderness (0000DF97) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff05_NF (0100B02E) +MASTERFILE: *** Cell Wilderness (0000DF97) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff05_NF (0600B02E) +MASTERFILE: *** Cell Wilderness (0000DF9A) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04 (0100AADB) +MASTERFILE: *** Cell Wilderness (0000DF9A) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04 (0600AADB) +MASTERFILE: *** Cell Wilderness (0000DF9B) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0100AADD) +MASTERFILE: *** Cell Wilderness (0000DF9B) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0600AADD) +MASTERFILE: *** Cell Wilderness (0000DF9C) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff06 (0100B048) +MASTERFILE: *** Cell Wilderness (0000DF9C) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff06 (0600B048) +MASTERFILE: *** Cell Wilderness (0000DFB8) combined data is owned by file DLCNukaWorld.esm due to ref TerrainShelfRocks01 (0100B1A2) +MASTERFILE: *** Cell Wilderness (0000DFB8) combined data is owned by file DLCNukaWorld.esm due to ref TerrainShelfRocks01 (0600B1A2) +MASTERFILE: *** Cell Wilderness (0000DFB9) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (00148FA4) +MASTERFILE: *** Cell Wilderness (0000DFBA) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster08 (0021AE9B) +MASTERFILE: *** Cell Wilderness (0000DFBB) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff03_NF (0100AADF) +MASTERFILE: *** Cell Wilderness (0000DFBB) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff03_NF (0600AADF) +MASTERFILE: *** Cell Wilderness (0000DFBC) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0100B0A0) +MASTERFILE: *** Cell Wilderness (0000DFBC) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0600B0A0) +MASTERFILE: *** Cell Wilderness (0000DFBD) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff06 (0100B0A1) +MASTERFILE: *** Cell Wilderness (0000DFBD) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff06 (0600B0A1) +MASTERFILE: *** Cell Wilderness (0000DFDC) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster04 (0021AE58) +MASTERFILE: *** Cell Wilderness (0000DFDE) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster06 (0021AE47) +MASTERFILE: *** Cell Wilderness (0000E400) combined data is owned by file DLCCoast.esm due to ref TreeClusterDead01 (01032CCA) +MASTERFILE: *** Cell Wilderness (0000E400) combined data is owned by file DLCCoast.esm due to ref TreeClusterDead01 (03032CCA) +MASTERFILE: *** Cell Wilderness (0000E419) combined data is owned by file DLCRobot.esm due to ref LvlYaoGuai (00197B2C) +MASTERFILE: *** Cell Wilderness (0000E45B) combined data is owned by file DLCRobot.esm due to ref RaiderCampPole02 (01008351) +MASTERFILE: *** Cell Wilderness (0000F6B7) combined data is owned by file DLCRobot.esm due to ref TrashEdge01 (00142F3C) +MASTERFILE: Automatic door 'AutoloadDoor' (0003A897) [330 units] in cell 'OldGulletSinkhole01' has its teleport marker too close to the linked door. +MASTERFILE: Automatic door 'AutoloadDoor' (00186949) [0 units] in cell 'InstituteConcourse' has its teleport marker too close to the linked door. +MASTERFILE: Automatic door 'AutoloadDoorNoText' (000998E3) [105 units] in cell 'Vault111Ext' has its teleport marker too close to the linked door. +MASTERFILE: Automatic door 'DLC04KKTunnelsToBottlingPlant' (01039829) [64 units] in cell 'DLC04KiddieKingdomTunnels01' has its teleport marker too close to the linked door. +MASTERFILE: Automatic door 'DLC04KKTunnelsToBottlingPlant' (06039829) [64 units] in cell 'DLC04KiddieKingdomTunnels01' has its teleport marker too close to the linked door. +MASTERFILE: Cell (-24, -1) in world 'Commonwealth' (0000003C) is not in exterior cell data. +MASTERFILE: Cell contains more than one COC marker:\r\n'DLC04GalacticZoneExt' (01003215) (-3, -1) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Cell contains more than one COC marker:\r\n'DLC04GalacticZoneExt' (06003215) (-3, -1) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Cell contains more than one COC marker:\r\n'VimPopFactoryExt' (01000CE2) (0, -8) in WorldSpace 'DLC03FarHarbor' (01000B0F) +MASTERFILE: Cell contains more than one COC marker:\r\n'VimPopFactoryExt' (03000CE2) (0, -8) in WorldSpace 'DLC03FarHarbor' (03000B0F) +MASTERFILE: Cell 'DLC04KiddieKingdomHoldingCell' (0103D627) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +MASTERFILE: Cell 'DLC04KiddieKingdomHoldingCell' (0603D627) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +MASTERFILE: Cell 'NukaWorldWildWestExt01' (01003294) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +MASTERFILE: Cell 'NukaWorldWildWestExt01' (06003294) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +MASTERFILE: Cell 'SanctuaryRosaHouse' (0001F398) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +MASTERFILE: Cell 'Vault111Start' (000016D9) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +MASTERFILE: Could not find material 'DLC04\Decals\DLC04_ChalkVines01.BGSM' to init texture set 'DLC04_DecalChalkVines01' (01047088). +MASTERFILE: Could not find material 'DLC04\Decals\DLC04_ChalkVines01.BGSM' to init texture set 'DLC04_DecalChalkVines01' (06047088). +MASTERFILE: Could not find topic 01001058 on dialogue action 26 for scene DLC06MQ03_700_Clem (01004940). +MASTERFILE: Could not find topic 010053F8 on dialogue action 1 for scene DLC06WorkshopSurgeryScene (01005454). +MASTERFILE: Could not find topic 010053FC on dialogue action 1 for scene DLC06WorkshopBarberScene (01005451). +MASTERFILE: Could not find topic 0100DB49 on dialogue action 2 for scene DLC04RaidWipeOut_001_ShankEarlyShutDown (0100DBD5). +MASTERFILE: Could not find topic 0101436C on dialogue action 1 for scene DLC04RaidChaseOff_001_ShankShutDown (010143D5). +MASTERFILE: Could not find topic 01016E2A on dialogue action 2 for scene DLC04RaidSubdue_001_ShankEarlyShutDown (01016E6A). +MASTERFILE: Could not find topic 010190A0 on dialogue action 1 for scene DLC04RaidCoerce_001_ShankShutDown (010190ED). +MASTERFILE: Could not find topic 0101C704 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C705 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C706 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C707 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C708 on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C709 on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C70A on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C70B on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0101C732). +MASTERFILE: Could not find topic 0101C89B on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C89C on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C89D on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C89E on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C89F on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C8A0 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C8A1 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 0101C8A2 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0101C731). +MASTERFILE: Could not find topic 01021922 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021923 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021924 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021925 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021926 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021927 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021928 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 01021929 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (01021988). +MASTERFILE: Could not find topic 010322DF on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E0 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E1 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E2 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E3 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E4 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E5 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 010322E6 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0103234B). +MASTERFILE: Could not find topic 01032A6F on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A70 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A71 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A72 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A73 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A74 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A75 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 01032A76 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (01032AE3). +MASTERFILE: Could not find topic 05001058 on dialogue action 26 for scene DLC06MQ03_700_Clem (05004940). +MASTERFILE: Could not find topic 050053F8 on dialogue action 1 for scene DLC06WorkshopSurgeryScene (05005454). +MASTERFILE: Could not find topic 050053FC on dialogue action 1 for scene DLC06WorkshopBarberScene (05005451). +MASTERFILE: Could not find topic 0600DB49 on dialogue action 2 for scene DLC04RaidWipeOut_001_ShankEarlyShutDown (0600DBD5). +MASTERFILE: Could not find topic 0601436C on dialogue action 1 for scene DLC04RaidChaseOff_001_ShankShutDown (060143D5). +MASTERFILE: Could not find topic 06016E2A on dialogue action 2 for scene DLC04RaidSubdue_001_ShankEarlyShutDown (06016E6A). +MASTERFILE: Could not find topic 060190A0 on dialogue action 1 for scene DLC04RaidCoerce_001_ShankShutDown (060190ED). +MASTERFILE: Could not find topic 0601C704 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C705 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C706 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C707 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C708 on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C709 on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C70A on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C70B on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0601C732). +MASTERFILE: Could not find topic 0601C89B on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C89C on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C89D on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C89E on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C89F on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C8A0 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C8A1 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 0601C8A2 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0601C731). +MASTERFILE: Could not find topic 06021922 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021923 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021924 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021925 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021926 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021927 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021928 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 06021929 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (06021988). +MASTERFILE: Could not find topic 060322DF on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E0 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E1 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E2 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E3 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E4 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E5 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 060322E6 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0603234B). +MASTERFILE: Could not find topic 06032A6F on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A70 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A71 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A72 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A73 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A74 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A75 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find topic 06032A76 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (06032AE3). +MASTERFILE: Could not find valid form (00249FD9) in init for default object 'MapMarkerPotentialVassal_DO' (00249FDB) +MASTERFILE: Could not find valid form (0024A042) in init for default object 'WorkshopForceNewList_DO' (0024A043) +MASTERFILE: DefaultObject 'MapMarkerPotentialVassal_DO' in file 'Fallout4.esm' is not recognized by the current EXE. +MASTERFILE: DefaultObject 'WorkshopForceNewList_DO' in file 'Fallout4.esm' is not recognized by the current EXE. +MASTERFILE: DLC file 'DLCCoast.esm' contains non-partial QUST 'COMNick' (000BBD98) +MASTERFILE: DLC file 'DLCCoast.esm' contains non-partial QUST 'DialogueGlowingSeaAtom' (0012DB31) +MASTERFILE: DLC file 'DLCNukaWorld.esm' contains non-partial QUST 'MinRecruit00' (0011B36E) +MASTERFILE: DLC file 'DLCRobot.esm' contains non-partial QUST 'CreatureDialogueEyebot' (000AE7E4) +MASTERFILE: Empty reference group '' (03016675). +MASTERFILE: Empty reference group '' (03030610). +MASTERFILE: Empty reference group '' (03034FA5). +MASTERFILE: Empty reference group '' (0304796E). +MASTERFILE: Empty reference group '' (06010908). +MASTERFILE: Empty reference group '' (060178D2). +MASTERFILE: Empty reference group '' (0601B54F). +MASTERFILE: Empty reference group '' (0601B553). +MASTERFILE: Empty reference group '' (0601B557). +MASTERFILE: Empty reference group '' (0601B55B). +MASTERFILE: Empty reference group '' (0601B55F). +MASTERFILE: Empty reference group '' (0601B563). +MASTERFILE: Empty reference group '' (0601B855). +MASTERFILE: Empty reference group '' (0601B85C). +MASTERFILE: Empty reference group '' (0601B9A6). +MASTERFILE: Empty reference group '' (0601B9AC). +MASTERFILE: Empty reference group '' (0601B9B2). +MASTERFILE: Empty reference group '' (0601B9B8). +MASTERFILE: Empty reference group '' (0601B9BE). +MASTERFILE: Empty reference group '' (0601B9C4). +MASTERFILE: Empty reference group '' (0601B9CA). +MASTERFILE: Empty reference group '' (0601B9D4). +MASTERFILE: Empty reference group '' (0601B9D9). +MASTERFILE: Empty reference group '' (0601BC47). +MASTERFILE: Empty reference group '' (0603D3D6). +MASTERFILE: Empty reference group '' (06051311). +MASTERFILE: Enable state parent loop detected. Parent removed. +MASTERFILE: Exterior cell (10, 0) in world 'Commonwealth' (0000003C) is no longer tagged to this location. +MASTERFILE: Exterior cell (9, -9) in world 'Commonwealth' (0000003C) is no longer tagged to this location. +MASTERFILE: GameSetting 'fEnduranceCrippledAPReduction' in file 'Fallout4.esm' is not recognized by the current EXE. +MASTERFILE: Info 0002D4FB points to unnamed start phase 1 on scene 'RRAct3LostPrestonScene' (0002D564). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0002D51A points to unnamed start phase 1 on scene 'RRAct3LostPrestonScene' (0002D564). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0014DDCD points to unnamed start phase 1 on scene 'RR201_0350_MeetZ1' (0014DDD1). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 002480BF points to unnamed start phase 3 on scene 'MinRecruit03AcceptScene' (00106F64). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01016661 points to unnamed start phase 1 on scene 'DLC03MQ02_0200_AveryGreeting' (01016662). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01018602 points to unnamed start phase 1 on scene 'DLC03MQ02_0700_LongfellowEnd' (01032505). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01049709 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0104970A points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0104970B points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01049710 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01049711 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01049712 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0104971F points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01049720 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 01049721 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (01040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03016661 points to unnamed start phase 1 on scene 'DLC03MQ02_0200_AveryGreeting' (03016662). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03018602 points to unnamed start phase 1 on scene 'DLC03MQ02_0700_LongfellowEnd' (03032505). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03049709 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0304970A points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0304970B points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03049710 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03049711 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03049712 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0304971F points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03049720 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 03049721 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (03040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Invalid prev idle on IDLE Form 'DLC06_ChangeAnimFlavor' (050011A2) +MASTERFILE: Invalid prev idle on IDLE Form 'MeleeRightSyncKillHuman_DeathclawGauntlet' (000C73B9) +MASTERFILE: LoadProcedureTreeItem: File 'DLCCoast.esm' has package with missing procedure tree item. +MASTERFILE: LOCALIZATION: Zero entries or empty block size read from strings file STRINGS/DLCWorkshop02_en.ILSTRINGS. Strings will be missing. +MASTERFILE: Multiple next idles for IDLE Form 'ChangeAnimFlavor' (000B3446). +MASTERFILE: Multiple next idles for IDLE Form 'MeleeRightSyncKillHuman_Ripper' (000C73B7). +MASTERFILE: No occlusion plane for occlusion plane ref extra. +MASTERFILE: No quest completion XP global on completable quest 'InstM01_OLD' (000498B5) +MASTERFILE: No quest completion XP global on completable quest 'InstR01_OLD' (000E8D19) +MASTERFILE: No quest completion XP global on completable quest 'InstR03_OLD' (000EC1E9) +MASTERFILE: No storage cell defined for 'DLC01TrackSystem_PackIn' (01007933). This pack-in cannot be used and should be recreated. +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14BF) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14C0) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14C1) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14C8) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Perk chain on DLC04RaiderOverbossFullInvulnerabilityPerk (0100A51F) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossFullInvulnerabilityPerk (0600A51F) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossGradiatedCloakPerk (010490AC) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossGradiatedCloakPerk (060490AC) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossGradiatedInvulnerabilityPerk (0100A51E) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossGradiatedInvulnerabilityPerk (0600A51E) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Potentially Invalid Z value (-141089.25) on reference:\n\nREFR Form '' (01044914) to MSTT form 'SkeletonClothedF03' (001A4D3E) in Cell 'NorthwoodRidgeQuarryExt03' (01000CFF) (-1, -12) in WorldSpace 'DLC03FarHarbor' (01000B0F) +MASTERFILE: Potentially Invalid Z value (-141089.25) on reference:\n\nREFR Form '' (03044914) to MSTT form 'SkeletonClothedF03' (001A4D3E) in Cell 'NorthwoodRidgeQuarryExt03' (03000CFF) (-1, -12) in WorldSpace 'DLC03FarHarbor' (03000B0F) +MASTERFILE: Potentially Invalid Z value (-142001.25) on reference:\n\nREFR Form '' (00203BDD) to MSTT form 'SkeletonClothedF03' (001A4D3E) in Cell '' (00203B1B) +MASTERFILE: Potentially Invalid Z value (-46512.24) on reference:\n\nREFR Form '' (0104A9BA) to MSTT form 'TrashcanMetalOffice01' (001A594B) in Cell 'DLC04HubFizztopMountainInterior01' (01018596) +MASTERFILE: Potentially Invalid Z value (-46512.24) on reference:\n\nREFR Form '' (0604A9BA) to MSTT form 'TrashcanMetalOffice01' (001A594B) in Cell 'DLC04HubFizztopMountainInterior01' (06018596) +MASTERFILE: Potentially Invalid Z value (-70547.19) on reference:\n\nREFR Form '' (0100ED8E) to MSTT form 'SkeletonClothedF01' (0008B214) in Cell 'Wilderness' (01003349) (-8, 16) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-70547.19) on reference:\n\nREFR Form '' (0600ED8E) to MSTT form 'SkeletonClothedF01' (0008B214) in Cell 'Wilderness' (06003349) (-8, 16) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0100ED9A) to ALCH form 'NukaCola' (0004835D) in Cell 'Wilderness' (01003204) (-3, 16) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0100ED9C) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Wilderness' (01003204) (-3, 16) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0100ED9D) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Wilderness' (01003204) (-3, 16) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0100ED9E) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Wilderness' (01003203) (-3, 17) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0600ED9A) to ALCH form 'NukaCola' (0004835D) in Cell 'Wilderness' (06003204) (-3, 16) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0600ED9C) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Wilderness' (06003204) (-3, 16) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0600ED9D) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Wilderness' (06003204) (-3, 16) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:\n\nREFR Form '' (0600ED9E) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Wilderness' (06003203) (-3, 17) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Potentially Invalid Z value (-73834.35) on reference:\n\nREFR Form '' (0100EDA1) to MSTT form 'SkeletonBareBodyHeadless' (000E1B85) in Cell 'Wilderness' (01003203) (-3, 17) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-73834.35) on reference:\n\nREFR Form '' (0600EDA1) to MSTT form 'SkeletonBareBodyHeadless' (000E1B85) in Cell 'Wilderness' (06003203) (-3, 17) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Potentially Invalid Z value (-80350.69) on reference:\n\nREFR Form '' (0100ED9F) to MSTT form 'SkeletonClothedF05' (001A4D44) in Cell 'Wilderness' (0100320A) (-3, 10) in WorldSpace 'NukaWorld' (0100290F) +MASTERFILE: Potentially Invalid Z value (-80350.69) on reference:\n\nREFR Form '' (0600ED9F) to MSTT form 'SkeletonClothedF05' (001A4D44) in Cell 'Wilderness' (0600320A) (-3, 10) in WorldSpace 'NukaWorld' (0600290F) +MASTERFILE: Primitive with zero extents encountered for reference 0100E4BE +MASTERFILE: Primitive with zero extents encountered for reference 01017607 +MASTERFILE: Primitive with zero extents encountered for reference 0101E84B +MASTERFILE: Primitive with zero extents encountered for reference 010435F0 +MASTERFILE: Primitive with zero extents encountered for reference 0104A703 +MASTERFILE: Primitive with zero extents encountered for reference 0300E4BE +MASTERFILE: Primitive with zero extents encountered for reference 030435F0 +MASTERFILE: Primitive with zero extents encountered for reference 06017607 +MASTERFILE: Primitive with zero extents encountered for reference 0601E84B +MASTERFILE: Primitive with zero extents encountered for reference 0604A703 +MASTERFILE: Race 'DLC04_HumanRaceSubgraphDataAdditive' needs to have at least one Biped Object Name in the editor. +MASTERFILE: Race 'HumanRaceSubGraphDataAdditiveDLC06' needs to have at least one Biped Object Name in the editor. +MASTERFILE: Ref (0104974E) to base object Fern01_DLC03_04 (01003C5B) in cell Wilderness (8, 6) (01000C20) should be persistent but is not. +MASTERFILE: Ref (0304974E) to base object Fern01_DLC03_04 (03003C5B) in cell Wilderness (8, 6) (03000C20) should be persistent but is not. +MASTERFILE: Reference 0006752A ('ExtRubble_BricksLrg_Med_Mid01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0006752B ('ExtRubble_BricksLrg_Med_Mid01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 000C8AC4 ('RockPileL01RubbleRock01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 00132B49 ('RockCliff03_NF') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0015A221 ('BldConcSmFlrOnly01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 001A618A ('SWCurb4x1Str01Grass') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA0 ('BldgShellBrickWallTrimHalf04L') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA1 ('BldgShellBrickWallTrimHalf03L') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA2 ('BldgShellBrickWallTrimHalf04') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA3 ('BldgShellBrickWallTrimHalf03') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA4 ('BldgShellBrickWallTrimTop01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA7 ('DecoMainC1x1WallPeak01LFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBA8 ('DecoMainC1x1WallPeak01LFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBBE ('DecoMainC1x1WinBayA01Full02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBD2 ('DecoMainC1x1WallPeak01RFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EBD3 ('DecoMainC1x1WallPeak01RFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EC7A ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101EC7B ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101ECE8 ('BldgShellBrickWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101F647 ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0101F649 ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 01023AB6 ('SwimPoolFloorDeckTrimCorIn01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 01023AB7 ('SwimPoolFloorDeckTrimCorIn01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 01023AB9 ('SwimPoolFloorDeckTrim01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 010249D7 ('HouseKCapWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 010249D8 ('HouseKCapWall01Dam01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 01024ABB ('BldWoodBSmFlrPlatChunk01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 01024ABD ('BldWoodBSmFlrPlatChunk01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0102B6D9 ('FluorescentLightThinHanging01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 01050D4D ('FluorescentLightThinHanging01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA0 ('BldgShellBrickWallTrimHalf04L') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA1 ('BldgShellBrickWallTrimHalf03L') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA2 ('BldgShellBrickWallTrimHalf04') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA3 ('BldgShellBrickWallTrimHalf03') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA4 ('BldgShellBrickWallTrimTop01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA7 ('DecoMainC1x1WallPeak01LFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBA8 ('DecoMainC1x1WallPeak01LFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBBE ('DecoMainC1x1WinBayA01Full02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBD2 ('DecoMainC1x1WallPeak01RFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EBD3 ('DecoMainC1x1WallPeak01RFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EC7A ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601EC7B ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601ECE8 ('BldgShellBrickWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601F647 ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0601F649 ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 06023AB6 ('SwimPoolFloorDeckTrimCorIn01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 06023AB7 ('SwimPoolFloorDeckTrimCorIn01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 06023AB9 ('SwimPoolFloorDeckTrim01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 060249D7 ('HouseKCapWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 060249D8 ('HouseKCapWall01Dam01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 06024ABB ('BldWoodBSmFlrPlatChunk01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 06024ABD ('BldWoodBSmFlrPlatChunk01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0602B6D9 ('FluorescentLightThinHanging01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 06050D4D ('FluorescentLightThinHanging01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Scene xxx_DLC03MQ02_OLD (01048A9E) cannot set quest stage 201 on phase 9 end because the parent quest DLC03MQ02 (01001B40) doesn't have a stage with that index. +MASTERFILE: Scene xxx_DLC03MQ02_OLD (03048A9E) cannot set quest stage 201 on phase 9 end because the parent quest DLC03MQ02 (03001B40) doesn't have a stage with that index. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (01056BA2) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (01056BA2) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (01056BA4) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (01056BA4) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (01056BA5) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (01056BA5) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (01056BA6) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (01056BA6) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (01056BA7) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (01056BA7) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (06056BA2) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (06056BA2) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (06056BA4) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (06056BA4) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (06056BA5) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (06056BA5) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (06056BA6) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (06056BA6) no longer in location. +MASTERFILE: Special Ref 'AmbushFeralGhoulFromUnder' (06056BA7) is not in the Special Ref data. +MASTERFILE: Special ref 'AmbushFeralGhoulFromUnder' (06056BA7) no longer in location. +MASTERFILE: Special Ref 'BottlingPlantNukalurkQueenRef' (0103458F) is not in the Special Ref data. +MASTERFILE: Special ref 'BottlingPlantNukalurkQueenRef' (0103458F) no longer in location. +MASTERFILE: Special Ref 'BottlingPlantNukalurkQueenRef' (0603458F) is not in the Special Ref data. +MASTERFILE: Special ref 'BottlingPlantNukalurkQueenRef' (0603458F) no longer in location. +MASTERFILE: Special Ref 'DecoMainCDam1x1WallTrim02L' (010316D6) is not in the Special Ref data. +MASTERFILE: Special ref 'DecoMainCDam1x1WallTrim02L' (010316D6) no longer in location. +MASTERFILE: Special Ref 'DecoMainCDam1x1WallTrim02L' (060316D6) is not in the Special Ref data. +MASTERFILE: Special ref 'DecoMainCDam1x1WallTrim02L' (060316D6) no longer in location. +MASTERFILE: Special Ref 'DecoMainCDam1x1WallTrimHalf01' (010316D5) is not in the Special Ref data. +MASTERFILE: Special ref 'DecoMainCDam1x1WallTrimHalf01' (010316D5) no longer in location. +MASTERFILE: Special Ref 'DecoMainCDam1x1WallTrimHalf01' (060316D5) is not in the Special Ref data. +MASTERFILE: Special ref 'DecoMainCDam1x1WallTrimHalf01' (060316D5) no longer in location. +MASTERFILE: Special Ref 'DefaultActivator' (01034590) is not in the Special Ref data. +MASTERFILE: Special ref 'DefaultActivator' (01034590) no longer in location. +MASTERFILE: Special Ref 'DefaultActivator' (06034590) is not in the Special Ref data. +MASTERFILE: Special ref 'DefaultActivator' (06034590) no longer in location. +MASTERFILE: Special Ref 'DefaultStartSceneTrigger' (01042397) is not in the Special Ref data. +MASTERFILE: Special ref 'DefaultStartSceneTrigger' (01042397) no longer in location. +MASTERFILE: Special Ref 'DefaultStartSceneTrigger' (06042397) is not in the Special Ref data. +MASTERFILE: Special ref 'DefaultStartSceneTrigger' (06042397) no longer in location. +MASTERFILE: Special Ref 'DLC01LvlBotRaider_FemaleBoss' (01007534) is not in the Special Ref data. +MASTERFILE: Special Ref 'DLC01LvlRobobrain' (0100FFA6) is not in the Special Ref data. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubGuard01' (01025F12) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubGuard01' (01025F12) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubGuard01' (06025F12) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubGuard01' (06025F12) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubGuard02' (01025F13) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubGuard02' (01025F13) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubGuard02' (06025F13) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubGuard02' (06025F13) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol01' (01025F14) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol01' (01025F14) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol01' (06025F14) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol01' (06025F14) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol02' (01025F15) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol02' (01025F15) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol02' (06025F15) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol02' (06025F15) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol03' (01044A1A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol03' (01044A1A) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol03' (06044A1A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol03' (06044A1A) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol04' (01044A1B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol04' (01044A1B) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubPatrol04' (06044A1B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubPatrol04' (06044A1B) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox01' (01044A15) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox01' (01044A15) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox01' (06044A15) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox01' (06044A15) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox02' (01044A14) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox02' (01044A14) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox02' (06044A14) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox02' (06044A14) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox03' (01044A16) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox03' (01044A16) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox03' (06044A16) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox03' (06044A16) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox04' (01044A17) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox04' (01044A17) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox04' (06044A17) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox04' (06044A17) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox05' (01044A18) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox05' (01044A18) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox05' (06044A18) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox05' (06044A18) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox06' (01044A19) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox06' (01044A19) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubSandbox06' (06044A19) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubSandbox06' (06044A19) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubStand01' (01025F16) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubStand01' (01025F16) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubStand01' (06025F16) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubStand01' (06025F16) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubStand02' (01025F17) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubStand02' (01025F17) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGang_HubStand02' (06025F17) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGang_HubStand02' (06025F17) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGuard_EnableMarker' (01025F19) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGuard_EnableMarker' (01025F19) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGuard_EnableMarker' (06025F19) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGuard_EnableMarker' (06025F19) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGuard_EnableMarker001' (01025F20) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGuard_EnableMarker001' (01025F20) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGuard_EnableMarker001' (06025F20) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGuard_EnableMarker001' (06025F20) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGuard_EnableMarker002' (01025F27) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGuard_EnableMarker002' (01025F27) no longer in location. +MASTERFILE: Special Ref 'DLC04_DiscipleGuard_EnableMarker002' (06025F27) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DiscipleGuard_EnableMarker002' (06025F27) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_CorralTrigger' (01043B88) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_CorralTrigger' (01043B88) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_CorralTrigger' (06043B88) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_CorralTrigger' (06043B88) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_MineKey' (010431B2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_MineKey' (010431B2) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_MineKey' (060431B2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_MineKey' (060431B2) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_ServeDrinkTriggerREF' (01043B90) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_ServeDrinkTriggerREF' (01043B90) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_ServeDrinkTriggerREF' (06043B90) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_ServeDrinkTriggerREF' (06043B90) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_ServeDrinkTriggerREF02' (010470D9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_ServeDrinkTriggerREF02' (010470D9) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_ServeDrinkTriggerREF02' (060470D9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_ServeDrinkTriggerREF02' (060470D9) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_ServeDrinkTriggerREF03' (010470E0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_ServeDrinkTriggerREF03' (010470E0) no longer in location. +MASTERFILE: Special Ref 'DLC04_DRG_ServeDrinkTriggerREF03' (060470E0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_DRG_ServeDrinkTriggerREF03' (060470E0) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E4F5) is not in the Special Ref data. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E502) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103E502) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E519) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103E519) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E522) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103E522) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E52B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103E52B) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E536) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103E536) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103E543) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103E543) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F70A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F70A) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F713) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F713) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F722) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F722) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F72B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F72B) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F734) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F734) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F743) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F743) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F74C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F74C) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F75B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F75B) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F767) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F767) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F772) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F772) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F77C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F77C) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F785) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F785) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F78E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F78E) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F79C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F79C) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7A5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7A5) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7BA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7BA) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7C4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7C4) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7CD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7CD) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7D6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7D6) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7DF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7DF) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7E9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7E9) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7F2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7F2) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F7FB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F7FB) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F804) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F804) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0103F80D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0103F80D) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E4F5) is not in the Special Ref data. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E502) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603E502) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E519) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603E519) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E522) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603E522) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E52B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603E52B) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E536) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603E536) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603E543) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603E543) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F70A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F70A) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F713) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F713) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F722) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F722) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F72B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F72B) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F734) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F734) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F743) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F743) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F74C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F74C) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F75B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F75B) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F767) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F767) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F772) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F772) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F77C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F77C) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F785) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F785) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F78E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F78E) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F79C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F79C) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7A5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7A5) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7BA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7BA) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7C4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7C4) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7CD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7CD) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7D6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7D6) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7DF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7DF) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7E9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7E9) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7F2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7F2) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F7FB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F7FB) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F804) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F804) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_MistTrigger' (0603F80D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_MistTrigger' (0603F80D) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_Terminal_Roof' (0104A091) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_Terminal_Roof' (0104A091) no longer in location. +MASTERFILE: Special Ref 'DLC04_KK_Terminal_Roof' (0604A091) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_KK_Terminal_Roof' (0604A091) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (0103467C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (0103467C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01034694) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01034694) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (0104245F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (0104245F) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01042468) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01042468) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01055F25) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01055F25) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01055F26) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01055F26) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01055F27) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01055F27) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01055F28) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01055F28) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (01055F29) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (01055F29) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (0603467C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (0603467C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06034694) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06034694) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (0604245F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (0604245F) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06042468) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06042468) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06055F25) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06055F25) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06055F26) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06055F26) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06055F27) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06055F27) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06055F28) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06055F28) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoul' (06055F29) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoul' (06055F29) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01034666) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01034666) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (0103466C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (0103466C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01042449) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01042449) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (0104244C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (0104244C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (0104244F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (0104244F) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01042450) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01042450) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055DA5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055DA5) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EA0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EA0) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EA5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EA5) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EA7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EA7) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EA9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EA9) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EAB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EAB) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EAD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EAD) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EAF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EAF) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EB1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EB1) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EB3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EB3) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EB6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EB6) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EB8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EB8) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EBA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EBA) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EBC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EBC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EBE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EBE) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EC0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EC0) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EC2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EC2) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EC4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EC4) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EC6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EC6) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EC8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EC8) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ECA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ECA) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ECC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ECC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ECE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ECE) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ED0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ED0) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ED2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ED2) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ED4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ED4) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ED6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ED6) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055ED8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055ED8) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EDA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EDA) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EDC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EDC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EFC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EFC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055EFE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055EFE) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F01) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F01) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F04) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F04) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F06) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F06) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F08) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F08) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F0A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F0A) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F0C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F0C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F0E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F0E) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F10) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F10) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F12) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F12) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F17) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F17) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F19) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F19) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F1B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F1B) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F1D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F1D) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F20) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F20) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F22) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F22) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F23) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F23) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F2A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F2A) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (01055F2C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (01055F2C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06034666) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06034666) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (0603466C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (0603466C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06042449) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06042449) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (0604244C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (0604244C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (0604244F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (0604244F) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06042450) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06042450) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055DA5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055DA5) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EA0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EA0) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EA5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EA5) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EA7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EA7) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EA9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EA9) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EAB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EAB) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EAD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EAD) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EAF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EAF) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EB1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EB1) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EB3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EB3) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EB6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EB6) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EB8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EB8) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EBA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EBA) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EBC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EBC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EBE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EBE) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EC0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EC0) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EC2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EC2) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EC4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EC4) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EC6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EC6) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EC8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EC8) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ECA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ECA) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ECC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ECC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ECE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ECE) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ED0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ED0) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ED2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ED2) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ED4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ED4) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ED6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ED6) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055ED8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055ED8) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EDA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EDA) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EDC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EDC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EFC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EFC) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055EFE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055EFE) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F01) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F01) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F04) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F04) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F06) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F06) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F08) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F08) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F0A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F0A) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F0C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F0C) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F0E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F0E) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F10) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F10) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F12) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F12) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F17) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F17) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F19) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F19) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F1B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F1B) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F1D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F1D) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F20) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F20) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F22) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F22) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F23) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F23) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F2A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F2A) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlFeralGhoulAmbush' (06055F2C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlFeralGhoulAmbush' (06055F2C) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (010356F6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (010356F6) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (010356F8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (010356F8) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (01035706) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (01035706) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (0103570E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (0103570E) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (01035714) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (01035714) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (0103F930) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (0103F930) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (0104B4F2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (0104B4F2) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (060356F6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (060356F6) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (060356F8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (060356F8) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (06035706) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (06035706) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (0603570E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (0603570E) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (06035714) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (06035714) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (0603F930) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (0603F930) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw' (0604B4F2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw' (0604B4F2) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (01035710) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (01035710) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (01035712) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (01035712) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0103F6EF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0103F6EF) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0104B4F7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0104B4F7) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0104B4FD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0104B4FD) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0104B502) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0104B502) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (06035710) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (06035710) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (06035712) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (06035712) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0603F6EF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0603F6EF) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0604B4F7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0604B4F7) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0604B4FD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0604B4FD) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlGatorClaw_Ambush' (0604B502) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlGatorClaw_Ambush' (0604B502) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlGunnerBossTornin' (0105029D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlGunnerBossTornin' (0105029D) no longer in location. +MASTERFILE: Special Ref 'DLC04_LvlGunnerBossTornin' (0605029D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_LvlGunnerBossTornin' (0605029D) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0103D7E8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0103D7E8) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0103D7EA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0103D7EA) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0103D7EC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0103D7EC) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0104E9F6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0104E9F6) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0104E9F7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0104E9F7) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0603D7E8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0603D7E8) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0603D7EA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0603D7EA) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0603D7EC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0603D7EC) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0604E9F6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0604E9F6) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkAll' (0604E9F7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkAll' (0604E9F7) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkKing' (0103D7E6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkKing' (0103D7E6) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkKing' (0104E9ED) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkKing' (0104E9ED) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkKing' (0104E9EE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkKing' (0104E9EE) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkKing' (0603D7E6) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkKing' (0603D7E6) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkKing' (0604E9ED) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkKing' (0604E9ED) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlNukalurkKing' (0604E9EE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlNukalurkKing' (0604E9EE) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlRadAnt' (0102DEDF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlRadAnt' (0102DEDF) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlRadAnt' (0102DEE2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlRadAnt' (0102DEE2) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlRadAnt' (0602DEDF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlRadAnt' (0602DEDF) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlRadAnt' (0602DEE2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlRadAnt' (0602DEE2) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlRadAntAmbush' (0102DEE0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlRadAntAmbush' (0102DEE0) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlRadAntAmbush' (0602DEE0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlRadAntAmbush' (0602DEE0) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlSwarm' (0102DEE1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlSwarm' (0102DEE1) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlSwarm' (0602DEE1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlSwarm' (0602DEE1) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlSwarmAmbush' (0102F87F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlSwarmAmbush' (0102F87F) no longer in location. +MASTERFILE: Special Ref 'DLC04_lvlSwarmAmbush' (0602F87F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_lvlSwarmAmbush' (0602F87F) no longer in location. +MASTERFILE: Special Ref 'DLC04_NukaCola_Wild' (01043B92) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_NukaCola_Wild' (01043B92) no longer in location. +MASTERFILE: Special Ref 'DLC04_NukaCola_Wild' (010470DB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_NukaCola_Wild' (010470DB) no longer in location. +MASTERFILE: Special Ref 'DLC04_NukaCola_Wild' (010470E5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_NukaCola_Wild' (010470E5) no longer in location. +MASTERFILE: Special Ref 'DLC04_NukaCola_Wild' (06043B92) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_NukaCola_Wild' (06043B92) no longer in location. +MASTERFILE: Special Ref 'DLC04_NukaCola_Wild' (060470DB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_NukaCola_Wild' (060470DB) no longer in location. +MASTERFILE: Special Ref 'DLC04_NukaCola_Wild' (060470E5) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_NukaCola_Wild' (060470E5) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubGuard01' (01025F21) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubGuard01' (01025F21) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubGuard01' (06025F21) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubGuard01' (06025F21) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubGuard02' (01025F22) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubGuard02' (01025F22) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubGuard02' (06025F22) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubGuard02' (06025F22) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubPatrol01' (01025F23) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubPatrol01' (01025F23) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubPatrol01' (06025F23) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubPatrol01' (06025F23) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubPatrol02' (01025F24) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubPatrol02' (01025F24) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubPatrol02' (06025F24) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubPatrol02' (06025F24) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubPatrolFollow03' (01044C8B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubPatrolFollow03' (01044C8B) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubPatrolFollow03' (06044C8B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubPatrolFollow03' (06044C8B) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubSandbox01' (01044C86) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubSandbox01' (01044C86) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubSandbox01' (06044C86) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubSandbox01' (06044C86) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubSandbox02' (01044C88) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubSandbox02' (01044C88) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubSandbox02' (06044C88) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubSandbox02' (06044C88) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubSandbox03' (01044C89) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubSandbox03' (01044C89) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubSandbox03' (06044C89) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubSandbox03' (06044C89) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubStand01' (01025F25) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubStand01' (01025F25) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubStand01' (06025F25) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubStand01' (06025F25) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubStand02' (01025F26) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubStand02' (01025F26) no longer in location. +MASTERFILE: Special Ref 'DLC04_OperatorsGang_HubStand02' (06025F26) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_OperatorsGang_HubStand02' (06025F26) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubFollow01' (01044C92) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubFollow01' (01044C92) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubFollow01' (06044C92) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubFollow01' (06044C92) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubGuard01' (01025F1A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubGuard01' (01025F1A) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubGuard01' (06025F1A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubGuard01' (06025F1A) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubGuard02' (01025F1F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubGuard02' (01025F1F) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubGuard02' (06025F1F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubGuard02' (06025F1F) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubPatrol02' (01025F1E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubPatrol02' (01025F1E) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubPatrol02' (06025F1E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubPatrol02' (06025F1E) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubSandbox01' (01044C8E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubSandbox01' (01044C8E) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubSandbox01' (06044C8E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubSandbox01' (06044C8E) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubStand01' (01025F1C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubStand01' (01025F1C) no longer in location. +MASTERFILE: Special Ref 'DLC04_PackGang_HubStand01' (06025F1C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_PackGang_HubStand01' (06025F1C) no longer in location. +MASTERFILE: Special Ref 'DLC04_VassalCapsChestREF' (01044995) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_VassalCapsChestREF' (01044995) no longer in location. +MASTERFILE: Special Ref 'DLC04_VassalCapsChestREF' (06044995) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04_VassalCapsChestREF' (06044995) no longer in location. +MASTERFILE: Special Ref 'DLC04AlleyRadioEnableMarker' (01043B38) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04AlleyRadioEnableMarker' (01043B38) no longer in location. +MASTERFILE: Special Ref 'DLC04AlleyRadioEnableMarker' (06043B38) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04AlleyRadioEnableMarker' (06043B38) no longer in location. +MASTERFILE: Special Ref 'DLC04BottlingFlagpoleRef' (01008816) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04BottlingFlagpoleRef' (01008816) no longer in location. +MASTERFILE: Special Ref 'DLC04BottlingFlagpoleRef' (06008816) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04BottlingFlagpoleRef' (06008816) no longer in location. +MASTERFILE: Special Ref 'DLC04BottlingPlantMapMarkerRef' (0101EFCE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04BottlingPlantMapMarkerRef' (0101EFCE) no longer in location. +MASTERFILE: Special Ref 'DLC04BottlingPlantMapMarkerRef' (0601EFCE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04BottlingPlantMapMarkerRef' (0601EFCE) no longer in location. +MASTERFILE: Special Ref 'DLC04BradbertonMapMarkerRef' (0104CD96) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04BradbertonMapMarkerRef' (0104CD96) no longer in location. +MASTERFILE: Special Ref 'DLC04BradbertonMapMarkerRef' (0604CD96) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04BradbertonMapMarkerRef' (0604CD96) no longer in location. +MASTERFILE: Special Ref 'DLC04ColaCarsMapMarkerRef' (0100B94B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04ColaCarsMapMarkerRef' (0100B94B) no longer in location. +MASTERFILE: Special Ref 'DLC04ColaCarsMapMarkerRef' (0600B94B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04ColaCarsMapMarkerRef' (0600B94B) no longer in location. +MASTERFILE: Special Ref 'DLC04DisciplesMapMarkerRef' (0104DF87) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04DisciplesMapMarkerRef' (0104DF87) no longer in location. +MASTERFILE: Special Ref 'DLC04DisciplesMapMarkerRef' (0604DF87) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04DisciplesMapMarkerRef' (0604DF87) no longer in location. +MASTERFILE: Special Ref 'DLC04DryRockGulchMapMarkerRef' (0104190A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04DryRockGulchMapMarkerRef' (0104190A) no longer in location. +MASTERFILE: Special Ref 'DLC04DryRockGulchMapMarkerRef' (0604190A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04DryRockGulchMapMarkerRef' (0604190A) no longer in location. +MASTERFILE: Special Ref 'DLC04EncNukalurkKingAmbushWater' (010346D1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04EncNukalurkKingAmbushWater' (010346D1) no longer in location. +MASTERFILE: Special Ref 'DLC04EncNukalurkKingAmbushWater' (060346D1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04EncNukalurkKingAmbushWater' (060346D1) no longer in location. +MASTERFILE: Special Ref 'DLC04FizztopGrilleMapMarker' (0104DF85) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04FizztopGrilleMapMarker' (0104DF85) no longer in location. +MASTERFILE: Special Ref 'DLC04FizztopGrilleMapMarker' (0604DF85) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04FizztopGrilleMapMarker' (0604DF85) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneMapMarkerRef' (0100E767) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneMapMarkerRef' (0100E767) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneMapMarkerRef' (0600E767) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneMapMarkerRef' (0600E767) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (010326DA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (010326DA) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (010326DB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (010326DB) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (060326DA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (060326DA) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (060326DB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlEyebotSandboxer' (060326DB) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Flamer' (0103270B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Flamer' (0103270B) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Flamer' (0603270B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Flamer' (0603270B) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (01032674) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (01032674) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (0103272D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (0103272D) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (010329A1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (010329A1) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (06032674) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (06032674) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (0603272D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (0603272D) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (060329A1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Laser' (060329A1) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0103266B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0103266B) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (010326BE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (010326BE) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0103270C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0103270C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0103272C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0103272C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0603266B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0603266B) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (060326BE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (060326BE) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0603270C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0603270C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0603272C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Mister' (0603272C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Saw' (01032718) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Saw' (01032718) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Saw' (06032718) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlMisterHandy_Saw' (06032718) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0103266C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0103266C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0103266D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0103266D) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0103268F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0103268F) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (010326AD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (010326AD) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (010326CC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (010326CC) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (010326CD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (010326CD) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032705) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032705) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032706) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032706) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032716) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032716) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032730) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032730) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032731) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032731) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032841) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (01032841) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0603266C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0603266C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0603266D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0603266D) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0603268F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (0603268F) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (060326AD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (060326AD) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (060326CC) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (060326CC) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (060326CD) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (060326CD) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032705) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032705) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032706) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032706) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032716) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032716) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032730) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032730) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032731) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032731) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032841) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukaEyebot' (06032841) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (01032678) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (01032678) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326C2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326C2) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326C3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326C3) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326D8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326D8) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326EF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326EF) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326F9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (010326F9) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (01032719) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (01032719) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (06032678) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (06032678) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326C2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326C2) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326C3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326C3) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326D8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326D8) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326EF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326EF) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326F9) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (060326F9) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlNukatron' (06032719) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlNukatron' (06032719) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326AE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326AE) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326AF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326AF) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326ED) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326ED) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326EE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326EE) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326F0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (010326F0) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (01032715) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (01032715) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (01032774) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (01032774) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (0103283A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (0103283A) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326AE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326AE) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326AF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326AF) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326ED) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326ED) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326EE) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326EE) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326F0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (060326F0) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (06032715) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (06032715) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (06032774) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (06032774) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (0603283A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronLasers' (0603283A) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronMedic' (010327FF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronMedic' (010327FF) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlProtectronMedic' (060327FF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlProtectronMedic' (060327FF) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (010326B1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (010326B1) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (0103298F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (0103298F) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (060326B1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (060326B1) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (0603298F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlSpaceAssaultron' (0603298F) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032665) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032665) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103268E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103268E) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032693) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032693) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032694) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032694) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032697) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032697) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103269A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103269A) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103269B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103269B) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103269C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103269C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (010326B0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (010326B0) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032707) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032707) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032708) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032708) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103272E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103272E) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103272F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0103272F) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032863) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (01032863) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032665) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032665) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603268E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603268E) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032693) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032693) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032694) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032694) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032697) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032697) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603269A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603269A) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603269B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603269B) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603269C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603269C) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (060326B0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (060326B0) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032707) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032707) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032708) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032708) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603272E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603272E) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603272F) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (0603272F) no longer in location. +MASTERFILE: Special Ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032863) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GalacticZoneOnly_LvlTurretBubbleRed' (06032863) no longer in location. +MASTERFILE: Special Ref 'DLC04Gauntlet_LvlGang_Disciple_Potshots' (0102DEDB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04Gauntlet_LvlGang_Disciple_Potshots' (0102DEDB) no longer in location. +MASTERFILE: Special Ref 'DLC04Gauntlet_LvlGang_Disciple_Potshots' (0602DEDB) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04Gauntlet_LvlGang_Disciple_Potshots' (0602DEDB) no longer in location. +MASTERFILE: Special Ref 'DLC04Gauntlet_LvlGang_Operators_Potshots' (0102DED8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04Gauntlet_LvlGang_Operators_Potshots' (0102DED8) no longer in location. +MASTERFILE: Special Ref 'DLC04Gauntlet_LvlGang_Operators_Potshots' (0602DED8) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04Gauntlet_LvlGang_Operators_Potshots' (0602DED8) no longer in location. +MASTERFILE: Special Ref 'DLC04Gauntlet_LvlGang_Pack_Potshots' (0102DEDA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04Gauntlet_LvlGang_Pack_Potshots' (0102DEDA) no longer in location. +MASTERFILE: Special Ref 'DLC04Gauntlet_LvlGang_Pack_Potshots' (0602DEDA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04Gauntlet_LvlGang_Pack_Potshots' (0602DEDA) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (010327BA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (010327BA) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (010327C4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (010327C4) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (010327D0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (010327D0) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (010327E2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (010327E2) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (060327BA) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (060327BA) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (060327C4) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (060327C4) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (060327D0) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (060327D0) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_ConsolePanelStarCore' (060327E2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_ConsolePanelStarCore' (060327E2) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_StarCoreActivator' (010319E1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_StarCoreActivator' (010319E1) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_StarCoreActivator' (010319E2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_StarCoreActivator' (010319E2) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_StarCoreActivator' (060319E1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_StarCoreActivator' (060319E1) no longer in location. +MASTERFILE: Special Ref 'DLC04GZ_StarCoreActivator' (060319E2) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZ_StarCoreActivator' (060319E2) no longer in location. +MASTERFILE: Special Ref 'DLC04GZQuestStarCore' (0101FAD1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZQuestStarCore' (0101FAD1) no longer in location. +MASTERFILE: Special Ref 'DLC04GZQuestStarCore' (0601FAD1) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04GZQuestStarCore' (0601FAD1) no longer in location. +MASTERFILE: Special Ref 'DLC04HubDiscipleDisableMarker' (01056D33) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04HubDiscipleDisableMarker' (01056D33) no longer in location. +MASTERFILE: Special Ref 'DLC04HubDiscipleDisableMarker' (06056D33) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04HubDiscipleDisableMarker' (06056D33) no longer in location. +MASTERFILE: Special Ref 'DLC04HubOperatorsDisableMarker' (01056D34) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04HubOperatorsDisableMarker' (01056D34) no longer in location. +MASTERFILE: Special Ref 'DLC04HubOperatorsDisableMarker' (06056D34) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04HubOperatorsDisableMarker' (06056D34) no longer in location. +MASTERFILE: Special Ref 'DLC04HubPackDisableMarker' (01056D32) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04HubPackDisableMarker' (01056D32) no longer in location. +MASTERFILE: Special Ref 'DLC04HubPackDisableMarker' (06056D32) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04HubPackDisableMarker' (06056D32) no longer in location. +MASTERFILE: Special Ref 'DLC04KatelynAlderREF' (0101E309) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04KatelynAlderREF' (0101E309) no longer in location. +MASTERFILE: Special Ref 'DLC04KatelynAlderREF' (0601E309) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04KatelynAlderREF' (0601E309) no longer in location. +MASTERFILE: Special Ref 'DLC04KiddieFlagpoleRef' (01008815) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04KiddieFlagpoleRef' (01008815) no longer in location. +MASTERFILE: Special Ref 'DLC04KiddieFlagpoleRef' (06008815) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04KiddieFlagpoleRef' (06008815) no longer in location. +MASTERFILE: Special Ref 'DLC04KiddieKingdomMapMarkerRef' (0104190C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04KiddieKingdomMapMarkerRef' (0104190C) no longer in location. +MASTERFILE: Special Ref 'DLC04KiddieKingdomMapMarkerRef' (0604190C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04KiddieKingdomMapMarkerRef' (0604190C) no longer in location. +MASTERFILE: Special Ref 'DLC04LvlNukalurkAmbush' (0104E9EF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04LvlNukalurkAmbush' (0104E9EF) no longer in location. +MASTERFILE: Special Ref 'DLC04LvlNukalurkAmbush' (0604E9EF) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04LvlNukalurkAmbush' (0604E9EF) no longer in location. +MASTERFILE: Special Ref 'DLC04MHubMarketCenterMarker' (01026205) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MHubMarketCenterMarker' (01026205) no longer in location. +MASTERFILE: Special Ref 'DLC04MHubMarketCenterMarker' (06026205) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MHubMarketCenterMarker' (06026205) no longer in location. +MASTERFILE: Special Ref 'DLC04MQ04_SetStage160TriggerREF' (0101B006) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MQ04_SetStage160TriggerREF' (0101B006) no longer in location. +MASTERFILE: Special Ref 'DLC04MQ04_SetStage160TriggerREF' (0601B006) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MQ04_SetStage160TriggerREF' (0601B006) no longer in location. +MASTERFILE: Special Ref 'DLC04MS01CappyEnableMarker' (01015565) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MS01CappyEnableMarker' (01015565) no longer in location. +MASTERFILE: Special Ref 'DLC04MS01CappyEnableMarker' (06015565) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MS01CappyEnableMarker' (06015565) no longer in location. +MASTERFILE: Special Ref 'DLC04MS01SierraPetrovitaRef' (01013A50) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MS01SierraPetrovitaRef' (01013A50) no longer in location. +MASTERFILE: Special Ref 'DLC04MS01SierraPetrovitaRef' (06013A50) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04MS01SierraPetrovitaRef' (06013A50) no longer in location. +MASTERFILE: Special Ref 'DLC04NiraRef' (010234A3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NiraRef' (010234A3) no longer in location. +MASTERFILE: Special Ref 'DLC04NiraRef' (060234A3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NiraRef' (060234A3) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaStationMapMarkerRef' (0100B8E3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaStationMapMarkerRef' (0100B8E3) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaStationMapMarkerRef' (0600B8E3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaStationMapMarkerRef' (0600B8E3) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaTownUSAMapMarkerRef' (0102446D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaTownUSAMapMarkerRef' (0102446D) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaTownUSAMapMarkerRef' (0602446D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaTownUSAMapMarkerRef' (0602446D) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaWorldMapMarker' (01025515) is not in the Special Ref data. +MASTERFILE: Special Ref 'DLC04NukaWorldMapMarker' (06025515) is not in the Special Ref data. +MASTERFILE: Special Ref 'DLC04NukaWorldPowerPlantMapMarker' (0104C76C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaWorldPowerPlantMapMarker' (0104C76C) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaWorldPowerPlantMapMarker' (0604C76C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaWorldPowerPlantMapMarker' (0604C76C) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaWorldRedRocketMapMarkerRef' (0104C76E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaWorldRedRocketMapMarkerRef' (0104C76E) no longer in location. +MASTERFILE: Special Ref 'DLC04NukaWorldRedRocketMapMarkerRef' (0604C76E) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04NukaWorldRedRocketMapMarkerRef' (0604C76E) no longer in location. +MASTERFILE: Special Ref 'DLC04OperatorsMapMarkerRef' (0104DF88) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04OperatorsMapMarkerRef' (0104DF88) no longer in location. +MASTERFILE: Special Ref 'DLC04OperatorsMapMarkerRef' (0604DF88) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04OperatorsMapMarkerRef' (0604DF88) no longer in location. +MASTERFILE: Special Ref 'DLC04POISC07_BrettDunmoreRef' (01042B48) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04POISC07_BrettDunmoreRef' (01042B48) no longer in location. +MASTERFILE: Special Ref 'DLC04POISC07_BrettDunmoreRef' (06042B48) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04POISC07_BrettDunmoreRef' (06042B48) no longer in location. +MASTERFILE: Special Ref 'DLC04POISC07_KaliDunmore' (01042B4A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04POISC07_KaliDunmore' (01042B4A) no longer in location. +MASTERFILE: Special Ref 'DLC04POISC07_KaliDunmore' (06042B4A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04POISC07_KaliDunmore' (06042B4A) no longer in location. +MASTERFILE: Special Ref 'DLC04POISC07_MoniqueDunmoreRef' (01042B49) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04POISC07_MoniqueDunmoreRef' (01042B49) no longer in location. +MASTERFILE: Special Ref 'DLC04POISC07_MoniqueDunmoreRef' (06042B49) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04POISC07_MoniqueDunmoreRef' (06042B49) no longer in location. +MASTERFILE: Special Ref 'DLC04RadioDoctorEnableMarkerRef' (01043B3A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04RadioDoctorEnableMarkerRef' (01043B3A) no longer in location. +MASTERFILE: Special Ref 'DLC04RadioDoctorEnableMarkerRef' (06043B3A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04RadioDoctorEnableMarkerRef' (06043B3A) no longer in location. +MASTERFILE: Special Ref 'DLC04RadioPondEnableMarkerRef' (01043B3C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04RadioPondEnableMarkerRef' (01043B3C) no longer in location. +MASTERFILE: Special Ref 'DLC04RadioPondEnableMarkerRef' (06043B3C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04RadioPondEnableMarkerRef' (06043B3C) no longer in location. +MASTERFILE: Special Ref 'DLC04RedRocketWorkshopREF' (0100BCE7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04RedRocketWorkshopREF' (0100BCE7) no longer in location. +MASTERFILE: Special Ref 'DLC04RedRocketWorkshopREF' (0600BCE7) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04RedRocketWorkshopREF' (0600BCE7) no longer in location. +MASTERFILE: Special Ref 'DLC04SafariAdventureMapMarkerRef' (010260E3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04SafariAdventureMapMarkerRef' (010260E3) no longer in location. +MASTERFILE: Special Ref 'DLC04SafariAdventureMapMarkerRef' (060260E3) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04SafariAdventureMapMarkerRef' (060260E3) no longer in location. +MASTERFILE: Special Ref 'DLC04ShankREF' (0101E30A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04ShankREF' (0101E30A) no longer in location. +MASTERFILE: Special Ref 'DLC04ShankREF' (0601E30A) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04ShankREF' (0601E30A) no longer in location. +MASTERFILE: Special Ref 'DLC04TraderFemale01Ref' (0102621B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04TraderFemale01Ref' (0102621B) no longer in location. +MASTERFILE: Special Ref 'DLC04TraderFemale01Ref' (0602621B) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04TraderFemale01Ref' (0602621B) no longer in location. +MASTERFILE: Special Ref 'DLC04TraderFemale02Ref' (0102621C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04TraderFemale02Ref' (0102621C) no longer in location. +MASTERFILE: Special Ref 'DLC04TraderFemale02Ref' (0602621C) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04TraderFemale02Ref' (0602621C) no longer in location. +MASTERFILE: Special Ref 'DLC04TraderMale01Ref' (0102621D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04TraderMale01Ref' (0102621D) no longer in location. +MASTERFILE: Special Ref 'DLC04TraderMale01Ref' (0602621D) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04TraderMale01Ref' (0602621D) no longer in location. +MASTERFILE: Special Ref 'DLC04UFORideWidgetActivator' (01032430) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04UFORideWidgetActivator' (01032430) no longer in location. +MASTERFILE: Special Ref 'DLC04UFORideWidgetActivator' (06032430) is not in the Special Ref data. +MASTERFILE: Special ref 'DLC04UFORideWidgetActivator' (06032430) no longer in location. +MASTERFILE: Special Ref 'DN035_EasyCityDownsRadio' (0100ED28) is not in the Special Ref data. +MASTERFILE: Special ref 'DN035_EasyCityDownsRadio' (0100ED28) no longer in location. +MASTERFILE: Special Ref 'DN035_EasyCityDownsRadio' (0100EE4E) is not in the Special Ref data. +MASTERFILE: Special ref 'DN035_EasyCityDownsRadio' (0100EE4E) no longer in location. +MASTERFILE: Special Ref 'DN035_EasyCityDownsRadio' (0600ED28) is not in the Special Ref data. +MASTERFILE: Special ref 'DN035_EasyCityDownsRadio' (0600ED28) no longer in location. +MASTERFILE: Special Ref 'DN035_EasyCityDownsRadio' (0600EE4E) is not in the Special Ref data. +MASTERFILE: Special ref 'DN035_EasyCityDownsRadio' (0600EE4E) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105669A) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105669A) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (010566B0) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (010566B0) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (010566B2) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (010566B2) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105670A) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105670A) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105670C) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105670C) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105670D) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105670D) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056710) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056710) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056713) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056713) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056716) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056716) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056718) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056718) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105671B) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105671B) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105671D) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105671D) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105671F) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105671F) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056722) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056722) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056724) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056724) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056726) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056726) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056728) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056728) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105672B) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105672B) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105672D) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105672D) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056730) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056730) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056732) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056732) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056735) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056735) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056737) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056737) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056739) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056739) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105673A) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105673A) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0105673E) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0105673E) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056740) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056740) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (01056741) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (01056741) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605669A) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605669A) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (060566B0) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (060566B0) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (060566B2) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (060566B2) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605670A) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605670A) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605670C) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605670C) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605670D) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605670D) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056710) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056710) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056713) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056713) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056716) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056716) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056718) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056718) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605671B) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605671B) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605671D) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605671D) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605671F) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605671F) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056722) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056722) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056724) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056724) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056726) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056726) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056728) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056728) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605672B) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605672B) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605672D) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605672D) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056730) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056730) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056732) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056732) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056735) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056735) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056737) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056737) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056739) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056739) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605673A) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605673A) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (0605673E) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (0605673E) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056740) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056740) no longer in location. +MASTERFILE: Special Ref 'DN051_LvlFeralGhoulAmbush' (06056741) is not in the Special Ref data. +MASTERFILE: Special ref 'DN051_LvlFeralGhoulAmbush' (06056741) no longer in location. +MASTERFILE: Special Ref 'FenceWoodStr03_DLC04' (0102068C) is not in the Special Ref data. +MASTERFILE: Special ref 'FenceWoodStr03_DLC04' (0102068C) no longer in location. +MASTERFILE: Special Ref 'FenceWoodStr03_DLC04' (0602068C) is not in the Special Ref data. +MASTERFILE: Special ref 'FenceWoodStr03_DLC04' (0602068C) no longer in location. +MASTERFILE: Special ref 'GeneralAtomicsFactoryMapMarker' (000F75E9) no longer in location. +MASTERFILE: Special Ref 'GenericQuestContainer' (01044F0B) is not in the Special Ref data. +MASTERFILE: Special ref 'GenericQuestContainer' (01044F0B) no longer in location. +MASTERFILE: Special Ref 'GenericQuestContainer' (06044F0B) is not in the Special Ref data. +MASTERFILE: Special ref 'GenericQuestContainer' (06044F0B) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker01' (01056BA1) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker01' (01056BA1) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker01' (06056BA1) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker01' (06056BA1) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker02' (01056BA8) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker02' (01056BA8) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker02' (06056BA8) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker02' (06056BA8) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker03' (01056BA9) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker03' (01056BA9) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker03' (06056BA9) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker03' (06056BA9) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker04' (01056BAA) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker04' (01056BAA) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker04' (06056BAA) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker04' (06056BAA) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker05' (01056BAB) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker05' (01056BAB) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker05' (06056BAB) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker05' (06056BAB) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker06' (01056BAC) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker06' (01056BAC) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker06' (06056BAC) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker06' (06056BAC) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker07' (01056BAD) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker07' (01056BAD) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker07' (06056BAD) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker07' (06056BAD) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker08' (01056BAE) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker08' (01056BAE) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker08' (06056BAE) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker08' (06056BAE) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker09' (01056BAF) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker09' (01056BAF) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker09' (06056BAF) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker09' (06056BAF) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker10' (01056C17) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker10' (01056C17) no longer in location. +MASTERFILE: Special Ref 'KK_BossFight_TeleportMarker10' (06056C17) is not in the Special Ref data. +MASTERFILE: Special ref 'KK_BossFight_TeleportMarker10' (06056C17) no longer in location. +MASTERFILE: Special Ref 'KKTunnels01ToNorth' (01028653) is not in the Special Ref data. +MASTERFILE: Special ref 'KKTunnels01ToNorth' (01028653) no longer in location. +MASTERFILE: Special Ref 'KKTunnels01ToNorth' (06028653) is not in the Special Ref data. +MASTERFILE: Special ref 'KKTunnels01ToNorth' (06028653) no longer in location. +MASTERFILE: Special Ref 'KKTunnelsExtToSouth' (01028629) is not in the Special Ref data. +MASTERFILE: Special ref 'KKTunnelsExtToSouth' (01028629) no longer in location. +MASTERFILE: Special Ref 'KKTunnelsExtToSouth' (06028629) is not in the Special Ref data. +MASTERFILE: Special ref 'KKTunnelsExtToSouth' (06028629) no longer in location. +MASTERFILE: Special Ref 'KKTunnelsExtToWest' (010315B9) is not in the Special Ref data. +MASTERFILE: Special ref 'KKTunnelsExtToWest' (010315B9) no longer in location. +MASTERFILE: Special Ref 'KKTunnelsExtToWest' (060315B9) is not in the Special Ref data. +MASTERFILE: Special ref 'KKTunnelsExtToWest' (060315B9) no longer in location. +MASTERFILE: Special Ref 'Loot_IndustrialTrunk_Boss' (01050022) is not in the Special Ref data. +MASTERFILE: Special ref 'Loot_IndustrialTrunk_Boss' (01050022) no longer in location. +MASTERFILE: Special Ref 'Loot_IndustrialTrunk_Boss' (06050022) is not in the Special Ref data. +MASTERFILE: Special ref 'Loot_IndustrialTrunk_Boss' (06050022) no longer in location. +MASTERFILE: Special ref 'Loot_Prewar_TrunkSilver_Boss' (00099BFE) no longer in location. +MASTERFILE: Special Ref 'Loot_Raider_Trunk_Boss' (010088A0) is not in the Special Ref data. +MASTERFILE: Special Ref 'Loot_Raider_TrunkSilver_Boss' (010541AA) is not in the Special Ref data. +MASTERFILE: Special ref 'Loot_Raider_TrunkSilver_Boss' (010541AA) no longer in location. +MASTERFILE: Special Ref 'Loot_Raider_TrunkSilver_Boss' (060541AA) is not in the Special Ref data. +MASTERFILE: Special ref 'Loot_Raider_TrunkSilver_Boss' (060541AA) no longer in location. +MASTERFILE: Special ref 'LvlMrGutsy' (00108405) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0102DB58) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0102DB58) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0102DB59) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0102DB59) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0102DB5A) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0102DB5A) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0102DB5B) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0102DB5B) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0102DB5D) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0102DB5D) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0602DB58) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0602DB58) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0602DB59) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0602DB59) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0602DB5A) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0602DB5A) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0602DB5B) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0602DB5B) no longer in location. +MASTERFILE: Special Ref 'LvlTurretBubbleRaider' (0602DB5D) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretBubbleRaider' (0602DB5D) no longer in location. +MASTERFILE: Special Ref 'LvlTurretTripodRaider' (0102DB55) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretTripodRaider' (0102DB55) no longer in location. +MASTERFILE: Special Ref 'LvlTurretTripodRaider' (0102DB57) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretTripodRaider' (0102DB57) no longer in location. +MASTERFILE: Special Ref 'LvlTurretTripodRaider' (0102DB5C) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretTripodRaider' (0102DB5C) no longer in location. +MASTERFILE: Special Ref 'LvlTurretTripodRaider' (0602DB55) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretTripodRaider' (0602DB55) no longer in location. +MASTERFILE: Special Ref 'LvlTurretTripodRaider' (0602DB57) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretTripodRaider' (0602DB57) no longer in location. +MASTERFILE: Special Ref 'LvlTurretTripodRaider' (0602DB5C) is not in the Special Ref data. +MASTERFILE: Special ref 'LvlTurretTripodRaider' (0602DB5C) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (01003CC3) is not in the Special Ref data. +MASTERFILE: Special Ref 'MapMarker' (0101CD2A) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0101CD2A) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0101EFCD) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0101EFCD) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104C5E7) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104C5E7) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104C5EA) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104C5EA) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104C5EB) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104C5EB) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104C5ED) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104C5ED) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104C7A5) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104C7A5) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CBC1) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CBC1) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CBC2) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CBC2) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CBC3) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CBC3) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CBC7) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CBC7) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CD93) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CD93) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CD94) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CD94) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104CD95) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104CD95) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0104E0EE) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0104E0EE) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (05003CC3) is not in the Special Ref data. +MASTERFILE: Special Ref 'MapMarker' (0601CD2A) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0601CD2A) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0601EFCD) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0601EFCD) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604C5E7) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604C5E7) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604C5EA) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604C5EA) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604C5EB) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604C5EB) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604C5ED) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604C5ED) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604C7A5) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604C7A5) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CBC1) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CBC1) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CBC2) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CBC2) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CBC3) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CBC3) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CBC7) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CBC7) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CD93) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CD93) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CD94) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CD94) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604CD95) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604CD95) no longer in location. +MASTERFILE: Special Ref 'MapMarker' (0604E0EE) is not in the Special Ref data. +MASTERFILE: Special ref 'MapMarker' (0604E0EE) no longer in location. +MASTERFILE: Special Ref 'NukaworldJunkyardMapMarkerRef' (01017647) is not in the Special Ref data. +MASTERFILE: Special ref 'NukaworldJunkyardMapMarkerRef' (01017647) no longer in location. +MASTERFILE: Special Ref 'NukaworldJunkyardMapMarkerRef' (06017647) is not in the Special Ref data. +MASTERFILE: Special ref 'NukaworldJunkyardMapMarkerRef' (06017647) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01025F47) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01025F47) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01025F48) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01025F48) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01025F49) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01025F49) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01025F4A) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01025F4A) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01044C90) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01044C90) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01044C91) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01044C91) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01048946) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01048946) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01048947) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01048947) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01048948) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01048948) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01048949) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01048949) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (0104894A) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (0104894A) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (0104894B) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (0104894B) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01051EFC) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01051EFC) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01051EFD) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01051EFD) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (01051EFF) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (01051EFF) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06025F47) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06025F47) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06025F48) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06025F48) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06025F49) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06025F49) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06025F4A) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06025F4A) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06044C90) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06044C90) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06044C91) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06044C91) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06048946) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06048946) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06048947) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06048947) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06048948) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06048948) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06048949) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06048949) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (0604894A) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (0604894A) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (0604894B) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (0604894B) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06051EFC) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06051EFC) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06051EFD) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06051EFD) no longer in location. +MASTERFILE: Special Ref 'PatrolIdleMarker' (06051EFF) is not in the Special Ref data. +MASTERFILE: Special ref 'PatrolIdleMarker' (06051EFF) no longer in location. +MASTERFILE: Special Ref 'RETriggerAssault' (01051F08) is not in the Special Ref data. +MASTERFILE: Special ref 'RETriggerAssault' (01051F08) no longer in location. +MASTERFILE: Special Ref 'RETriggerAssault' (06051F08) is not in the Special Ref data. +MASTERFILE: Special ref 'RETriggerAssault' (06051F08) no longer in location. +MASTERFILE: Special Ref 'SWflat2x2Grate_1' (0101F145) is not in the Special Ref data. +MASTERFILE: Special ref 'SWflat2x2Grate_1' (0101F145) no longer in location. +MASTERFILE: Special Ref 'SWflat2x2Grate_1' (01048C02) is not in the Special Ref data. +MASTERFILE: Special ref 'SWflat2x2Grate_1' (01048C02) no longer in location. +MASTERFILE: Special Ref 'SWflat2x2Grate_1' (0601F145) is not in the Special Ref data. +MASTERFILE: Special ref 'SWflat2x2Grate_1' (0601F145) no longer in location. +MASTERFILE: Special Ref 'SWflat2x2Grate_1' (06048C02) is not in the Special Ref data. +MASTERFILE: Special ref 'SWflat2x2Grate_1' (06048C02) no longer in location. +MASTERFILE: Special Ref 'XMarker' (01004319) is not in the Special Ref data. +MASTERFILE: Special Ref 'XMarker' (0100EBBB) is not in the Special Ref data. +MASTERFILE: Special Ref 'XMarker' (01051EF5) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarker' (01051EF5) no longer in location. +MASTERFILE: Special Ref 'XMarker' (01051F00) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarker' (01051F00) no longer in location. +MASTERFILE: Special Ref 'XMarker' (06051EF5) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarker' (06051EF5) no longer in location. +MASTERFILE: Special Ref 'XMarker' (06051F00) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarker' (06051F00) no longer in location. +MASTERFILE: Special ref 'XMarkerHeading' (0019E6DD) no longer in location. +MASTERFILE: Special ref 'XMarkerHeading' (0019E6DE) no longer in location. +MASTERFILE: Special ref 'XMarkerHeading' (0019E6DF) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01004318) is not in the Special Ref data. +MASTERFILE: Special Ref 'XMarkerHeading' (0100BCE8) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0100BCE8) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0100BCEE) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0100BCEE) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01017649) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01017649) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0101764A) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0101764A) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0103D7D5) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0103D7D5) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0103E449) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0103E449) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01041289) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01041289) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F05) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F05) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F06) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F06) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F07) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F07) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F09) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F09) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F0A) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F0A) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F0C) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F0C) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01051F0D) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01051F0D) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01053B93) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01053B93) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01053B94) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01053B94) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (01053B95) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (01053B95) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0600BCE8) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0600BCE8) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0600BCEE) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0600BCEE) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06017649) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06017649) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0601764A) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0601764A) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0603D7D5) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0603D7D5) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (0603E449) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (0603E449) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06041289) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06041289) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F05) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F05) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F06) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F06) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F07) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F07) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F09) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F09) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F0A) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F0A) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F0C) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F0C) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06051F0D) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06051F0D) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06053B93) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06053B93) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06053B94) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06053B94) no longer in location. +MASTERFILE: Special Ref 'XMarkerHeading' (06053B95) is not in the Special Ref data. +MASTERFILE: Special ref 'XMarkerHeading' (06053B95) no longer in location. +MASTERFILE: Start Scene Action 15 on scene 'DN035_Announcement01_Idle' (0011FBCC) points to unnamed start phase 2 on scene 'DN035_Announcement01_Idle' (0011FBCC). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +MASTERFILE: Start Scene Action 4 on scene 'DN035_Announcement01_Idle' (0011FBCC) points to unnamed start phase 2 on scene 'DN035_Announcement01_Idle' (0011FBCC). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +MASTERFILE: Start Scene Action 7 on scene 'DLC03_V118_PearlAvery_LoopScene' (01036921) points to unnamed start phase 1 on scene 'DLC03_V118_PearlAvery_LoopScene' (01036921). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +MASTERFILE: Start Scene Action 7 on scene 'DLC03_V118_PearlAvery_LoopScene' (03036921) points to unnamed start phase 1 on scene 'DLC03_V118_PearlAvery_LoopScene' (03036921). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +MASTERFILE: Topic info (0002D9F8) cannot set quest stage 475 on end because the parent quest DN121 (00026340) doesn't have a stage with that index. +MASTERFILE: Topic info (00147AD0) cannot set quest stage 20 on end because the parent quest FFDiamondCity07 (000456E8) doesn't have a stage with that index. +MASTERFILE: Unable to find layer 01006FCB. Layer data will be removed. +MASTERFILE: Unable to find layer 06006FCB. Layer data will be removed. +MASTERFILE: Unable to find Leveled Object Form (01048856) for owner object "DLC03_LL_Armor_Trapper_Coast_Underwear". +MASTERFILE: Unable to find Leveled Object Form (01048C06) for owner object "DLC03MQ02_LCharMirelurkHunter". +MASTERFILE: Unable to find Leveled Object Form (03048856) for owner object "DLC03_LL_Armor_Trapper_Coast_Underwear". +MASTERFILE: Unable to find Leveled Object Form (03048C06) for owner object "DLC03MQ02_LCharMirelurkHunter". +MASTERFILE: Unable to find linked reference 00091D4A for reference defaultLightCool03FlickerNSGoboCage (00091D49). Linked reference data will be removed. +MASTERFILE: Unable to find linked reference 00246B4D for reference MuseumBounceWarm04NS (000BAFB5). Linked reference data will be removed. +MASTERFILE: Unable to find location 0002768B. Location data will be removed. +MASTERFILE: Unable to find material swap 0022CE41. Material swap data will be removed. +MASTERFILE: Unable to find material swap 0101CE18. Material swap data will be removed. +MASTERFILE: Unable to find material swap 0601CE18. Material swap data will be removed. +MASTERFILE: Unable to find Package Location Reference (01008AE3) on owner object "DLC01MQ04AdaHesterPackage". +MASTERFILE: Unable to find Package Target Reference (00000000) on owner object "DLC04_KK_TheaterSit_Box". +MASTERFILE: Unable to find Package Target Reference (00000000) on owner object "DLC04SafariCitoShowCorpsePackage". +MASTERFILE: Unable to find reference group 000939E1. Reference group data will be removed. +MASTERFILE: Unable to find reference group 000DB86D. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01013491. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0101F1CD. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0101F9E0. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01020212. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030B8B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030BD9. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030BEE. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030BF1. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030BF4. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030C09. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030C13. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01030C3E. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01031516. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01031527. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01031538. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01031549. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0103155A. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0103156B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01031E23. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01031E2B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 010323D1. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01032F68. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01033AED. Reference group data will be removed. +MASTERFILE: Unable to find reference group 01033AF8. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0103B7BA. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0103B7BF. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0301F9E0. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0303B7BA. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0303B7BF. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0601F1CD. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06020212. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030B8B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030BD9. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030BEE. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030BF1. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030BF4. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030C09. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030C13. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06030C3E. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06031516. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06031527. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06031538. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06031549. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0603155A. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0603156B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06031E23. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06031E2B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 060323D1. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06032F68. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06033AED. Reference group data will be removed. +MASTERFILE: Unable to find reference group 06033AF8. Reference group data will be removed. +MASTERFILE: Unable to find scene (000E9891) on scene collection (000e9890) 'DN079_TheoCollection1' +MASTERFILE: Unable to find scene (010486C0) on scene collection (010486b9) 'DLC04_KiddieKingdomRoofSceneColl' +MASTERFILE: Unable to find scene (010486C1) on scene collection (010486b9) 'DLC04_KiddieKingdomRoofSceneColl' +MASTERFILE: Unable to find scene (060486C0) on scene collection (060486b9) 'DLC04_KiddieKingdomRoofSceneColl' +MASTERFILE: Unable to find scene (060486C1) on scene collection (060486b9) 'DLC04_KiddieKingdomRoofSceneColl' +PACKAGES: TESCustomPackageData::InitItem: custom package has no procedure tree. +QUESTS: Could not find previous info (01001461) for TopicInfo (01001462) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100146D) for TopicInfo (0101095A) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100148D) for TopicInfo (0100148E) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100148F) for TopicInfo (0100146E) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100A1D6) for TopicInfo (0100A1D7) in Topic "" (0100A1B1). +QUESTS: Could not find previous info (0100BE2E) for TopicInfo (0100BE2F) in Topic "" (0100BD97). +QUESTS: Could not find previous info (010143E3) for TopicInfo (010143E4) in Topic "" (010143D3). +QUESTS: Could not find previous info (0101542E) for TopicInfo (0101542F) in Topic "" (0100BD85). +QUESTS: Could not find previous info (01015A79) for TopicInfo (010357D8) in Topic "" (01015A6D). +QUESTS: Could not find previous info (0101AACC) for TopicInfo (01037B9E) in Topic "" (010253B2). +QUESTS: Could not find previous info (0101F65E) for TopicInfo (0101F65F) in Topic "" (0101F65D). +QUESTS: Could not find previous info (0101F66F) for TopicInfo (0101F670) in Topic "" (0101F65D). +QUESTS: Could not find previous info (0101F940) for TopicInfo (0101F941) in Topic "" (0101F8D0). +QUESTS: Could not find previous info (0101F98A) for TopicInfo (0101F98B) in Topic "" (0101F8CF). +QUESTS: Could not find previous info (0101FB37) for TopicInfo (0101FB38) in Topic "" (0101E38C). +QUESTS: Could not find previous info (0101FB38) for TopicInfo (010209F6) in Topic "" (0101E38C). +QUESTS: Could not find previous info (010209F8) for TopicInfo (010209FA) in Topic "" (0101E38C). +QUESTS: Could not find previous info (01021753) for TopicInfo (01048DC7) in Topic "" (01005416). +QUESTS: Could not find previous info (010232C3) for TopicInfo (010232C4) in Topic "" (01023229). +QUESTS: Could not find previous info (01023398) for TopicInfo (0102439B) in Topic "" (0101E38C). +QUESTS: Could not find previous info (0102367F) for TopicInfo (01037DBD) in Topic "" (0102367B). +QUESTS: Could not find previous info (010261EF) for TopicInfo (010261F1) in Topic "" (0101AAC2). +QUESTS: Could not find previous info (010261FE) for TopicInfo (01028832) in Topic "" (0101AAC2). +QUESTS: Could not find previous info (01027745) for TopicInfo (01027746) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (0102774B) for TopicInfo (0102774C) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01027798) for TopicInfo (01044934) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01027799) for TopicInfo (0102779A) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (010277AE) for TopicInfo (01028A2C) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028832) for TopicInfo (0104C7F2) in Topic "" (0101AAC2). +QUESTS: Could not find previous info (01028A31) for TopicInfo (01028A32) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028A35) for TopicInfo (01027799) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028A36) for TopicInfo (01044953) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028A3A) for TopicInfo (01042A60) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028D3F) for TopicInfo (01028D40) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028D42) for TopicInfo (01028D43) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028D45) for TopicInfo (01028D46) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01028D4D) for TopicInfo (01028D4E) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (010295C6) for TopicInfo (01009923) in Topic "" (01009916). +QUESTS: Could not find previous info (01029B65) for TopicInfo (01029B66) in Topic "" (01020BDC). +QUESTS: Could not find previous info (0102C69E) for TopicInfo (01056933) in Topic "" (01014367). +QUESTS: Could not find previous info (0103009C) for TopicInfo (0102E8C5) in Topic "" (0100CF51). +QUESTS: Could not find previous info (01030ABA) for TopicInfo (01030ABB) in Topic "" (01030A9F). +QUESTS: Could not find previous info (010311AD) for TopicInfo (010311AF) in Topic "" (01015A6D). +QUESTS: Could not find previous info (010350FA) for TopicInfo (01017F87) in Topic "" (01017F65). +QUESTS: Could not find previous info (010357D5) for TopicInfo (01019EC9) in Topic "" (0100CF51). +QUESTS: Could not find previous info (01037484) for TopicInfo (0103747E) in Topic "" (01021280). +QUESTS: Could not find previous info (0103775A) for TopicInfo (0103775B) in Topic "" (01037759). +QUESTS: Could not find previous info (01037766) for TopicInfo (01037767) in Topic "" (01037759). +QUESTS: Could not find previous info (01037CC5) for TopicInfo (01037CC6) in Topic "" (01037C9A). +QUESTS: Could not find previous info (01040A9D) for TopicInfo (0104971B) in Topic "" (01040A93). +QUESTS: Could not find previous info (01042A61) for TopicInfo (01042A62) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01042A62) for TopicInfo (01028A3B) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01044953) for TopicInfo (010277AF) in Topic "DLC04COMGageIdle" (01027716). +QUESTS: Could not find previous info (01045CB7) for TopicInfo (01045CB8) in Topic "" (01044694). +QUESTS: Could not find previous info (01046B57) for TopicInfo (01046CE6) in Topic "" (01044D8C). +QUESTS: Could not find previous info (01049238) for TopicInfo (01037CC4) in Topic "" (01037C9A). +QUESTS: Could not find previous info (0104965B) for TopicInfo (01030AB5) in Topic "" (01030A9F). +QUESTS: Could not find previous info (0300BE2E) for TopicInfo (0300BE2F) in Topic "" (0300BD97). +QUESTS: Could not find previous info (030143E3) for TopicInfo (030143E4) in Topic "" (030143D3). +QUESTS: Could not find previous info (0301542E) for TopicInfo (0301542F) in Topic "" (0300BD85). +QUESTS: Could not find previous info (03021753) for TopicInfo (03048DC7) in Topic "" (03005416). +QUESTS: Could not find previous info (0302367F) for TopicInfo (03037DBD) in Topic "" (0302367B). +QUESTS: Could not find previous info (030295C6) for TopicInfo (03009923) in Topic "" (03009916). +QUESTS: Could not find previous info (03029B65) for TopicInfo (03029B66) in Topic "" (03020BDC). +QUESTS: Could not find previous info (03037484) for TopicInfo (0303747E) in Topic "" (03021280). +QUESTS: Could not find previous info (03037CC5) for TopicInfo (03037CC6) in Topic "" (03037C9A). +QUESTS: Could not find previous info (03040A9D) for TopicInfo (0304971B) in Topic "" (03040A93). +QUESTS: Could not find previous info (03045CB7) for TopicInfo (03045CB8) in Topic "" (03044694). +QUESTS: Could not find previous info (03049238) for TopicInfo (03037CC4) in Topic "" (03037C9A). +QUESTS: Could not find previous info (0600A1D6) for TopicInfo (0600A1D7) in Topic "" (0600A1B1). +QUESTS: Could not find previous info (06015A79) for TopicInfo (060357D8) in Topic "" (06015A6D). +QUESTS: Could not find previous info (0601AACC) for TopicInfo (06037B9E) in Topic "" (060253B2). +QUESTS: Could not find previous info (0601F65E) for TopicInfo (0601F65F) in Topic "" (0601F65D). +QUESTS: Could not find previous info (0601F66F) for TopicInfo (0601F670) in Topic "" (0601F65D). +QUESTS: Could not find previous info (0601F940) for TopicInfo (0601F941) in Topic "" (0601F8D0). +QUESTS: Could not find previous info (0601F98A) for TopicInfo (0601F98B) in Topic "" (0601F8CF). +QUESTS: Could not find previous info (0601FB37) for TopicInfo (0601FB38) in Topic "" (0601E38C). +QUESTS: Could not find previous info (0601FB38) for TopicInfo (060209F6) in Topic "" (0601E38C). +QUESTS: Could not find previous info (060209F8) for TopicInfo (060209FA) in Topic "" (0601E38C). +QUESTS: Could not find previous info (060232C3) for TopicInfo (060232C4) in Topic "" (06023229). +QUESTS: Could not find previous info (06023398) for TopicInfo (0602439B) in Topic "" (0601E38C). +QUESTS: Could not find previous info (060261EF) for TopicInfo (060261F1) in Topic "" (0601AAC2). +QUESTS: Could not find previous info (060261FE) for TopicInfo (06028832) in Topic "" (0601AAC2). +QUESTS: Could not find previous info (06027745) for TopicInfo (06027746) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (0602774B) for TopicInfo (0602774C) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06027798) for TopicInfo (06044934) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06027799) for TopicInfo (0602779A) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (060277AE) for TopicInfo (06028A2C) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028832) for TopicInfo (0604C7F2) in Topic "" (0601AAC2). +QUESTS: Could not find previous info (06028A31) for TopicInfo (06028A32) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028A35) for TopicInfo (06027799) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028A36) for TopicInfo (06044953) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028A3A) for TopicInfo (06042A60) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028D3F) for TopicInfo (06028D40) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028D42) for TopicInfo (06028D43) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028D45) for TopicInfo (06028D46) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06028D4D) for TopicInfo (06028D4E) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (0602C69E) for TopicInfo (06056933) in Topic "" (06014367). +QUESTS: Could not find previous info (0603009C) for TopicInfo (0602E8C5) in Topic "" (0600CF51). +QUESTS: Could not find previous info (06030ABA) for TopicInfo (06030ABB) in Topic "" (06030A9F). +QUESTS: Could not find previous info (060311AD) for TopicInfo (060311AF) in Topic "" (06015A6D). +QUESTS: Could not find previous info (060350FA) for TopicInfo (06017F87) in Topic "" (06017F65). +QUESTS: Could not find previous info (060357D5) for TopicInfo (06019EC9) in Topic "" (0600CF51). +QUESTS: Could not find previous info (0603775A) for TopicInfo (0603775B) in Topic "" (06037759). +QUESTS: Could not find previous info (06037766) for TopicInfo (06037767) in Topic "" (06037759). +QUESTS: Could not find previous info (06042A61) for TopicInfo (06042A62) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06042A62) for TopicInfo (06028A3B) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06044953) for TopicInfo (060277AF) in Topic "DLC04COMGageIdle" (06027716). +QUESTS: Could not find previous info (06046B57) for TopicInfo (06046CE6) in Topic "" (06044D8C). +QUESTS: Could not find previous info (0604965B) for TopicInfo (06030AB5) in Topic "" (06030A9F). +QUESTS: Quest DLC01WorkshopBotRaiderAttack01 (0100FD17) has not been added to the story manager. +QUESTS: Quest DLC01WorkshopBotRaiderAttack02 (0100FD1B) has not been added to the story manager. +QUESTS: Quest DLC03WorkshopTrapperAttack01 (0304B651) has not been added to the story manager. +SCRIPTS: Property BarberChair on script HaircutScript on DLC03_Vault118_Barbara (01043B0B) is pointing at an invalid object +SCRIPTS: Property BarberChair on script HaircutScript on DLC03_Vault118_Barbara (03043B0B) is pointing at an invalid object +SCRIPTS: Property DLC04_WW02 on script DLC04:WW_StartCritterHunt on DefaultActivateSelfTrigger (01040B26) is pointing at an invalid object +SCRIPTS: Property DLC04_WW02 on script DLC04:WW_StartCritterHunt on DefaultActivateSelfTrigger (06040B26) is pointing at an invalid object +SCRIPTS: Property DLC04GZHostileRobotsFaction on script DLC04:DLC04GZBattlezoneQuestScript on DLC04GZBattlezone (010295C8) is pointing at an invalid object +SCRIPTS: Property DLC04GZHostileRobotsFaction on script DLC04:DLC04GZBattlezoneQuestScript on DLC04GZBattlezone (060295C8) is pointing at an invalid object +SCRIPTS: Property DLC04GZNukaGalaxyProcessing on script DLC04:DLC04_GZNukaGalaxyCellDummyScript on DLC04GZ_NukaGalaxyCellDummy (0103841E) is pointing at an invalid object +SCRIPTS: Property DLC04GZNukaGalaxyProcessing on script DLC04:DLC04_GZNukaGalaxyCellDummyScript on DLC04GZ_NukaGalaxyCellDummy (0603841E) is pointing at an invalid object +SCRIPTS: Property FollowerMoveToDepart on script DLC03:DLC03BoatAnimScript on DLC03CoastArrivalAndDeparture (010247B7) is pointing at an invalid object +SCRIPTS: Property FollowerMoveToDepart on script DLC03:DLC03BoatAnimScript on DLC03CoastArrivalAndDeparture (030247B7) is pointing at an invalid object +SCRIPTS: Property Valuables01 on script DLC03:DLC03DialogueV118Script on DLC03DialogueV118 (010316F2) is pointing at an invalid object +SCRIPTS: Property Valuables01 on script DLC03:DLC03DialogueV118Script on DLC03DialogueV118 (030316F2) is pointing at an invalid object +SCRIPTS: Property Valuables02 on script DLC03:DLC03DialogueV118Script on DLC03DialogueV118 (010316F2) is pointing at an invalid object +SCRIPTS: Property Valuables02 on script DLC03:DLC03DialogueV118Script on DLC03DialogueV118 (030316F2) is pointing at an invalid object +SCRIPTS: Property Valuables03 on script DLC03:DLC03DialogueV118Script on DLC03DialogueV118 (010316F2) is pointing at an invalid object +SCRIPTS: Property Valuables03 on script DLC03:DLC03DialogueV118Script on DLC03DialogueV118 (030316F2) is pointing at an invalid object +SCRIPTS: Script defaultrefontriggerenter on MQ05GraveTriggerREF (0101C700) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script defaultrefontriggerenter on MQ05GraveTriggerREF (0301C700) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0104C250) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0104C25B) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0104C260) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0104C261) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0104C27E) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0104C296) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0604C250) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0604C25B) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0604C260) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0604C261) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0604C27E) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script DefaultShowMessageOnActivateRef on DLC04PlaqueBlank (0604C296) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script EMSystemTurfScript on DLC04GZNukaGalaxy_PlanetscapeEMS01 (01039105) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script EMSystemTurfScript on DLC04GZNukaGalaxy_PlanetscapeEMS01 (06039105) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script EMSystemTurfScript on DLC04GZNukaGalaxy_PlanetscapeEMS02 (01039196) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script EMSystemTurfScript on DLC04GZNukaGalaxy_PlanetscapeEMS02 (06039196) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script FusionGeneratorSCRIPT on PowerGenerator02_NeverUseByItself (0100A188) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script FusionGeneratorSCRIPT on PowerGenerator02_NeverUseByItself (0600A188) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script MasterAmbushActorScript on DLC04_lvlRadAnt (0105410D) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script MasterAmbushActorScript on DLC04_lvlRadAnt (0605410D) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script MasterAmbushActorScript on LvlRadscorpion (001F4A2E) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script ProtectronDamaged on xMarkerxFlagBlue (0007270C) is marked as deleted, but the parent object doesn't have one +SCRIPTS: Script protectronSCRIPT on DLC04LvlNukatron (010323C9) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script protectronSCRIPT on DLC04LvlNukatron (060323C9) is marked as edited, but the parent object doesn't have one +SCRIPTS: Script protectronSCRIPT on xMarkerxFlagBlue (0007270C) is marked as deleted, but the parent object doesn't have one +MASTERFILE: GameSetting 'fEnduranceCrippledAPReduction' in file 'Fallout4.esm' is not recognized by the current EXE. +EDITOR: Editor ID 'WorkshopPowerConnection' for KYWD (00054BA4) is not unique, previous object (000002D0) is type AVIF. Editor ID will be set to 'WorkshopPowerConnectionDUPLICATE000'. +MASTERFILE: DefaultObject 'WorkshopForceNewList_DO' in file 'Fallout4.esm' is not recognized by the current EXE. +MASTERFILE: DefaultObject 'MapMarkerPotentialVassal_DO' in file 'Fallout4.esm' is not recognized by the current EXE. +MASTERFILE: DLC file 'DLCRobot.esm' contains non-partial QUST 'CreatureDialogueEyebot' (000AE7E4) +QUESTS: Could not find previous info (01001461) for TopicInfo (01001462) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100146D) for TopicInfo (0101095A) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100148D) for TopicInfo (0100148E) in Topic "DLC01COMRIdles" (01000BF1). +QUESTS: Could not find previous info (0100148F) for TopicInfo (0100146E) in Topic "DLC01COMRIdles" (01000BF1). +EDITOR: Editor ID 'ap_bot_HeadArmorRoboBrain' for KYWD (02036745) is not unique, previous object (01004F39) is type KYWD. Editor ID will be set to 'ap_bot_HeadArmorRoboBrainDUPLICATE000'. +EDITOR: Editor ID 'ap_bot_ModArmLeftRoboBrainArmor' for KYWD (02036744) is not unique, previous object (01004F30) is type KYWD. Editor ID will be set to 'ap_bot_ModArmLeftRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_bot_ModArmRightRoboBrainArmor' for KYWD (02036743) is not unique, previous object (01004F31) is type KYWD. Editor ID will be set to 'ap_bot_ModArmRightRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_bot_HomingMod' for KYWD (02036742) is not unique, previous object (0100837F) is type KYWD. Editor ID will be set to 'ap_bot_HomingModDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_RoboBrainWaistArmor' for KYWD (02034DC2) is not unique, previous object (01003627) is type KYWD. Editor ID will be set to 'ap_Bot_RoboBrainWaistArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_RoboBrainFrontTorsoArmor' for KYWD (02034DC1) is not unique, previous object (01003623) is type KYWD. Editor ID will be set to 'ap_Bot_RoboBrainFrontTorsoArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_RoboBrainBackTorsoArmor' for KYWD (02034DC0) is not unique, previous object (01003625) is type KYWD. Editor ID will be set to 'ap_Bot_RoboBrainBackTorsoArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_ModHandRightRoboBrainArmor' for KYWD (02034DBF) is not unique, previous object (01004F38) is type KYWD. Editor ID will be set to 'ap_Bot_ModHandRightRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'ap_Bot_ModHandLeftRoboBrainArmor' for KYWD (02034DBE) is not unique, previous object (01004F37) is type KYWD. Editor ID will be set to 'ap_Bot_ModHandLeftRoboBrainArmorDUPLICATE000'. +EDITOR: Editor ID 'TestCory01' for CELL (0200291A) is not unique, previous object (0100112A) is type CELL. Editor ID will be set to 'TestCory01DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Dusty_512_012' for REFR (02056667) is not unique, previous object (0100F656) is type REFR. Editor ID will be set to 'AO_Comment_Dusty_512_012DUPLICATE000'. +EDITOR: Editor ID 'TestTony' for CELL (02008831) is not unique, previous object (01002623) is type CELL. Editor ID will be set to 'TestTonyDUPLICATE000'. +MASTERFILE: Primitive with zero extents encountered for reference 0200E4BE +MASTERFILE: Primitive with zero extents encountered for reference 020435F0 +MASTERFILE: DLC file 'DLCCoast.esm' contains non-partial QUST 'COMNick' (000BBD98) +MASTERFILE: DLC file 'DLCCoast.esm' contains non-partial QUST 'DialogueGlowingSeaAtom' (0012DB31) +QUESTS: Could not find previous info (02021753) for TopicInfo (02048DC7) in Topic "" (02005416). +QUESTS: Could not find previous info (0201542E) for TopicInfo (0201542F) in Topic "" (0200BD85). +QUESTS: Could not find previous info (0200BE2E) for TopicInfo (0200BE2F) in Topic "" (0200BD97). +QUESTS: Could not find previous info (020295C6) for TopicInfo (02009923) in Topic "" (02009916). +QUESTS: Could not find previous info (020143E3) for TopicInfo (020143E4) in Topic "" (020143D3). +QUESTS: Could not find previous info (02029B65) for TopicInfo (02029B66) in Topic "" (02020BDC). +QUESTS: Could not find previous info (02037484) for TopicInfo (0203747E) in Topic "" (02021280). +QUESTS: Could not find previous info (0202367F) for TopicInfo (02037DBD) in Topic "" (0202367B). +QUESTS: Could not find previous info (02045CB7) for TopicInfo (02045CB8) in Topic "" (02044694). +QUESTS: Could not find previous info (02037CC5) for TopicInfo (02037CC6) in Topic "" (02037C9A). +QUESTS: Could not find previous info (02049238) for TopicInfo (02037CC4) in Topic "" (02037C9A). +QUESTS: Could not find previous info (02040A9D) for TopicInfo (0204971B) in Topic "" (02040A93). +MASTERFILE: LoadProcedureTreeItem: File 'DLCCoast.esm' has package with missing procedure tree item. +EDITOR: Editor ID 'BarnOuthouseDoor01' for DOOR (03044629) is not unique, previous object (020041B5) is type DOOR. Editor ID will be set to 'BarnOuthouseDoor01DUPLICATE000'. +EDITOR: Editor ID 'BarnOuthouseDoorStatic01' for STAT (03044628) is not unique, previous object (020041AF) is type STAT. Editor ID will be set to 'BarnOuthouseDoorStatic01DUPLICATE000'. +EDITOR: Editor ID 'BarnOuthouse01' for STAT (03044627) is not unique, previous object (020041AE) is type STAT. Editor ID will be set to 'BarnOuthouse01DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_032' for REFR (030520E6) is not unique, previous object (0204A65D) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_032DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_005' for REFR (030520E5) is not unique, previous object (0204D6B1) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_005DUPLICATE002'. +MASTERFILE: Primitive with zero extents encountered for reference 0301E84B +EDITOR: Editor ID 'AO_Comment_Unique_512_042' for REFR (0304C79B) is not unique, previous object (0204A665) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_042DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_041' for REFR (0304C79A) is not unique, previous object (0204A661) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_041DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Creepy_256_031' for REFR (0304AB57) is not unique, previous object (0204A672) is type REFR. Editor ID will be set to 'AO_Comment_Creepy_256_031DUPLICATE000'. +EDITOR: Editor ID 'TestCory01' for CELL (0300F9A9) is not unique, previous object (0100112A) is type CELL. Editor ID will be set to 'TestCory01DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Unique_512_043' for REFR (0304C7A0) is not unique, previous object (0204D6B5) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_043DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Dusty_256_005' for REFR (0304ABA7) is not unique, previous object (0204A65F) is type REFR. Editor ID will be set to 'AO_Comment_Dusty_256_005DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Gory_256_019' for REFR (03048918) is not unique, previous object (0204A65E) is type REFR. Editor ID will be set to 'AO_Comment_Gory_256_019DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_044' for REFR (030520EA) is not unique, previous object (0204D6B6) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_044DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Smelly_256_029' for REFR (0304AAFA) is not unique, previous object (0204A670) is type REFR. Editor ID will be set to 'AO_Comment_Smelly_256_029DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Watery_1024_008' for REFR (0305385C) is not unique, previous object (0204A66C) is type REFR. Editor ID will be set to 'AO_Comment_Watery_1024_008DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_112' for REFR (03053855) is not unique, previous object (0204A669) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_112DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_110' for REFR (03053854) is not unique, previous object (0204A668) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_110DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Dusty_512_012' for REFR (0304AB54) is not unique, previous object (0100F656) is type REFR. Editor ID will be set to 'AO_Comment_Dusty_512_012DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Watery_256_022' for REFR (0305385A) is not unique, previous object (0204A663) is type REFR. Editor ID will be set to 'AO_Comment_Watery_256_022DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_512_046' for REFR (03053853) is not unique, previous object (020566AD) is type REFR. Editor ID will be set to 'AO_Comment_Unique_512_046DUPLICATE000'. +MASTERFILE: Primitive with zero extents encountered for reference 0304A703 +EDITOR: Editor ID 'testJeffB2' for REFR (03048A92) is not unique, previous object (01004142) is type REFR. Editor ID will be set to 'testJeffB2DUPLICATE000'. +EDITOR: Editor ID 'testJeffb1' for REFR (030439F9) is not unique, previous object (0100878B) is type REFR. Editor ID will be set to 'testJeffb1DUPLICATE000'. +MASTERFILE: Primitive with zero extents encountered for reference 03017607 +EDITOR: Editor ID 'AO_Comment_Smelly_1024_008' for REFR (03053866) is not unique, previous object (0205666F) is type REFR. Editor ID will be set to 'AO_Comment_Smelly_1024_008DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_011' for REFR (03053852) is not unique, previous object (0204A666) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_011DUPLICATE002'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_113' for REFR (03053856) is not unique, previous object (02056664) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_113DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_115' for REFR (03053858) is not unique, previous object (0205666C) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_115DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_1024_114' for REFR (03053857) is not unique, previous object (0205666B) is type REFR. Editor ID will be set to 'AO_Comment_Unique_1024_114DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Exposed_512_015' for REFR (0304ABAB) is not unique, previous object (0204A66F) is type REFR. Editor ID will be set to 'AO_Comment_Exposed_512_015DUPLICATE000'. +EDITOR: Editor ID 'AO_Comment_Unique_256_004' for REFR (0304C798) is not unique, previous object (0204D6B7) is type REFR. Editor ID will be set to 'AO_Comment_Unique_256_004DUPLICATE002'. +EDITOR: Editor ID 'AO_Comment_Unique_256_003' for REFR (0304C797) is not unique, previous object (0204A664) is type REFR. Editor ID will be set to 'AO_Comment_Unique_256_003DUPLICATE001'. +EDITOR: Editor ID 'AO_Comment_Smelly_512_012' for REFR (0304ABA8) is not unique, previous object (0204A66B) is type REFR. Editor ID will be set to 'AO_Comment_Smelly_512_012DUPLICATE000'. +MASTERFILE: DLC file 'DLCNukaWorld.esm' contains non-partial QUST 'MinRecruit00' (0011B36E) +QUESTS: Could not find previous info (030357D5) for TopicInfo (03019EC9) in Topic "" (0300CF51). +QUESTS: Could not find previous info (0303009C) for TopicInfo (0302E8C5) in Topic "" (0300CF51). +QUESTS: Could not find previous info (030311AD) for TopicInfo (030311AF) in Topic "" (03015A6D). +QUESTS: Could not find previous info (03015A79) for TopicInfo (030357D8) in Topic "" (03015A6D). +QUESTS: Could not find previous info (0300A1D6) for TopicInfo (0300A1D7) in Topic "" (0300A1B1). +QUESTS: Could not find previous info (0301F65E) for TopicInfo (0301F65F) in Topic "" (0301F65D). +QUESTS: Could not find previous info (0301F66F) for TopicInfo (0301F670) in Topic "" (0301F65D). +QUESTS: Could not find previous info (0302C69E) for TopicInfo (03056933) in Topic "" (03014367). +QUESTS: Could not find previous info (030350FA) for TopicInfo (03017F87) in Topic "" (03017F65). +QUESTS: Could not find previous info (030261EF) for TopicInfo (030261F1) in Topic "" (0301AAC2). +QUESTS: Could not find previous info (03028832) for TopicInfo (0304C7F2) in Topic "" (0301AAC2). +QUESTS: Could not find previous info (030261FE) for TopicInfo (03028832) in Topic "" (0301AAC2). +QUESTS: Could not find previous info (03023398) for TopicInfo (0302439B) in Topic "" (0301E38C). +QUESTS: Could not find previous info (0301FB38) for TopicInfo (030209F6) in Topic "" (0301E38C). +QUESTS: Could not find previous info (030209F8) for TopicInfo (030209FA) in Topic "" (0301E38C). +QUESTS: Could not find previous info (0301FB37) for TopicInfo (0301FB38) in Topic "" (0301E38C). +QUESTS: Could not find previous info (0301F98A) for TopicInfo (0301F98B) in Topic "" (0301F8CF). +QUESTS: Could not find previous info (0301F940) for TopicInfo (0301F941) in Topic "" (0301F8D0). +QUESTS: Could not find previous info (030232C3) for TopicInfo (030232C4) in Topic "" (03023229). +QUESTS: Could not find previous info (0301AACC) for TopicInfo (03037B9E) in Topic "" (030253B2). +QUESTS: Could not find previous info (03027799) for TopicInfo (0302779A) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028A35) for TopicInfo (03027799) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028A31) for TopicInfo (03028A32) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028D3F) for TopicInfo (03028D40) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028D42) for TopicInfo (03028D43) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03042A62) for TopicInfo (03028A3B) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03042A61) for TopicInfo (03042A62) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028A3A) for TopicInfo (03042A60) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028D45) for TopicInfo (03028D46) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028D4D) for TopicInfo (03028D4E) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (0302774B) for TopicInfo (0302774C) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03027798) for TopicInfo (03044934) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03027745) for TopicInfo (03027746) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03044953) for TopicInfo (030277AF) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (03028A36) for TopicInfo (03044953) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (030277AE) for TopicInfo (03028A2C) in Topic "DLC04COMGageIdle" (03027716). +QUESTS: Could not find previous info (0304965B) for TopicInfo (03030AB5) in Topic "" (03030A9F). +QUESTS: Could not find previous info (03030ABA) for TopicInfo (03030ABB) in Topic "" (03030A9F). +QUESTS: Could not find previous info (0303775A) for TopicInfo (0303775B) in Topic "" (03037759). +QUESTS: Could not find previous info (03037766) for TopicInfo (03037767) in Topic "" (03037759). +QUESTS: Could not find previous info (03046B57) for TopicInfo (03046CE6) in Topic "" (03044D8C). +EDITOR: Editor ID 'xxx' for PACK (0300A681) is not unique, previous object (0100C571) is type NPC_. Editor ID will be set to 'xxxDUPLICATE000'. +EDITOR: Editor ID 'AnimObjectFish' for ANIO (030341A3) is not unique, previous object (0200C6AA) is type ANIO. Editor ID will be set to 'AnimObjectFishDUPLICATE000'. +EDITOR: Editor ID 'NewLightsDUPLICATE000' for LAYR (03045A55) is not unique, previous object (010092D5) is type LAYR. Editor ID will be set to 'NewLightsDUPLICATE000DUPLICATE000'. +EDITOR: Editor ID 'OldlightsDUPLICATE001' for LAYR (03045A54) is not unique, previous object (010092D4) is type LAYR. Editor ID will be set to 'OldlightsDUPLICATE001DUPLICATE000'. +EDITOR: Editor ID 'NewmachinesDUPLICATE007' for LAYR (0303D254) is not unique, previous object (010093BE) is type LAYR. Editor ID will be set to 'NewmachinesDUPLICATE007DUPLICATE001'. +EDITOR: Editor ID 'Critters' for LAYR (0302022C) is not unique, previous object (02053D63) is type LAYR. Editor ID will be set to 'CrittersDUPLICATE +MASTERFILE: *** Cell WattzExt01 (0000DF5E) combined data is owned by file DLCRobot.esm due to ref TreeElmTree01Static (00215906) +MASTERFILE: *** Cell FortHagenSatelliteArrayExt02 (0000E439) combined data is owned by file DLCRobot.esm due to ref LvlSentryBot_LevelGated (0023E55A) +MASTERFILE: *** Cell DLC03NakanoMapMarkerCell (0000D907) combined data is owned by file DLCCoast.esm due to ref BeachGrassBluffLarge (0022BB94) +MASTERFILE: *** Cell GlowingSeaCrater (0000E7D6) combined data is owned by file DLCCoast.esm due to ref NPCKneelSit (00245936) +MASTERFILE: *** Cell RailroadHQ01 (00092B21) combined data is owned by file DLCCoast.esm due to ref DLC03RailroadContactRef (0202F3FF) +MASTERFILE: *** Cell GeneralAtomicsFactory01 (0004280D) combined data is owned by file DLCRobot.esm due to ref DLC01LvlMechMrHandy (0100FF9D) +MASTERFILE: *** Cell DLC04TransitCenterExt03 (0000DF99) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x1CorWall01 (0300A80C) +MASTERFILE: *** Cell DLC04TransitCenterExt02 (0000DF78) combined data is owned by file DLCNukaWorld.esm due to ref RWBridgeRive01 (0300A7BD) +MASTERFILE: *** Cell DLC04TransitCenterExt04 (0000DF98) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x2Wall01a (0300A7F8) +MASTERFILE: *** Cell POIRJ13 (0000D908) combined data is owned by file DLCCoast.esm due to ref FishDead02 (000D347C) +MASTERFILE: *** Cell DLC01LairExt (0000E017) combined data is owned by file DLCRobot.esm due to ref DecoMainA1x1Cor02 (01007EF7) +MASTERFILE: *** Cell EastBostonPrepSchoolExt (0000DBBB) combined data is owned by file DLCRobot.esm due to ref SignRestricted01 (01008393) +MASTERFILE: *** Cell DLC01Caravan (0000DF5D) combined data is owned by file DLCRobot.esm due to ref CampFireMed01_Off_Blocks (0100FEBB) +MASTERFILE: *** Cell QASmoke (0001F7A9) combined data is owned by file DLCNukaWorld.esm due to ref FancyTableDinner01 (0303C0EE) +MASTERFILE: *** Cell DmndValentines01 (00001E47) combined data is owned by file DLCCoast.esm due to ref DLC03MQ01NakanoCase (020141AB) +MASTERFILE: *** Cell FortHagenSatelliteArrayExt (0000E43A) combined data is owned by file DLCRobot.esm due to ref ShackMetalWallFlat01 (01004CDC) +MASTERFILE: *** Cell DLC04TransitCenterExt (0000DF77) combined data is owned by file DLCNukaWorld.esm due to ref PrivetHedgePostWar01 (0300A7C0) +MASTERFILE: Could not find valid form (0024A042) in init for default object 'WorkshopForceNewList_DO' (0024A043) +MASTERFILE: Could not find valid form (00249FD9) in init for default object 'MapMarkerPotentialVassal_DO' (00249FDB) +MASTERFILE: Unable to find Leveled Object Form (02048856) for owner object "DLC03_LL_Armor_Trapper_Coast_Underwear". +MASTERFILE: Could not find material 'DLC04\Decals\DLC04_ChalkVines01.BGSM' to init texture set 'DLC04_DecalChalkVines01' (03047088). +ANIMATION: Could not find base MT/weapon graph for race 'DLC01AssaultronRaceAdditiveSubgraphRace' (01004E05) +MASTERFILE: Race 'DLC04_HumanRaceSubgraphDataAdditive' needs to have at least one Biped Object Name in the editor. +DIALOGUE: Info (03042AF0) in quest 'DLC04POISC07Dialogue' uses shared info 'DN049_Player_JustBrowsing' (00046C3E) in non-starts enabled or potentially dormant quest 'DN049' (0004542B) +MASTERFILE: Info 0204971F points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02049720 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02049721 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02049710 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02049711 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02049712 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02049709 points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0204970A points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0204970B points to unnamed start phase 2 on scene 'DLC03WorkshopRadiantOwned04Outro' (02040AA6). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02018602 points to unnamed start phase 1 on scene 'DLC03MQ02_0700_LongfellowEnd' (02032505). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 02016661 points to unnamed start phase 1 on scene 'DLC03MQ02_0200_AveryGreeting' (02016662). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0002D4FB points to unnamed start phase 1 on scene 'RRAct3LostPrestonScene' (0002D564). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0002D51A points to unnamed start phase 1 on scene 'RRAct3LostPrestonScene' (0002D564). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 002480BF points to unnamed start phase 3 on scene 'MinRecruit03AcceptScene' (00106F64). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Info 0014DDCD points to unnamed start phase 1 on scene 'RR201_0350_MeetZ1' (0014DDD1). Please ensure that the linkage is correct, as phases pointed to by infos need names. +MASTERFILE: Topic info (00147AD0) cannot set quest stage 20 on end because the parent quest FFDiamondCity07 (000456E8) doesn't have a stage with that index. +MASTERFILE: Topic info (0002D9F8) cannot set quest stage 475 on end because the parent quest DN121 (00026340) doesn't have a stage with that index. +MAGIC: Magic Item (02007528) 'DLC03VRDataRetrieverAbility' has no effects defined. +FORMS: Unable to find preview transform (01000EB7) for 'LS_DLC01_WorkbenchRobot' (01000EB6). +MASTERFILE: Unable to find Leveled Object Form (02048C06) for owner object "DLC03MQ02_LCharMirelurkHunter". +MAGIC: Magic Item (00000827) 'HC_SleepEffect_Rested' has no effects defined. +MAGIC: Magic Item (0000087B) 'HC_ThirstEffect_Hydrated' has no effects defined. +MASTERFILE: Unable to find Package Location Reference (01008AE3) on owner object "DLC01MQ04AdaHesterPackage". +PACKAGES: TESCustomPackageData::InitItem: custom package has no procedure tree. +MASTERFILE: Unable to find Package Target Reference (00000000) on owner object "DLC04_KK_TheaterSit_Box". +MASTERFILE: Unable to find Package Target Reference (00000000) on owner object "DLC04SafariCitoShowCorpsePackage". +MASTERFILE: No storage cell defined for 'DLC01TrackSystem_PackIn' (01007933). This pack-in cannot be used and should be recreated. +MASTERFILE: Empty reference group '' (0204796E). +MASTERFILE: Empty reference group '' (02034FA5). +MASTERFILE: Empty reference group '' (02030610). +MASTERFILE: Empty reference group '' (02016675). +MASTERFILE: Empty reference group '' (03051311). +MASTERFILE: Empty reference group '' (0303D3D6). +MASTERFILE: Empty reference group '' (0301BC47). +MASTERFILE: Empty reference group '' (0301B9D9). +MASTERFILE: Empty reference group '' (0301B9D4). +MASTERFILE: Empty reference group '' (0301B9CA). +MASTERFILE: Empty reference group '' (0301B9C4). +MASTERFILE: Empty reference group '' (0301B9BE). +MASTERFILE: Empty reference group '' (0301B9B8). +MASTERFILE: Empty reference group '' (0301B9B2). +MASTERFILE: Empty reference group '' (0301B9AC). +MASTERFILE: Empty reference group '' (0301B9A6). +MASTERFILE: Empty reference group '' (0301B85C). +MASTERFILE: Empty reference group '' (0301B855). +MASTERFILE: Empty reference group '' (0301B563). +MASTERFILE: Empty reference group '' (0301B55F). +MASTERFILE: Empty reference group '' (0301B55B). +MASTERFILE: Empty reference group '' (0301B557). +MASTERFILE: Empty reference group '' (0301B553). +MASTERFILE: Empty reference group '' (0301B54F). +MASTERFILE: Empty reference group '' (030178D2). +MASTERFILE: Empty reference group '' (03010908). +MASTERFILE: Unable to find scene (000E9891) on scene collection (000e9890) 'DN079_TheoCollection1' +MASTERFILE: Unable to find scene (030486C0) on scene collection (030486b9) 'DLC04_KiddieKingdomRoofSceneColl' +MASTERFILE: Unable to find scene (030486C1) on scene collection (030486b9) 'DLC04_KiddieKingdomRoofSceneColl' +FORMS: Scene 'CathyGreetSceneTrailoff02' (0013A440) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Package action 14 in scene 'DN092_EntryCombatScene' (0001D80A) has no packages in its list +FORMS: Scene '003b_OpenCyropodScene' (000A24C5) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Package action 1 in scene 'z013_MQ104_MemoryDen' (000393DD) has no packages in its list +FORMS: Scene 'zzRadioDiamondCitySilverShroudScene01' (00036FE0) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'RadioDiamondCityNewsScene07_MQ302' (001764B7) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'RadioDiamondCityNewsScene45_RR303' (001764DC) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'CZ_Arena_Combat_Pre_B' (0002347D) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'CZ_Arena_Combat_StartFight_B' (00023484) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'CZ_Arena_Combat_Pre_A' (0010C017) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MQ202_010_MemoryLounger' (0016897A) has multiple actions that share ID 8 +FORMS: Scene 'MQ202_010_MemoryLounger' (0016897A) has multiple actions that share ID 9 +FORMS: Scene 'MQ203AmariVoiceoverScene' (000E2B06) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '001b_MS07NickEllieEarlSterlingScene' (0005FE3F) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '004b_NickEllieMartyScene' (0005FE40) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '001a_MS07EllieIntrosEarlSterling' (0013C2F7) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene '005_MS07EllieTransitionFromAToB' (00192828) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07b_003_ApproachFanueilHall' (00061511) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07b_004_NickMartyCommentScene' (00061514) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07b_002_NickSeesMartyCorpse' (00196AC4) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_011_EddieDead' (000DD38C) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_004_OpeningBunker' (0014BF21) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_012_NickGraveScene' (0014BF2E) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_005_StartledEddie' (0014F65E) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_012a_NickGraveSceneBailOut' (00184408) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS07c_006_EddieShouts' (00198911) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS09ParsonsBossRoomFreeLorenzo' (00077ED9) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 9 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 10 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 11 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 12 +FORMS: Scene 'MS09Mission3ParsonsInterior05' (001A7CC9) has multiple actions that share ID 13 +FORMS: Scene 'MS09ParsonsBossRoomRaidersLooping' (001A7CCA) has multiple actions that share ID 6 +FORMS: Scene 'MS09ParsonsBossRoomRaidersLooping' (001A7CCA) has multiple actions that share ID 7 +FORMS: Scene 'MS09ParsonsBossRoomFreeLorenzoChoice' (001A8C4C) has multiple actions that share ID 7 +FORMS: Scene 'ConvDiamondCityGenericNPC04Scene' (00022ED1) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'ConvDiamondCityGenericNPC06Scene' (00022ED3) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 27 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 28 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 29 +FORMS: Scene 'MayorWallScene02' (001AADED) has multiple actions that share ID 30 +FORMS: Scene 'DN154_Arlen_215_AtomatoysCleared' (000BFB3A) has multiple actions that share ID 5 +FORMS: Scene 'DN154_Arlen_215_AtomatoysCleared' (000BFB3A) has multiple actions that share ID 6 +FORMS: Scene 'DN154_Arlen_020_Intro02' (000ED3CB) has multiple actions that share ID 17 +FORMS: Scene 'DN154_Arlen_020_Intro04' (000ED3CD) has multiple actions that share ID 6 +FORMS: Scene 'RelayTower12Scene' (001A0D2C) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'RR303_0825_ApproachPrydwen' (00046AA6) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'BoSM02_Kells_Stage400_Main2' (000BDA52) has multiple actions that share ID 7 +FORMS: Scene 'BoSM02_Kells_Stage400_Main3' (000BDA53) has multiple actions that share ID 9 +FORMS: Scene 'BoSM02_ClarkeStage260_Main09' (000BDCDC) has multiple actions that share ID 5 +FORMS: Scene 'FFDiamondCity07MQ103Branch' (00095431) has multiple actions that share ID 4 +FORMS: Scene 'REAssaultSC01_Stage110C_NessExplain1' (000CB2AC) has multiple actions that share ID 12 +FORMS: Package action 28 in scene 'MVIFatherStage10Scene' (00079587) has no packages in its list +FORMS: Scene 'Min01SturgesNextObjectiveFood' (0007303F) has multiple actions that share ID 2 +FORMS: Scene 'Min01PrestonOutroFinal' (000B140E) has multiple actions that share ID 4 +FORMS: Scene 'Min01PrestonOutroFinal' (000B140E) has multiple actions that share ID 7 +FORMS: Scene 'MinutemenRadioMainLoop' (0009FF46) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'AO_Companion_Bar_Switchboard' (000424D2) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'Min03RonnieArmoryScene02' (0012E2CC) has multiple actions that share ID 9 +FORMS: Scene 'Min03RonnieInsideArmoryDoorNEW' (0012EFA5) has multiple actions that share ID 8 +FORMS: Scene 'BoSM01_Brandis_100C' (000B3D78) has multiple actions that share ID 10 +FORMS: Scene 'BoSM01_Brandis_100C' (000B3D78) has multiple actions that share ID 12 +FORMS: Scene 'BoSM01_Brandis_100D' (000B3D79) has multiple actions that share ID 6 +FORMS: Scene 'MQ206RR_004_TinkerTomPlatformBuilt' (000D101C) has multiple actions that share ID 6 +FORMS: Scene 'MQ206MinTeleportScene' (000CF9CB) has multiple actions that share ID 5 +FORMS: Scene 'InstM03OpenHydroDoor1' (000BE7F6) has multiple actions that share ID 6 +FORMS: Scene 'BoSM01PostquestStage25_Main' (000B35BF) has multiple actions that share ID 4 +FORMS: Scene 'BoSM01PostquestStage25_Main' (000B35BF) has multiple actions that share ID 5 +MASTERFILE: Start Scene Action 4 on scene 'DN035_Announcement01_Idle' (0011FBCC) points to unnamed start phase 2 on scene 'DN035_Announcement01_Idle' (0011FBCC). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +MASTERFILE: Start Scene Action 15 on scene 'DN035_Announcement01_Idle' (0011FBCC) points to unnamed start phase 2 on scene 'DN035_Announcement01_Idle' (0011FBCC). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +FORMS: Scene 'MinRadiantOwned10ShootSynthScene' (00109DD5) has multiple actions that share ID 10 +FORMS: Scene 'MS05B_TurnInEggToWellingham01_WrapUp' (001685EA) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'MS05B_PoppaWatchesScene' (00168600) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Package action 23 in scene 'REObjectRJ02Scene01' (001AC74D) has no packages in its list +MASTERFILE: Scene xxx_DLC03MQ02_OLD (02048A9E) cannot set quest stage 201 on phase 9 end because the parent quest DLC03MQ02 (02001B40) doesn't have a stage with that index. +FORMS: Scene 'DLC03MQ02_0650c_PreacherKilled' (0204D2F4) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC03MQ06a_DiMAHCScene' (02038A7D) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: Scene 'DLC03_ADV017_BuyDog' (0204B64C) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyWolf' (0204B64D) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017_BuyFEVHound' (0204B64E) has multiple actions that share ID 3 +FORMS: Scene 'DLC03_ADV017PathToCamp' (0204E769) has multiple actions that share ID 5 +MASTERFILE: Start Scene Action 7 on scene 'DLC03_V118_PearlAvery_LoopScene' (02036921) points to unnamed start phase 1 on scene 'DLC03_V118_PearlAvery_LoopScene' (02036921). Please ensure that the linkage is correct, as phases pointed to by start scene actions need names. +FORMS: Scene 'DLC03_V118_QuestIntroGildaKeithWait' (02045CE0) has multiple actions that share ID 15 +FORMS: Scene 'DLC03_V118_QuestIntroGildaKeithWait' (02045CE0) has multiple actions that share ID 16 +FORMS: Scene 'DLC03_V118_QuestIntroJuliannaBertWait' (02045CE1) has multiple actions that share ID 7 +FORMS: Scene 'DLC03_V118_QuestIntroJuliannaBertWait' (02045CE1) has multiple actions that share ID 8 +MASTERFILE: Could not find topic 0300DB49 on dialogue action 2 for scene DLC04RaidWipeOut_001_ShankEarlyShutDown (0300DBD5). +MASTERFILE: Could not find topic 0301436C on dialogue action 1 for scene DLC04RaidChaseOff_001_ShankShutDown (030143D5). +MASTERFILE: Could not find topic 03016E2A on dialogue action 2 for scene DLC04RaidSubdue_001_ShankEarlyShutDown (03016E6A). +MASTERFILE: Could not find topic 0301C707 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C706 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C705 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C704 on dialogue action 3 for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C70B on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C70A on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C709 on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 0301C708 on dialogue action for scene DLC04_RQ_KillRivalBoss_NotDoneYet (0301C732). +MASTERFILE: Could not find topic 030190A0 on dialogue action 1 for scene DLC04RaidCoerce_001_ShankShutDown (030190ED). +MASTERFILE: Could not find topic 0301C8A2 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C8A1 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C8A0 on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C89F on dialogue action 2 for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C89E on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C89D on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C89C on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 0301C89B on dialogue action for scene DLC04_RQ_StealCache_NotDoneYet (0301C731). +MASTERFILE: Could not find topic 03021929 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021928 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021927 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021926 on dialogue action 2 for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021925 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021924 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021923 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 03021922 on dialogue action for scene DLC04_RQ_DefendCache_NotDoneYet (03021988). +MASTERFILE: Could not find topic 030322E6 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322E5 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322E4 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322E3 on dialogue action 2 for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322E2 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322E1 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322E0 on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 030322DF on dialogue action for scene DLC04_RQ_KillTroubleMaker_NotDoneYet (0303234B). +MASTERFILE: Could not find topic 03032A76 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A75 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A74 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A73 on dialogue action 2 for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A72 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A71 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A70 on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +MASTERFILE: Could not find topic 03032A6F on dialogue action for scene DLC04_RQ_CollarTroubleMaker_NotDoneYet (03032AE3). +FORMS: Scene 'DLC04_KiddieKingdomWall' (03048644) is not a player dialogue scene but has a nonzero max dialogue distance +FORMS: No match for tinting entry 1763 in NPC 'EmogeneCabotYoung' (001A0094) +FORMS: No match for tinting entry 1763 in NPC 'DN123_NessMercenary01' (0004B36C) +MASTERFILE: No quest completion XP global on completable quest 'InstM01_OLD' (000498B5) +MASTERFILE: No quest completion XP global on completable quest 'InstR01_OLD' (000E8D19) +MASTERFILE: No quest completion XP global on completable quest 'InstR03_OLD' (000EC1E9) +MASTERFILE: Unable to find linked reference 00091D4A for reference defaultLightCool03FlickerNSGoboCage (00091D49). Linked reference data will be removed. +FORMS: DOOR: Reference MetalTrapdoor01 001B9AE2 has portal to navmesh 0104F4D3 which is not found. Please finalize navmesh in cell Пустоши 0000DFB7 to resolve this. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Ref is not in its persistence location 'MysticPinesLocation' (0004E011). +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Reference 001A618A ('SWCurb4x1Str01Grass') has a custom material swap. Please change to a standard material swap. +LOOTJOY: Unable to find default template item for Bound Object 'WorkshopTurretLaser' (0019a7f2). First Object Template Item used. +MASTERFILE: Unable to find linked reference 00246B4D for reference MuseumBounceWarm04NS (000BAFB5). Linked reference data will be removed. +MASTERFILE: Reference 000C8AC4 ('RockPileL01RubbleRock01') has a custom material swap. Please change to a standard material swap. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Reference 00132B49 ('RockCliff03_NF') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find material swap 0022CE41. Material swap data will be removed. +MASTERFILE: Unable to find reference group 000DB86D. Reference group data will be removed. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Automatic door 'AutoloadDoorNoText' (000998E3) [105 units] in cell 'Vault111Ext' has its teleport marker too close to the linked door. +MASTERFILE: Reference 0006752A ('ExtRubble_BricksLrg_Med_Mid01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0006752B ('ExtRubble_BricksLrg_Med_Mid01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Enable state parent loop detected. Parent removed. +MASTERFILE: Unable to find reference group 0201F9E0. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0201F9E0. Reference group data will be removed. +MASTERFILE: Potentially Invalid Z value (-141089.25) on reference:REFR Form '' (02044914) to MSTT form 'SkeletonClothedF03' (001A4D3E) in Cell 'NorthwoodRidgeQuarryExt03' (02000CFF) (-1, -12) in WorldSpace 'DLC03FarHarbor' (02000B0F) +MASTERFILE: Ref (0204974E) to base object Fern01_DLC03_04 (02003C5B) in cell Пустоши (8, 6) (02000C20) should be persistent but is not. +CELLS: Ref is not in its persistence location 'DLC03HorizonFlight1207Location' (0200F044). +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Cell contains more than one COC marker:'VimPopFactoryExt' (02000CE2) (0, -8) in WorldSpace 'DLC03FarHarbor' (02000B0F) +MASTERFILE: Reference 030249D7 ('HouseKCapWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 03024ABB ('BldWoodBSmFlrPlatChunk01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 03024ABD ('BldWoodBSmFlrPlatChunk01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 03023AB6 ('SwimPoolFloorDeckTrimCorIn01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 03023AB7 ('SwimPoolFloorDeckTrimCorIn01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 03023AB9 ('SwimPoolFloorDeckTrim01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 030323D1. Reference group data will be removed. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Cell contains more than one COC marker:'DLC04GalacticZoneExt' (03003215) (-3, -1) in WorldSpace 'NukaWorld' (0300290F) +CELLS: Ref is not in its persistence location 'DLC04GrandchesterMansionLocation' (0301EB9B). +MASTERFILE: Reference 030249D8 ('HouseKCapWall01Dam01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0301EBA8 ('DecoMainC1x1WallPeak01LFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Reference 0301EBD3 ('DecoMainC1x1WallPeak01RFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Reference 0301EC7B ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 03020212. Reference group data will be removed. +MASTERFILE: Reference 0301F647 ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 03020212. Reference group data will be removed. +MASTERFILE: Potentially Invalid Z value (-70547.19) on reference:REFR Form '' (0300ED8E) to MSTT form 'SkeletonClothedF01' (0008B214) in Cell 'Пустоши' (03003349) (-8, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9A) to ALCH form 'NukaCola' (0004835D) in Cell 'Пустоши' (03003204) (-3, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9C) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Пустоши' (03003204) (-3, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9D) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Пустоши' (03003204) (-3, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9E) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Пустоши' (03003203) (-3, 17) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73834.35) on reference:REFR Form '' (0300EDA1) to MSTT form 'SkeletonBareBodyHeadless' (000E1B85) in Cell 'Пустоши' (03003203) (-3, 17) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-80350.69) on reference:REFR Form '' (0300ED9F) to MSTT form 'SkeletonClothedF05' (001A4D44) in Cell 'Пустоши' (0300320A) (-3, 10) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Reference 0302B6D9 ('FluorescentLightThinHanging01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Cell 'NukaWorldWildWestExt01' (03003294) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +CELLS: Ref is not in its persistence location 'DLC04WildWestLocation' (0301FB1C). +CELLS: Ref is not in its persistence location 'DLC04SafariAdventureLocation' (0301FC7F). +MASTERFILE: Unable to find reference group 03020212. Reference group data will be removed. +MASTERFILE: Reference 0301EBA0 ('BldgShellBrickWallTrimHalf04L') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0301EBA1 ('BldgShellBrickWallTrimHalf03L') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0301EBA2 ('BldgShellBrickWallTrimHalf04') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0301EBA3 ('BldgShellBrickWallTrimHalf03') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0301EBA4 ('BldgShellBrickWallTrimTop01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Reference 0301EBA7 ('DecoMainC1x1WallPeak01LFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Reference 0301EBBE ('DecoMainC1x1WinBayA01Full02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Reference 0301EBD2 ('DecoMainC1x1WallPeak01RFull02') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Reference 0301EC7A ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Reference 0301ECE8 ('BldgShellBrickWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 03020212. Reference group data will be removed. +MASTERFILE: Reference 0301F649 ('HouseKCapGarageWall01') has a custom material swap. Please change to a standard material swap. +MASTERFILE: Unable to find reference group 03020212. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0301F1CD. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03020212. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03033AF8. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03033AED. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03033AF8. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03033AED. Reference group data will be removed. +CELLS: Ref is not in its persistence location 'DLC04NukaTownUSALocation' (0301FCEC). +CELLS: Ref is not in its persistence location 'DLC04GauntletLocation' (0300BD04). +MASTERFILE: Reference 03050D4D ('FluorescentLightThinHanging01') has a custom material swap. Please change to a standard material swap. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +LOOTJOY: Unable to find default template item for Bound Object 'MQ302InstituteBoss01' (001cfb17). First Object Template Item used. +MASTERFILE: Automatic door 'AutoloadDoor' (00186949) [0 units] in cell 'InstituteConcourse' has its teleport marker too close to the linked door. +MASTERFILE: Unable to find reference group 000939E1. Reference group data will be removed. +MASTERFILE: Unable to find location 0002768B. Location data will be removed. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14C8) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14C1) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14C0) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Occlusion box has < 16.0 half-extent and should be switched to a plane : REFR Form '' (000A14BF) to STAT form 'PlaneMarker' (00000017) in Cell 'ConcordMuseum01' (00017DF7) +MASTERFILE: Potentially Invalid Z value (-142001.25) on reference:REFR Form '' (00203BDD) to MSTT form 'SkeletonClothedF03' (001A4D3E) in Cell '' (00203B1B) +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Cell name Альтернативная ячейка Братства Стали for cell BoSAliasCell (000D1064) is too long. The maximum length allowed is 33 characters. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: No occlusion plane for occlusion plane ref extra. +LOOTJOY: Unable to find default template item for Bound Object 'MQ302InstituteBoss03' (001cfb19). First Object Template Item used. +LOOTJOY: Unable to find default template item for Bound Object 'MQ302InstituteBoss02' (001cfb18). First Object Template Item used. +MASTERFILE: Cell 'SanctuaryRosaHouse' (0001F398) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +CELLS: Ref is not in its persistence location 'CommonwealthLocation' (00002CF0). +MASTERFILE: Reference 0015A221 ('BldConcSmFlrOnly01') has a custom material swap. Please change to a standard material swap. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Automatic door 'AutoloadDoor' (0003A897) [330 units] in cell 'OldGulletSinkhole01' has its teleport marker too close to the linked door. +MASTERFILE: Cell 'Vault111Start' (000016D9) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Unable to find reference group 01013491. Reference group data will be removed. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Unable to find reference group 0203B7BA. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0203B7BF. Reference group data will be removed. +CELLS: Ref is not in its persistence location 'DLC03CliffsEdgeHotelLocation' (0200F041). +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Unable to find reference group 03030B8B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030BD9. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030BEE. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030BF1. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030BF4. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030C09. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030C13. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03030C3E. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03031516. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03031527. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03031538. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03031549. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0303155A. Reference group data will be removed. +MASTERFILE: Unable to find reference group 0303156B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03031E23. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03031E2B. Reference group data will be removed. +MASTERFILE: Unable to find reference group 03032F68. Reference group data will be removed. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +CELLS: Ref is not in its persistence location 'DLC04KiddieKingdomLocation' (03017645). +MASTERFILE: Cell 'DLC04KiddieKingdomHoldingCell' (0303D627) has a hand tagged location and an encounter zone applied location. Hand tagged location will be ignored in game. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Potentially Invalid Z value (-46512.24) on reference:REFR Form '' (0304A9BA) to MSTT form 'TrashcanMetalOffice01' (001A594B) in Cell 'DLC04HubFizztopMountainInterior01' (03018596) +MASTERFILE: Unable to find material swap 0301CE18. Material swap data will be removed. +MASTERFILE: Automatic door 'DLC04KKTunnelsToBottlingPlant' (03039829) [64 units] in cell 'DLC04KiddieKingdomTunnels01' has its teleport marker too close to the linked door. +CELLS: Dummy object ref does not have a leveled list. This ref will never be visible in game. +MASTERFILE: Unable to find layer 03006FCB. Layer data will be removed. +MASTERFILE: Multiple next idles for IDLE Form 'MeleeRightSyncKillHuman_Ripper' (000C73B7). +MASTERFILE: Invalid prev idle on IDLE Form 'MeleeRightSyncKillHuman_DeathclawGauntlet' (000C73B9) +MASTERFILE: Perk chain on DLC04RaiderOverbossGradiatedCloakPerk (030490AC) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossFullInvulnerabilityPerk (0300A51F) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +MASTERFILE: Perk chain on DLC04RaiderOverbossGradiatedInvulnerabilityPerk (0300A51E) exceeds maximum length (100). Is this a cycle that doesn't return to the start perk? +ANIMATION: Animation 'Actors\DLC03\Hermit\Animations\Attack3' on race 'DLC03_HermitCrabRace' for attack event 'meleeStart_3' has no HitFrame event +ANIMATION: Animation 'Actors\DLC03\FogCrawler\Animations\Attack2' on race 'DLC03_FogCrawlerRace' for attack event 'meleeStart_2' has no HitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no preHitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no preHitFrame event +ANIMATION: Animation 'Actors\Character\Animations\Ripper\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no preHitFrame event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipper' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeAttackRipperStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no preHitFrame event +ANIMATION: Animation 'Actors\DLC01\Character\Animations\BuzzBlade\AttackRipperSneak' on race 'DLC04_HumanRaceSubgraphDataAdditive' for attack event 'meleeattackRipperSneakStart' has no weaponSwing/weaponLeftSwing event +ANIMATION: Could not get proper data when querying about length of reload animation for weapon VRWorkshopShared_AlienBlaster_NonPlayable (0024A3B0) using NPC VRWorkshopShared_encAlien (0024A37D) with race AlienRace (00184C4D) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon VRWorkshopShared_Flamer_NonPlayable (0024A3A6) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballYellowRight (0205D0BC) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballYellowLeft (0205D0BB) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballWhiteRight (0205D0BA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballWhiteLeft (0205D0B9) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballRedRight (0205D0B8) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballRedLeft (0205D0B7) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballOrangeRight (0205D0B6) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballOrangeLeft (0205D0B5) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballGreenRight (0205D0B4) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballGreenLeft (0205D0B3) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballBlueLeft (0205D0B1) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03WeapPaintballBlueRight (0205D0B0) +ANIMATION: Could not get event 'WeaponFire' time in animation 'Angler_AttackBite' when querying about length of fire animation for weapon DLC03AnglerVomit (02048EC7) using NPC DLC03MQ06_LvlAngler (02043FBF) with race DLC03_AnglerRace (0200FEEA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC03_UnarmedWolf (02043224) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04_TurretMountedLaserGunSpaceBlue (0304BEFC) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04RaiderOverboss_FragGrenadeSingleNP (0304A619) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightShoulderClusterLauncher (0304A380) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftShoulderClusterLauncher (0304A37F) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightAutoLaser_Blue (0304A1C0) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftAutoLaser_Blue (0304A1BF) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01RightArmLaserGun_Blue (0304A1BE) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01LeftArmLaserGun_Blue (0304A1BD) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Melee_Nira_Right (03047E00) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Melee_Nira_Left (03047DFF) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotRightAutoLaser (03044F0E) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_SentryBotLeftAutoLaser (03044F0D) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperQuantumRight (03044C68) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperQuantumLeft (03044C67) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperCherryRight (03044C66) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_ThirstZapperCherryLeft (03044C65) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01RightArmLaserGun (03044C61) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04Bot_Weap_Protectron01LeftArmLaserGun (03044C60) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04AnimatronicAlienWeapon (0301FAB0) +ANIMATION: Could not get proper data when querying about length of fire animation for weapon DLC04FakeAlienBlasterTurret (0301FAAB) using NPC Player (00000007) with race HumanRace (00013746) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04AnimatronicAlienGun (0301FAAA) +FORMS: Could not find NPC for FillAttackSecondsFromAnimation for weapon DLC04MrGutsy_LaserGun_Right (0301FAA9) +FORMS: The format of face customization texture Actors/Synths/Gen2SkinHeadValentine_d.dds (98) does not match that of other textures (71) on race 'SynthGen2RaceValentine' (002261A4). +FORMS: The format of face customization texture Actors/Synths/Gen2SkinHeadValentine_d.dds (98) does not match that of other textures (71) on race 'SynthGen2Race' (0010BD65). \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/122-10.json b/[Data]/F4CKFixes/dia/122-10.json new file mode 100644 index 00000000..a1ed9bfa --- /dev/null +++ b/[Data]/F4CKFixes/dia/122-10.json @@ -0,0 +1,104 @@ +{ + "ExStyle": [ "WS_EX_ACCEPTFILES" ], + "Style": [ "WS_SYSMENU", "WS_THICKFRAME", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Object Window", + "Width": 364, + "Height": 466, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 2581, + "Title": "", + "x": 33, + "y": 32, + "Width": 57, + "Height": 24 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "TREEVIEW", + "Style": [ "TVS_HASBUTTONS", "TVS_HASLINES", "TVS_LINESATROOT", "TVS_DISABLEDRAGDROP", "TVS_SHOWSELALWAYS", "WS_BORDER", "WS_HSCROLL" ], + "Id": 2093, + "x": 1, + "y": 82, + "Width": 104, + "Height": 384 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Id": 1041, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "LVS_EDITLABELS", "WS_BORDER" ], + "x": 115, + "y": 2, + "Width": 249, + "Height": 466 + }, + { + "Type": "LTEXT", + "Title": "", + "Id": 2157, + "x": 105, + "y": 0, + "Width": 10, + "Height": 466 + }, + { + "Type": "LTEXT", + "Title": "Filter", + "x": 4, + "y": 36, + "Width": 25, + "Height": 24 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_AUTOHSCROLL", "CBS_SORT", "WS_VSCROLL" ], + "Id": 6024, + "x": 33, + "y": 4, + "Width": 57, + "Height": 120 + }, + { + "Type": "LTEXT", + "Title": "Layout", + "x": 4, + "y": 8, + "Width": 25, + "Height": 24 + }, + { + "Type": "PUSHBUTTON", + "Title": "...", + "Id": 6025, + "x": 93, + "y": 4, + "Width": 11, + "Height": 24 + }, + { + "Type": "PUSHBUTTON", + "Id": 6027, + "Title": "-", + "x": 93, + "y": 28, + "Width": 11, + "Height": 24 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 2579, + "Title": "Show only active (*) forms", + "x": 4, + "y": 58, + "Width": 104, + "Height": 22 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/122-8.json b/[Data]/F4CKFixes/dia/122-8.json new file mode 100644 index 00000000..90329b77 --- /dev/null +++ b/[Data]/F4CKFixes/dia/122-8.json @@ -0,0 +1,104 @@ +{ + "ExStyle": [ "WS_EX_ACCEPTFILES" ], + "Style": [ "WS_SYSMENU", "WS_THICKFRAME", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Object Window", + "Width": 364, + "Height": 466, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 2581, + "Title": "", + "x": 29, + "y": 32, + "Width": 61, + "Height": 24 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "TREEVIEW", + "Style": [ "TVS_HASBUTTONS", "TVS_HASLINES", "TVS_LINESATROOT", "TVS_DISABLEDRAGDROP", "TVS_SHOWSELALWAYS", "WS_BORDER", "WS_HSCROLL" ], + "Id": 2093, + "x": 2, + "y": 82, + "Width": 104, + "Height": 384 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Id": 1041, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "LVS_EDITLABELS", "WS_BORDER" ], + "x": 115, + "y": 2, + "Width": 249, + "Height": 466 + }, + { + "Type": "LTEXT", + "Title": "", + "Id": 2157, + "x": 105, + "y": 0, + "Width": 10, + "Height": 466 + }, + { + "Type": "LTEXT", + "Title": "Filter", + "x": 4, + "y": 36, + "Width": 25, + "Height": 24 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_AUTOHSCROLL", "CBS_SORT", "WS_VSCROLL" ], + "Id": 6024, + "x": 29, + "y": 6, + "Width": 61, + "Height": 120 + }, + { + "Type": "LTEXT", + "Title": "Layout", + "x": 4, + "y": 8, + "Width": 25, + "Height": 24 + }, + { + "Type": "PUSHBUTTON", + "Title": "...", + "Id": 6025, + "x": 93, + "y": 6, + "Width": 11, + "Height": 24 + }, + { + "Type": "PUSHBUTTON", + "Id": 6027, + "Title": "-", + "x": 93, + "y": 28, + "Width": 11, + "Height": 24 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 2579, + "Title": "Show only active (*) forms", + "x": 4, + "y": 58, + "Width": 104, + "Height": 22 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/162-10.json b/[Data]/F4CKFixes/dia/162-10.json new file mode 100644 index 00000000..5b91dc79 --- /dev/null +++ b/[Data]/F4CKFixes/dia/162-10.json @@ -0,0 +1,249 @@ +{ + "ExStyle": [ "WS_EX_TOPMOST" ], + "Style": [ "DS_SYSMODAL", "DS_CENTER", "WS_SYSMENU", "WS_THICKFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Data", + "Width": 640, + "Height": 600, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "DEFPUSHBUTTON", + "Title": "OK", + "Id": 1, + "x": 432, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "Cancel", + "Id": 2, + "x": 536, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 1121, + "Title": "Set as Active File", + "x": 4, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 1185, + "Title": "Details...", + "x": 184, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "List1", + "Id": 1056, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "WS_BORDER" ], + "x": 4, + "y": 72, + "Width": 280, + "Height": 492 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 1025, + "Title": "", + "x": 288, + "y": 24, + "Width": 186, + "Height": 24 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_MULTILINE", "ES_AUTOVSCROLL", "ES_WANTRETURN" ], + "Id": 1024, + "Title": "", + "x": 288, + "y": 72, + "Width": 186, + "Height": 453 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "", + "Id": 1057, + "Style": [ "LVS_REPORT", "LVS_SINGLESEL", "LVS_SHOWSELALWAYS", "LVS_NOSORTHEADER", "WS_BORDER" ], + "x": 478, + "y": 24, + "Width": 158, + "Height": 500 + }, + { + "Type": "LTEXT", + "Title": "Plugin/Master Files", + "x": 14, + "y": 52, + "Width": 100, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Created By", + "Id": 52006, + "x": 298, + "y": 4, + "Width": 60, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Summary", + "Id": 52007, + "x": 298, + "y": 52, + "Width": 60, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Parent Masters", + "Id": 52008, + "x": 488, + "y": 4, + "Width": 80, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Created On:", + "Id": 52009, + "x": 288, + "y": 528, + "Width": 60, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Last Modified:", + "Id": 52010, + "x": 288, + "y": 548, + "Width": 60, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "(Unknown)", + "Id": 1026, + "x": 384, + "y": 528, + "Width": 45, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "(Unknown)", + "Id": 1027, + "x": 384, + "y": 548, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Id": 1028, + "x": 429, + "y": 528, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Id": 1029, + "x": 429, + "y": 548, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "File Version:", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 2406, + "x": 540, + "y": 528, + "Width": 50, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "Current:", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 2407, + "x": 540, + "y": 548, + "Width": 50, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 1681, + "x": 590, + "y": 528, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 1682, + "x": 590, + "y": 548, + "Width": 45, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 52004, + "Title": "", + "x": 4, + "y": 24, + "Width": 280, + "Height": 24 + }, + { + "Type": "LTEXT", + "Title": "Search", + "x": 14, + "y": 4, + "Width": 45, + "Height": 16 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "", + "Id": 52005, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "WS_BORDER", "NOT WS_VISIBLE" ], + "x": 4, + "y": 72, + "Width": 280, + "Height": 492 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/162-8.json b/[Data]/F4CKFixes/dia/162-8.json new file mode 100644 index 00000000..9a6be2a5 --- /dev/null +++ b/[Data]/F4CKFixes/dia/162-8.json @@ -0,0 +1,249 @@ +{ + "ExStyle": [ "WS_EX_TOPMOST" ], + "Style": [ "DS_SYSMODAL", "DS_CENTER", "WS_SYSMENU", "WS_THICKFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Data", + "Width": 640, + "Height": 600, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "DEFPUSHBUTTON", + "Title": "OK", + "Id": 1, + "x": 432, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "Cancel", + "Id": 2, + "x": 536, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 1121, + "Title": "Set as Active File", + "x": 4, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 1185, + "Title": "Details...", + "x": 184, + "y": 568, + "Width": 100, + "Height": 28 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "List1", + "Id": 1056, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "WS_BORDER" ], + "x": 4, + "y": 72, + "Width": 280, + "Height": 492 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 1025, + "Title": "", + "x": 288, + "y": 24, + "Width": 186, + "Height": 24 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_MULTILINE", "ES_AUTOVSCROLL", "ES_WANTRETURN" ], + "Id": 1024, + "Title": "", + "x": 288, + "y": 72, + "Width": 186, + "Height": 453 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "", + "Id": 1057, + "Style": [ "LVS_REPORT", "LVS_SINGLESEL", "LVS_SHOWSELALWAYS", "LVS_NOSORTHEADER", "WS_BORDER" ], + "x": 478, + "y": 24, + "Width": 158, + "Height": 500 + }, + { + "Type": "LTEXT", + "Title": "Plugin/Master Files", + "x": 14, + "y": 52, + "Width": 100, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Created By", + "Id": 52006, + "x": 298, + "y": 4, + "Width": 60, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Summary", + "Id": 52007, + "x": 298, + "y": 52, + "Width": 60, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Parent Masters", + "Id": 52008, + "x": 488, + "y": 4, + "Width": 80, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Created On:", + "Id": 52009, + "x": 288, + "y": 528, + "Width": 50, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Last Modified:", + "Id": 52010, + "x": 288, + "y": 548, + "Width": 50, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "(Unknown)", + "Id": 1026, + "x": 384, + "y": 528, + "Width": 45, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "(Unknown)", + "Id": 1027, + "x": 384, + "y": 548, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Id": 1028, + "x": 429, + "y": 528, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Id": 1029, + "x": 429, + "y": 548, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "File Version:", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 2406, + "x": 540, + "y": 528, + "Width": 50, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "Current:", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 2407, + "x": 540, + "y": 548, + "Width": 50, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 1681, + "x": 590, + "y": 528, + "Width": 45, + "Height": 16 + }, + { + "Type": "RTEXT", + "Title": "(Unknown)", + "Style": [ "NOT WS_VISIBLE" ], + "Id": 1682, + "x": 590, + "y": 548, + "Width": 45, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 52004, + "Title": "", + "x": 4, + "y": 24, + "Width": 280, + "Height": 24 + }, + { + "Type": "LTEXT", + "Title": "Search", + "x": 14, + "y": 4, + "Width": 45, + "Height": 16 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "", + "Id": 52005, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "WS_BORDER", "NOT WS_VISIBLE" ], + "x": 4, + "y": 72, + "Width": 280, + "Height": 492 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/166-10.json b/[Data]/F4CKFixes/dia/166-10.json new file mode 100644 index 00000000..1ffeec6d --- /dev/null +++ b/[Data]/F4CKFixes/dia/166-10.json @@ -0,0 +1,241 @@ +{ + "Style": [ "WS_MINIMIZEBOX", "WS_SYSMENU", "DS_CENTER", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Enchantment", + "Width": 576, + "Height": 340, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "DEFPUSHBUTTON", + "Id": 1, + "Title": "Ok", + "x": 4, + "y": 304, + "Width": 75, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 2, + "Title": "Cancel", + "x": 83, + "y": 304, + "Width": 75, + "Height": 28 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 1081, + "x": 59, + "y": 108, + "Width": 120, + "Height": 62 + }, + { + "Type": "LTEXT", + "Title": "Ench Amount", + "x": 359, + "y": 304, + "Width": 55, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 1085, + "Style": [ "ES_RIGHT", "ES_AUTOHSCROLL", "ES_NUMBER" ], + "x": 414, + "y": 300, + "Width": 40, + "Height": 24 + }, + { + "Type": "EDITTEXT", + "Id": 1374, + "Style": [ "ES_RIGHT", "ES_AUTOHSCROLL", "ES_NUMBER" ], + "x": 528, + "y": 300, + "Width": 40, + "Height": 24 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1006, + "Title": "Auto-Calc", + "x": 187, + "y": 302, + "Width": 55, + "Height": 20 + }, + { + "Type": "LTEXT", + "Title": "Enchantment Cost", + "Id": 1670, + "x": 458, + "y": 304, + "Width": 70, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 1060, + "Style": [ "ES_AUTOHSCROLL" ], + "x": 59, + "y": 40, + "Width": 120, + "Height": 24 + }, + { + "Type": "RTEXT", + "Title": "ID", + "x": 4, + "y": 16, + "Width": 51, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 5500, + "Style": [ "ES_AUTOHSCROLL" ], + "x": 59, + "y": 12, + "Width": 120, + "Height": 24 + }, + { + "Type": "RTEXT", + "Title": "Casting", + "x": 4, + "y": 112, + "Width": 51, + "Height": 16 + }, + { + "Type": "GROUPBOX", + "Title": "Effects", + "x": 183, + "y": 4, + "Width": 389, + "Height": 328 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE", "WS_EX_RIGHT" ], + "Type": "LISTVIEW", + "Id": 2069, + "Style": [ "LVS_REPORT", "WS_BORDER" ], + "x": 187, + "y": 30, + "Width": 380, + "Height": 264 + }, + { + "Type": "RTEXT", + "Title": "Name", + "x": 4, + "y": 44, + "Width": 51, + "Height": 16 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1007, + "Title": "Extend Duration on Recast", + "Style": [ "BS_LEFTTEXT" ], + "x": 59, + "y": 254, + "Width": 120, + "Height": 20 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 2072, + "x": 59, + "y": 140, + "Width": 120, + "Height": 95 + }, + { + "Type": "RTEXT", + "Title": "Delivery", + "x": 4, + "y": 144, + "Width": 51, + "Height": 16 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 1050, + "x": 59, + "y": 76, + "Width": 120, + "Height": 95 + }, + { + "Type": "RTEXT", + "Title": "Type", + "x": 4, + "y": 80, + "Width": 51, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 1296, + "Style": [ "ES_AUTOHSCROLL", "ES_RIGHT" ], + "x": 315, + "y": 300, + "Width": 40, + "Height": 24 + }, + { + "Type": "LTEXT", + "Title": "Charge Time", + "Id": 1672, + "x": 260, + "y": 304, + "Width": 55, + "Height": 16 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 2073, + "x": 59, + "y": 184, + "Width": 120, + "Height": 62 + }, + { + "Type": "RTEXT", + "Title": "Base Enchantment", + "Style": [ "NOT SS_ENDELLIPSIS" ], + "x": 4, + "y": 180, + "Width": 51, + "Height": 36 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 2074, + "x": 59, + "y": 220, + "Width": 120, + "Height": 62 + }, + { + "Type": "RTEXT", + "Title": "Worn Restrictions", + "Style": [ "NOT SS_ENDELLIPSIS" ], + "x": 4, + "y": 216, + "Width": 51, + "Height": 36 + } + ] +} diff --git a/[Data]/F4CKFixes/dia/166-8.json b/[Data]/F4CKFixes/dia/166-8.json new file mode 100644 index 00000000..915ca952 --- /dev/null +++ b/[Data]/F4CKFixes/dia/166-8.json @@ -0,0 +1,241 @@ +{ + "Style": [ "WS_MINIMIZEBOX", "WS_SYSMENU", "DS_CENTER", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Enchantment", + "Width": 576, + "Height": 340, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "DEFPUSHBUTTON", + "Id": 1, + "Title": "Ok", + "x": 4, + "y": 304, + "Width": 75, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 2, + "Title": "Cancel", + "x": 83, + "y": 304, + "Width": 75, + "Height": 28 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 1081, + "x": 59, + "y": 108, + "Width": 120, + "Height": 62 + }, + { + "Type": "LTEXT", + "Title": "Ench Amount", + "x": 359, + "y": 304, + "Width": 55, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 1085, + "Style": [ "ES_RIGHT", "ES_AUTOHSCROLL", "ES_NUMBER" ], + "x": 414, + "y": 300, + "Width": 40, + "Height": 24 + }, + { + "Type": "EDITTEXT", + "Id": 1374, + "Style": [ "ES_RIGHT", "ES_AUTOHSCROLL", "ES_NUMBER" ], + "x": 528, + "y": 300, + "Width": 40, + "Height": 24 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1006, + "Title": "Auto-Calc", + "x": 187, + "y": 302, + "Width": 55, + "Height": 20 + }, + { + "Type": "LTEXT", + "Title": "Enchantment Cost", + "Id": 1670, + "x": 458, + "y": 304, + "Width": 70, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 1060, + "Style": [ "ES_AUTOHSCROLL" ], + "x": 59, + "y": 40, + "Width": 120, + "Height": 24 + }, + { + "Type": "RTEXT", + "Title": "ID", + "x": 4, + "y": 16, + "Width": 51, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 5500, + "Style": [ "ES_AUTOHSCROLL" ], + "x": 59, + "y": 12, + "Width": 120, + "Height": 24 + }, + { + "Type": "RTEXT", + "Title": "Casting", + "x": 4, + "y": 112, + "Width": 51, + "Height": 16 + }, + { + "Type": "GROUPBOX", + "Title": "Effects", + "x": 183, + "y": 4, + "Width": 389, + "Height": 328 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE", "WS_EX_RIGHT" ], + "Type": "LISTVIEW", + "Id": 2069, + "Style": [ "LVS_REPORT", "WS_BORDER" ], + "x": 187, + "y": 30, + "Width": 380, + "Height": 264 + }, + { + "Type": "RTEXT", + "Title": "Name", + "x": 4, + "y": 44, + "Width": 51, + "Height": 16 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1007, + "Title": "Extend Duration on Recast", + "Style": [ "BS_LEFTTEXT" ], + "x": 59, + "y": 254, + "Width": 120, + "Height": 20 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 2072, + "x": 59, + "y": 140, + "Width": 120, + "Height": 95 + }, + { + "Type": "RTEXT", + "Title": "Delivery", + "x": 4, + "y": 144, + "Width": 51, + "Height": 16 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 1050, + "x": 59, + "y": 76, + "Width": 120, + "Height": 95 + }, + { + "Type": "RTEXT", + "Title": "Type", + "x": 4, + "y": 80, + "Width": 51, + "Height": 16 + }, + { + "Type": "EDITTEXT", + "Id": 1296, + "Style": [ "ES_AUTOHSCROLL", "ES_RIGHT" ], + "x": 315, + "y": 300, + "Width": 40, + "Height": 24 + }, + { + "Type": "LTEXT", + "Title": "Charge Time", + "Id": 1672, + "x": 260, + "y": 304, + "Width": 55, + "Height": 16 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 2073, + "x": 59, + "y": 184, + "Width": 120, + "Height": 62 + }, + { + "Type": "RTEXT", + "Title": "Base Enchantment", + "Style": [ "NOT SS_ENDELLIPSIS" ], + "x": 4, + "y": 180, + "Width": 51, + "Height": 36 + }, + { + "Type": "COMBOBOX", + "Style": [ "CBS_SORT", "WS_VSCROLL" ], + "Id": 2074, + "x": 59, + "y": 220, + "Width": 120, + "Height": 62 + }, + { + "Type": "RTEXT", + "Title": "Worn Restrictions", + "Style": [ "NOT SS_ENDELLIPSIS" ], + "x": 4, + "y": 216, + "Width": 51, + "Height": 36 + } + ] +} diff --git a/[Data]/F4CKFixes/dia/175-10.json b/[Data]/F4CKFixes/dia/175-10.json new file mode 100644 index 00000000..c8592d45 --- /dev/null +++ b/[Data]/F4CKFixes/dia/175-10.json @@ -0,0 +1,203 @@ +{ + "Style": [ "WS_THICKFRAME", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Cell View", + "Width": 221, + "Height": 572, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "COMBOBOX", + "Style": [ "CBS_DROPDOWNLIST", "CBS_AUTOHSCROLL", "CBS_SORT", "WS_VSCROLL" ], + "Id": 2083, + "x": 4, + "y": 28, + "Width": 94, + "Height": 120 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 5283, + "Title": "", + "x": 14, + "y": 58, + "Width": 24, + "Height": 28 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 5099, + "Title": "", + "x": 50, + "y": 58, + "Width": 24, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "Trigger", + "Id": 1007, + "x": 78, + "y": 58, + "Width": 20, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 3681, + "Title": "Go", + "x": 78, + "y": 58, + "Width": 20, + "Height": 28 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5662, + "Title": "Loaded at top", + "x": 106, + "y": 54, + "Width": 75, + "Height": 20 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE", "WS_EX_RIGHT" ], + "Type": "LISTVIEW", + "Id": 1155, + "Style": [ "LVS_REPORT", "LVS_SINGLESEL", "LVS_SHOWSELALWAYS", "LVS_EDITLABELS", "WS_BORDER" ], + "Title": "List4", + "x": 4, + "y": 94, + "Width": 98, + "Height": 474 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 2581, + "Title": "", + "x": 104, + "y": 28, + "Width": 114, + "Height": 24 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE", "WS_EX_RIGHT" ], + "Type": "LISTVIEW", + "Id": 1156, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "LVS_EDITLABELS", "WS_BORDER" ], + "Title": "List4", + "x": 104, + "y": 94, + "Width": 114, + "Height": 474 + }, + { + "Type": "CTEXT", + "Title": "No Cell Selected", + "Style": [ "NOT WS_GROUP" ], + "Id": 1163, + "x": 108, + "y": 8, + "Width": 114, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "World Space", + "Style": [ "NOT WS_GROUP" ], + "Id": 1164, + "x": 10, + "y": 8, + "Width": 45, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "X", + "Id": 5281, + "x": 6, + "y": 64, + "Width": 8, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Y", + "Id": 5282, + "x": 41, + "y": 64, + "Width": 8, + "Height": 16 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 2579, + "Title": "Show only active (*) cells", + "x": 106, + "y": 72, + "Width": 110, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5664, + "Title": "Filtered Only", + "x": 110, + "y": 54, + "Width": 70, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5665, + "Title": "Selected Only", + "x": 110, + "y": 72, + "Width": 70, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5666, + "Title": "Visible Only", + "x": 187, + "y": 54, + "Width": 75, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 2582, + "Title": "Show only active (*) objects", + "x": 204, + "y": 72, + "Width": 120, + "Height": 20 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 2585, + "Title": "", + "x": 102, + "y": 28, + "Width": 96, + "Height": 24 + }, + { + "Type": "LTEXT", + "Title": "Filter", + "Style": [ "NOT WS_GROUP" ], + "Id": 1165, + "x": 106, + "y": 8, + "Width": 45, + "Height": 16 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/175-8.json b/[Data]/F4CKFixes/dia/175-8.json new file mode 100644 index 00000000..e24b4a8b --- /dev/null +++ b/[Data]/F4CKFixes/dia/175-8.json @@ -0,0 +1,203 @@ +{ + "Style": [ "WS_THICKFRAME", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Cell View", + "Width": 221, + "Height": 572, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "COMBOBOX", + "Style": [ "CBS_DROPDOWNLIST", "CBS_AUTOHSCROLL", "CBS_SORT", "WS_VSCROLL" ], + "Id": 2083, + "x": 4, + "y": 28, + "Width": 94, + "Height": 120 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 5283, + "Title": "", + "x": 14, + "y": 58, + "Width": 24, + "Height": 28 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 5099, + "Title": "", + "x": 50, + "y": 58, + "Width": 24, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "Trigger", + "Id": 1007, + "x": 78, + "y": 58, + "Width": 20, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Id": 3681, + "Title": "Go", + "x": 78, + "y": 58, + "Width": 20, + "Height": 28 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5662, + "Title": "Loaded at top", + "x": 106, + "y": 54, + "Width": 75, + "Height": 20 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE", "WS_EX_RIGHT" ], + "Type": "LISTVIEW", + "Id": 1155, + "Style": [ "LVS_REPORT", "LVS_SINGLESEL", "LVS_SHOWSELALWAYS", "LVS_EDITLABELS", "WS_BORDER" ], + "Title": "List4", + "x": 4, + "y": 94, + "Width": 98, + "Height": 474 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 2581, + "Title": "", + "x": 104, + "y": 28, + "Width": 114, + "Height": 22 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE", "WS_EX_RIGHT" ], + "Type": "LISTVIEW", + "Id": 1156, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "LVS_EDITLABELS", "WS_BORDER" ], + "Title": "List4", + "x": 104, + "y": 94, + "Width": 114, + "Height": 474 + }, + { + "Type": "CTEXT", + "Title": "No Cell Selected", + "Style": [ "NOT WS_GROUP" ], + "Id": 1163, + "x": 108, + "y": 8, + "Width": 114, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "World Space", + "Style": [ "NOT WS_GROUP" ], + "Id": 1164, + "x": 10, + "y": 8, + "Width": 45, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "X", + "Id": 5281, + "x": 6, + "y": 64, + "Width": 8, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Y", + "Id": 5282, + "x": 41, + "y": 64, + "Width": 8, + "Height": 16 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 2579, + "Title": "Show only active (*) cells", + "x": 106, + "y": 72, + "Width": 110, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5664, + "Title": "Filtered Only", + "x": 110, + "y": 54, + "Width": 70, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5665, + "Title": "Selected Only", + "x": 110, + "y": 72, + "Width": 70, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5666, + "Title": "Visible Only", + "x": 187, + "y": 54, + "Width": 75, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 2582, + "Title": "Show only active (*) objects", + "x": 204, + "y": 72, + "Width": 120, + "Height": 20 + }, + { + "Type": "EDITTEXT", + "Style": [ "ES_AUTOHSCROLL" ], + "Id": 2585, + "Title": "", + "x": 102, + "y": 28, + "Width": 96, + "Height": 22 + }, + { + "Type": "LTEXT", + "Title": "Filter", + "Style": [ "NOT WS_GROUP" ], + "Id": 1165, + "x": 106, + "y": 8, + "Width": 45, + "Height": 16 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/235-10.json b/[Data]/F4CKFixes/dia/235-10.json new file mode 100644 index 00000000..aefe590e --- /dev/null +++ b/[Data]/F4CKFixes/dia/235-10.json @@ -0,0 +1,23 @@ +{ + "ExStyle": [ "WS_EX_COMPOSITED", "WS_EX_LAYERED", "WS_EX_TOPMOST", "WS_EX_TRANSPARENT" ], + "Style": [ "DS_CENTER", "DS_ABSALIGN", "WS_POPUP" ], + "Title": "", + "Width": 700, + "Height": 700, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "BITMAP", + "Style": [ "SS_REALSIZEIMAGE" ], + "Id": 1962, + "Title": "320", + "x": 0, + "y": 0, + "Width": 700, + "Height": 700 + } + ] +} diff --git a/[Data]/F4CKFixes/dia/235-8.json b/[Data]/F4CKFixes/dia/235-8.json new file mode 100644 index 00000000..f1c3a79f --- /dev/null +++ b/[Data]/F4CKFixes/dia/235-8.json @@ -0,0 +1,23 @@ +{ + "ExStyle": [ "WS_EX_COMPOSITED", "WS_EX_LAYERED", "WS_EX_TOPMOST", "WS_EX_TRANSPARENT" ], + "Style": [ "DS_CENTER", "DS_ABSALIGN", "WS_POPUP" ], + "Title": "", + "Width": 700, + "Height": 700, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "BITMAP", + "Style": [ "SS_REALSIZEIMAGE" ], + "Id": 1962, + "Title": "320", + "x": 0, + "y": 0, + "Width": 700, + "Height": 700 + } + ] +} diff --git a/[Data]/F4CKFixes/dia/3238-10.json b/[Data]/F4CKFixes/dia/3238-10.json new file mode 100644 index 00000000..643e8fda --- /dev/null +++ b/[Data]/F4CKFixes/dia/3238-10.json @@ -0,0 +1,31 @@ +{ + "ExStyle": [ "WS_EX_COMPOSITED" ], + "Style": [ "DS_CENTER", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Progress", + "Width": 281, + "Height": 72, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "CTEXT", + "Title": "", + "Id": 2217, + "x": 4, + "y": 8, + "Width": 267, + "Height": 16 + }, + { + "Type": "PROGRESSBAR", + "Style": [ "WS_BORDER" ], + "Id": 31007, + "x": 4, + "y": 32, + "Width": 273, + "Height": 32 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/3238-8.json b/[Data]/F4CKFixes/dia/3238-8.json new file mode 100644 index 00000000..34e24f16 --- /dev/null +++ b/[Data]/F4CKFixes/dia/3238-8.json @@ -0,0 +1,31 @@ +{ + "ExStyle": [ "WS_EX_COMPOSITED" ], + "Style": [ "DS_CENTER", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION" ], + "Title": "Progress", + "Width": 281, + "Height": 72, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "CTEXT", + "Title": "", + "Id": 2217, + "x": 4, + "y": 8, + "Width": 267, + "Height": 16 + }, + { + "Type": "PROGRESSBAR", + "Style": [ "WS_BORDER" ], + "Id": 31007, + "x": 4, + "y": 32, + "Width": 273, + "Height": 32 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/3352-10.json b/[Data]/F4CKFixes/dia/3352-10.json new file mode 100644 index 00000000..2bf4512b --- /dev/null +++ b/[Data]/F4CKFixes/dia/3352-10.json @@ -0,0 +1,68 @@ +{ + "ExStyle": 0, + "Style": [ "DS_CENTER", "WS_POPUP", "WS_SYSMENU" ], + "Title": "Data", + "Width": 815, + "Height": 680, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "LTEXT", + "Title": "Scope Event: NONE", + "Id": 5343, + "x": 4, + "y": 4, + "Width": 200, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Aliases", + "x": 4, + "y": 24, + "Width": 60, + "Height": 16 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "", + "Id": 5299, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "WS_BORDER", "LVS_NOSORTHEADER" ], + "x": 4, + "y": 44, + "Width": 807, + "Height": 392 + }, + { + "Type": "PUSHBUTTON", + "Title": "<<", + "Id": 4008, + "x": 4, + "y": 440, + "Width": 32, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": ">>", + "Id": 4009, + "x": 40, + "y": 440, + "Width": 32, + "Height": 28 + }, + { + "Type": "LTEXT", + "Title": "Story Manager Conditions", + "Id": 2159, + "x": 4, + "y": 472, + "Width": 200, + "Height": 16 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/3352-8.json b/[Data]/F4CKFixes/dia/3352-8.json new file mode 100644 index 00000000..8e9fc2f9 --- /dev/null +++ b/[Data]/F4CKFixes/dia/3352-8.json @@ -0,0 +1,68 @@ +{ + "ExStyle": 0, + "Style": [ "DS_CENTER", "WS_POPUP", "WS_SYSMENU" ], + "Title": "Data", + "Width": 815, + "Height": 680, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "LTEXT", + "Title": "Scope Event: NONE", + "Id": 5343, + "x": 4, + "y": 4, + "Width": 200, + "Height": 16 + }, + { + "Type": "LTEXT", + "Title": "Aliases", + "x": 4, + "y": 24, + "Width": 60, + "Height": 16 + }, + { + "ExStyle": [ "WS_EX_CLIENTEDGE" ], + "Type": "LISTVIEW", + "Title": "", + "Id": 5299, + "Style": [ "LVS_REPORT", "LVS_SHOWSELALWAYS", "WS_BORDER", "LVS_NOSORTHEADER" ], + "x": 4, + "y": 44, + "Width": 807, + "Height": 392 + }, + { + "Type": "PUSHBUTTON", + "Title": "<<", + "Id": 4008, + "x": 4, + "y": 440, + "Width": 32, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": ">>", + "Id": 4009, + "x": 40, + "y": 440, + "Width": 32, + "Height": 28 + }, + { + "Type": "LTEXT", + "Title": "Story Manager Conditions", + "Id": 2159, + "x": 4, + "y": 472, + "Width": 200, + "Height": 16 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/350-10.json b/[Data]/F4CKFixes/dia/350-10.json new file mode 100644 index 00000000..cfd4c399 --- /dev/null +++ b/[Data]/F4CKFixes/dia/350-10.json @@ -0,0 +1,319 @@ +{ + "ExStyle": [ "WS_EX_COMPOSITED" ], + "Style": [ "WS_SYSMENU", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION", "NOT WS_VISIBLE" ], + "Title": "Show/Hide", + "Width": 116, + "Height": 732, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "AUTOCHECKBUTTON", + "Id": 1007, + "Title": "Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 4, + "Width": 40, + "Height": 20 + }, + { + "Type": "GROUPBOX", + "Style": [ "NOT WS_GROUP" ], + "x": 4, + "y": 4, + "Width": 108, + "Height": 268 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1006, + "Title": "Light Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 28, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1013, + "Title": "Sound Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 52, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1019, + "Title": "Multibounds", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 76, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1021, + "Title": "Occlusion Planes", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 100, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1022, + "Title": "Portals and Rooms", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 124, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5100, + "Title": "Collision Objects", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 148, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1024, + "Title": "LOD Clip Volumes", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 172, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1025, + "Title": "Rarity Indicators", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 196, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1029, + "Title": "Spline Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 220, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1030, + "Title": "Misc Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 244, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1200, + "Title": "Links", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 272, + "Width": 30, + "Height": 20 + }, + { + "Type": "GROUPBOX", + "Style": [ "NOT WS_GROUP" ], + "x": 4, + "y": 272, + "Width": 108, + "Height": 148 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1201, + "Title": "Activate Parents", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 296, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1202, + "Title": "Enable Parents", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 320, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1203, + "Title": "Linked References", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 344, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1204, + "Title": "Room Links", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 368, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1205, + "Title": "Attach Ref Links", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 392, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1008, + "Title": "Helper Objects", + "Style": [ "WS_DISABLED", "NOT WS_GROUP" ], + "x": 8, + "y": 424, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1009, + "Title": "Activators", + "Style": [ "WS_DISABLED", "NOT WS_GROUP" ], + "x": 8, + "y": 448, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1010, + "Title": "Doors", + "Style": [ "WS_DISABLED", "NOT WS_GROUP" ], + "x": 8, + "y": 472, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1011, + "Title": "Terrain", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 496, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 4032, + "Title": "Statics", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 520, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1018, + "Title": "Actors", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 544, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1020, + "Title": "Dynamics", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 568, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1023, + "Title": "Decals", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 592, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1026, + "Title": "Objects Hidden From Local Map", + "Style": [ "BS_MULTILINE", "NOT WS_GROUP" ], + "x": 8, + "y": 616, + "Width": 100, + "Height": 40 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1027, + "Title": "HiRes Heightfield", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 660, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1028, + "Title": "Ground Pieces", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 684, + "Width": 100, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1012, + "Title": "Water", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 708, + "Width": 100, + "Height": 20 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/350-8.json b/[Data]/F4CKFixes/dia/350-8.json new file mode 100644 index 00000000..b9f46324 --- /dev/null +++ b/[Data]/F4CKFixes/dia/350-8.json @@ -0,0 +1,319 @@ +{ + "ExStyle": [ "WS_EX_COMPOSITED" ], + "Style": [ "WS_SYSMENU", "WS_DLGFRAME", "DS_MODALFRAME", "WS_CAPTION", "NOT WS_VISIBLE" ], + "Title": "Show/Hide", + "Width": 116, + "Height": 732, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "AUTOCHECKBUTTON", + "Id": 1007, + "Title": "Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 4, + "Width": 40, + "Height": 20 + }, + { + "Type": "GROUPBOX", + "Style": [ "NOT WS_GROUP" ], + "x": 4, + "y": 4, + "Width": 108, + "Height": 268 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1006, + "Title": "Light Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 28, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1013, + "Title": "Sound Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 52, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1019, + "Title": "Multibounds", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 76, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1021, + "Title": "Occlusion Planes", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 100, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1022, + "Title": "Portals and Rooms", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 124, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 5100, + "Title": "Collision Objects", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 148, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1024, + "Title": "LOD Clip Volumes", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 172, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1025, + "Title": "Rarity Indicators", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 196, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1029, + "Title": "Spline Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 220, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1030, + "Title": "Misc Markers", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 244, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1200, + "Title": "Links", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 272, + "Width": 30, + "Height": 20 + }, + { + "Type": "GROUPBOX", + "Style": [ "NOT WS_GROUP" ], + "x": 4, + "y": 272, + "Width": 108, + "Height": 148 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1201, + "Title": "Activate Parents", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 296, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1202, + "Title": "Enable Parents", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 320, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1203, + "Title": "Linked References", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 344, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1204, + "Title": "Room Links", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 368, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1205, + "Title": "Attach Ref Links", + "Style": [ "NOT WS_GROUP" ], + "x": 12, + "y": 392, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1008, + "Title": "Helper Objects", + "Style": [ "WS_DISABLED", "NOT WS_GROUP" ], + "x": 8, + "y": 424, + "Width": 94, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1009, + "Title": "Activators", + "Style": [ "WS_DISABLED", "NOT WS_GROUP" ], + "x": 8, + "y": 448, + "Width": 94, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1010, + "Title": "Doors", + "Style": [ "WS_DISABLED", "NOT WS_GROUP" ], + "x": 8, + "y": 472, + "Width": 94, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1011, + "Title": "Terrain", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 496, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 4032, + "Title": "Statics", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 520, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1018, + "Title": "Actors", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 544, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1020, + "Title": "Dynamics", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 568, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1023, + "Title": "Decals", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 592, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1026, + "Title": "Objects Hidden From Local Map", + "Style": [ "BS_MULTILINE", "NOT WS_GROUP" ], + "x": 8, + "y": 616, + "Width": 90, + "Height": 40 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1027, + "Title": "HiRes Heightfield", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 660, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1028, + "Title": "Ground Pieces", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 684, + "Width": 90, + "Height": 20 + }, + { + "Type": "AUTOCHECKBUTTON", + "Id": 1012, + "Title": "Water", + "Style": [ "NOT WS_GROUP" ], + "x": 8, + "y": 708, + "Width": 90, + "Height": 20 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/468-10.json b/[Data]/F4CKFixes/dia/468-10.json new file mode 100644 index 00000000..91423665 --- /dev/null +++ b/[Data]/F4CKFixes/dia/468-10.json @@ -0,0 +1,76 @@ +{ + "ExStyle": 0, + "Style": [ "DS_FIXEDSYS", "WS_POPUPWINDOW", "WS_THICKFRAME", "WS_DLGFRAME" ], + "Title": "Layers", + "Width": 326, + "Height": 540, + "FontName": "Microsoft Sans Serif", + "FontSize": 10, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "PUSHBUTTON", + "Title": "New layer", + "Id": 1124, + "x": 4, + "y": 8, + "Width": 105, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "Add selection form", + "Id": 3682, + "x": 113, + "y": 8, + "Width": 105, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "+", + "Id": 5593, + "x": 8, + "y": 76, + "Width": 10, + "Height": 20 + }, + { + "Type": "PUSHBUTTON", + "Title": "-", + "Id": 5594, + "x": 20, + "y": 76, + "Width": 10, + "Height": 20 + }, + { + "Type": "EDITTEXT", + "Id": 2581, + "x": 32, + "y": 44, + "Style": [ "ES_LEFT", "ES_AUTOHSCROLL" ], + "Width": 146, + "Height": 24 + }, + { + "Type": "CONTROL", + "ClassName": "STATIC", + "Id": 6086, + "Style": [ "SS_BLACKFRAME", "NOT WS_VISIBLE", "NOT WS_GROUP" ], + "x": 8, + "y": 104, + "Width": 310, + "Height": 124 + }, + { + "Type": "LTEXT", + "Title": "Filter:", + "x": 8, + "y": 48, + "Width": 24, + "Height": 16 + } + ] +} \ No newline at end of file diff --git a/[Data]/F4CKFixes/dia/468-8.json b/[Data]/F4CKFixes/dia/468-8.json new file mode 100644 index 00000000..8d048607 --- /dev/null +++ b/[Data]/F4CKFixes/dia/468-8.json @@ -0,0 +1,76 @@ +{ + "ExStyle": 0, + "Style": [ "DS_FIXEDSYS", "WS_POPUPWINDOW", "WS_THICKFRAME", "WS_DLGFRAME" ], + "Title": "Layers", + "Width": 326, + "Height": 540, + "FontName": "Microsoft Sans Serif", + "FontSize": 8, + "FontWeight": 400, + "FontItalic": 0, + "Controls": [ + { + "Type": "PUSHBUTTON", + "Title": "New layer", + "Id": 1124, + "x": 4, + "y": 8, + "Width": 105, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "Add selection form", + "Id": 3682, + "x": 113, + "y": 8, + "Width": 105, + "Height": 28 + }, + { + "Type": "PUSHBUTTON", + "Title": "+", + "Id": 5593, + "x": 8, + "y": 76, + "Width": 10, + "Height": 20 + }, + { + "Type": "PUSHBUTTON", + "Title": "-", + "Id": 5594, + "x": 20, + "y": 76, + "Width": 10, + "Height": 20 + }, + { + "Type": "EDITTEXT", + "Id": 2581, + "x": 32, + "y": 44, + "Style": [ "ES_LEFT", "ES_AUTOHSCROLL" ], + "Width": 150, + "Height": 24 + }, + { + "Type": "CONTROL", + "ClassName": "STATIC", + "Id": 6086, + "Style": [ "SS_BLACKFRAME", "NOT WS_VISIBLE", "NOT WS_GROUP" ], + "x": 8, + "y": 104, + "Width": 310, + "Height": 124 + }, + { + "Type": "LTEXT", + "Title": "Filter:", + "x": 8, + "y": 48, + "Width": 24, + "Height": 16 + } + ] +} \ No newline at end of file diff --git a/[Data]/LocalizeRU/CreationKitWarnings.txt b/[Data]/LocalizeRU/CreationKitWarnings.txt new file mode 100644 index 00000000..e53b0e70 --- /dev/null +++ b/[Data]/LocalizeRU/CreationKitWarnings.txt @@ -0,0 +1,215 @@ +FORMS: EXTRA SPACE: Кольцо has at least one space after it. +FORMS: EXTRA SPACE: Титановая обшивка T-51 has at least one space after it. +FORMS: EXTRA SPACE: Большое блюдо has at least one space after it. +FORMS: EXTRA SPACE: Гладкоствол с затвором: усиленный длинный ствол has at least one space after it. +FORMS: EXTRA SPACE: Армейская окраска T-51 has at least one space after it. +FORMS: EXTRA SPACE: Окраска "Волт-Тек" T-51 has at least one space after it. +FORMS: EXTRA SPACE: "Спаситель": удлиненный ствол has at least one space after it. +FORMS: EXTRA SPACE: Гладкоствол с затвором: длинный ствол has at least one space after it. +FORMS: EXTRA SPACE: Стрелковый осадный робот-охранник has at least one space after it. +FORMS: EXTRA SPACE: Осадный робот-охранник has at least one space after it. +FORMS: EXTRA SPACE: Терминал главной исследовательской лаборатории has at least one space after it. +FORMS: EXTRA SPACE: Персонаж говорит что-то про расу спутника, он отвечает has at least one space after it. +FORMS: EXTRA SPACE: Сцена разговоров/отношений с Ником has at least one space after it. +FORMS: EXTRA SPACE: Сцена разговоров/отношений с Маккриди has at least one space after it. +FORMS: EXTRA SPACE: Сцена разговоров/отношений с Хэнкоком has at least one space after it. +FORMS: EXTRA SPACE: Голова протектрона "Уничтожитель" has at least one space after it. +FORMS: EXTRA SPACE: Голова робомозга "Гоблин" has at least one space after it. +FORMS: EXTRA SPACE: Голова штурмотрона "Суккуб" has at least one space after it. +FORMS: EXTRA SPACE: Голова штурмотрона has at least one space after it. +FORMS: EXTRA SPACE: Терминал церебрального перепрограммирования has at least one space after it. +FORMS: EXTRA SPACE: Ключ от склада на Кранберри-Айленд has at least one space after it. +FORMS: EXTRA SPACE: Стейк из мяса матки болотников has at least one space after it. +FORMS: EXTRA SPACE: Обработчик задания для объектов FFNucleus has at least one space after it. +EDITOR: Editor ID 'Critters' for LAYR (0302022C) is not unique, previous object (02053D63) is type LAYR. Editor ID will be set to 'CrittersDUPLICATE000'. +MASTERFILE: NavMesh ID 0022D139 in cell 'Пустоши' (0000E45C) (-26, -2) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: *** Cell Пустоши (0000DF76) combined data is owned by file DLCNukaWorld.esm due to ref TerrainShelfRocks01 (0300B03E) +MASTERFILE: *** Cell Пустоши (0000DF97) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff05_NF (0300B02E) +MASTERFILE: *** Cell Пустоши (0000DF9C) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff06 (0300B048) +MASTERFILE: *** Cell Пустоши (0000DF3A) combined data is owned by file DLCNukaWorld.esm due to ref TreeMapleForest7 (0021E5F9) +MASTERFILE: *** Cell Пустоши (0000DEF8) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleCurveR01 (0021F448) +MASTERFILE: *** Cell Пустоши (0000DF55) combined data is owned by file DLCNukaWorld.esm due to ref ExtRubble_Plain_Sm_Mid02 (0300A7D0) +MASTERFILE: *** Cell Пустоши (0000DF74) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleCurveL01 (0300A94B) +MASTERFILE: *** Cell Пустоши (0000D8C5) combined data is owned by file DLCCoast.esm due to ref SkeletonBareBody01 (02021C29) +MASTERFILE: *** Cell Пустоши (0000DF38) combined data is owned by file DLCNukaWorld.esm due to ref TreeMapleblasted05 (0021E5E9) +MASTERFILE: *** Cell Пустоши (0000D8AA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast01 (02002932) +MASTERFILE: *** Cell Пустоши (0000D8A1) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast02 (02032C98) +MASTERFILE: *** Cell Пустоши (0000DFBD) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff06 (0300B0A1) +MASTERFILE: *** Cell Пустоши (0000DF57) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0300AAC7) +MASTERFILE: *** Cell Пустоши (0000DF59) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04_NF (0300AAD2) +MASTERFILE: *** Cell Пустоши (0000D8E8) combined data is owned by file DLCCoast.esm due to ref FishNetFallenCrates02 (0202084A) +MASTERFILE: *** Cell Пустоши (0000D84E) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (02021C40) +MASTERFILE: *** Cell Пустоши (0000DF52) combined data is owned by file DLCNukaWorld.esm due to ref HighwaySignPostLG01 (001F21AF) +MASTERFILE: *** Cell Пустоши (0000D8AF) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Large02 (02032B36) +MASTERFILE: *** Cell Пустоши (0000DF15) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0300B0A5) +MASTERFILE: *** Cell Пустоши (0000DFB8) combined data is owned by file DLCNukaWorld.esm due to ref TerrainShelfRocks01 (0300B1A2) +MASTERFILE: *** Cell Пустоши (0000D8A4) combined data is owned by file DLCCoast.esm due to ref TreeCluster01 (02021D81) +MASTERFILE: *** Cell Пустоши (0000DF9B) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0300AADD) +MASTERFILE: *** Cell Пустоши (0000D887) combined data is owned by file DLCCoast.esm due to ref TreeCluster03 (02021D76) +MASTERFILE: *** Cell Пустоши (0000D966) combined data is owned by file DLCCoast.esm due to ref DLC03MQ01SetStage45TriggerREF (02049D13) +MASTERFILE: *** Cell Пустоши (0000DF36) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff02_NF (0300AABF) +MASTERFILE: *** Cell Пустоши (0000D8CB) combined data is owned by file DLCCoast.esm due to ref Bramble03 (0204F4D0) +MASTERFILE: *** Cell Пустоши (0000D86D) combined data is owned by file DLCCoast.esm due to ref BeachFence_Broken01 (0201FF6A) +MASTERFILE: *** Cell Пустоши (0000DF7A) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff02_NF (0300AAD6) +MASTERFILE: *** Cell Пустоши (0000DFDC) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster04 (0021AE58) +MASTERFILE: *** Cell Пустоши (0000D8EA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast02 (0204F4D5) +MASTERFILE: *** Cell Пустоши (0000D890) combined data is owned by file DLCCoast.esm due to ref DeerFenceSCLg03Curve (02032B33) +MASTERFILE: *** Cell Пустоши (0000DFBA) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster08 (0021AE9B) +MASTERFILE: *** Cell Пустоши (0000D8AD) combined data is owned by file DLCCoast.esm due to ref RockCliff05 (02021D14) +MASTERFILE: *** Cell Пустоши (0000DFDE) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster06 (0021AE47) +MASTERFILE: *** Cell Пустоши (0000D8FF) combined data is owned by file DLCCoast.esm due to ref BlastedForestBurntBranch01 (02033FE1) +MASTERFILE: *** Cell Пустоши (0000D8C9) combined data is owned by file DLCCoast.esm due to ref CoastBeach01 (02020870) +MASTERFILE: *** Cell Пустоши (0000DF35) combined data is owned by file DLCNukaWorld.esm due to ref TreeLeanScrub07 (00144794) +MASTERFILE: *** Cell Пустоши (0000D88F) combined data is owned by file DLCCoast.esm due to ref TreeClusterDead03 (0021F1C1) +MASTERFILE: *** Cell Пустоши (0000DF79) combined data is owned by file DLCNukaWorld.esm due to ref PGarageOut1x1CorWall01 (0300A91E) +MASTERFILE: *** Cell Пустоши (0000D8C8) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastSlab (00159376) +MASTERFILE: *** Cell Пустоши (0000DF51) combined data is owned by file DLCNukaWorld.esm due to ref BillboardBldgSm01 (0304BF65) +MASTERFILE: *** Cell Пустоши (0000D8EB) combined data is owned by file DLCCoast.esm due to ref RockPileL01_NF_Roots01 (0204F4D9) +MASTERFILE: *** Cell Пустоши (0000DF5A) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0300B046) +MASTERFILE: *** Cell Пустоши (0000DFBB) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff03_NF (0300AADF) +MASTERFILE: *** Cell Пустоши (0000D891) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Low01 (02032CCE) +MASTERFILE: *** Cell Пустоши (0000DF16) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster06 (0021AEC0) +MASTERFILE: *** Cell Пустоши (0000D8AC) combined data is owned by file DLCCoast.esm due to ref TreeCluster08 (02021E10) +MASTERFILE: *** Cell Пустоши (0000E45B) combined data is owned by file DLCRobot.esm due to ref RaiderCampPole02 (01008351) +MASTERFILE: *** Cell Пустоши (0000DF9A) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04 (0300AADB) +MASTERFILE: *** Cell Пустоши (0000D886) combined data is owned by file DLCCoast.esm due to ref TreeCluster02 (02021D7A) +MASTERFILE: *** Cell Пустоши (0000D88D) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (02021C45) +MASTERFILE: *** Cell Пустоши (0000DF37) combined data is owned by file DLCNukaWorld.esm due to ref TreeCluster07 (0021AED1) +MASTERFILE: *** Cell Пустоши (0000D8CA) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastSlab (0204F4F0) +MASTERFILE: *** Cell Пустоши (0000DF7B) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01_NF (0300B047) +MASTERFILE: *** Cell Пустоши (0000E400) combined data is owned by file DLCCoast.esm due to ref TreeClusterDead01 (02032CCA) +MASTERFILE: *** Cell Пустоши (0000DF58) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff01 (0300AAC9) +MASTERFILE: *** Cell Пустоши (0000F6B7) combined data is owned by file DLCRobot.esm due to ref TrashEdge01 (00142F3C) +MASTERFILE: *** Cell Пустоши (0000D8E9) combined data is owned by file DLCCoast.esm due to ref Bramble03 (0204F4EF) +MASTERFILE: *** Cell Пустоши (0000D8AE) combined data is owned by file DLCCoast.esm due to ref TreeStump04 (02021D39) +MASTERFILE: *** Cell Пустоши (0000DFB9) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (00148FA4) +MASTERFILE: *** Cell Пустоши (0000D8AB) combined data is owned by file DLCCoast.esm due to ref RockCliffCoastShort02 (0204F4F2) +MASTERFILE: *** Cell Пустоши (0000D8A0) combined data is owned by file DLCCoast.esm due to ref TreeCluster06 (02032D00) +MASTERFILE: *** Cell Пустоши (0000DFBC) combined data is owned by file DLCNukaWorld.esm due to ref DirtCliffLarge02 (0300B0A0) +MASTERFILE: *** Cell Пустоши (000083DC) combined data is owned by file DLCCoast.esm due to ref ExtRubble_Plain_Lg_Mid01 (02032A2D) +MASTERFILE: *** Cell Пустоши (0000D8E7) combined data is owned by file DLCCoast.esm due to ref Rowboat01Stand01_SC_DLC03 (02020862) +MASTERFILE: *** Cell Пустоши (0000DBF9) combined data is owned by file DLCRobot.esm due to ref DecoMainA2x1Cor01 (01007EF9) +MASTERFILE: *** Cell Пустоши (0000DF56) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleStr01 (0300A7B7) +MASTERFILE: *** Cell Пустоши (0000DF39) combined data is owned by file DLCNukaWorld.esm due to ref RockCliff04_NF (0300B04C) +MASTERFILE: *** Cell Пустоши (0000DF18) combined data is owned by file DLCNukaWorld.esm due to ref HWSingleRampUp01 (0021F447) +MASTERFILE: *** Cell Пустоши (000083DE) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_LargeCorner01 (02032AF3) +MASTERFILE: *** Cell Пустоши (0000E419) combined data is owned by file DLCRobot.esm due to ref LvlYaoGuai (00197B2C) +MASTERFILE: *** Cell Пустоши (0000DF54) combined data is owned by file DLCNukaWorld.esm due to ref VaultTecVan01Blue (03022D30) +MASTERFILE: *** Cell Пустоши (0000D8C6) combined data is owned by file DLCCoast.esm due to ref DLC03InvColBox256 (02057745) +MASTERFILE: *** Cell Пустоши (000083B1) combined data is owned by file DLCCoast.esm due to ref RockCliffCoast_Low01 (02032B6E) +MASTERFILE: *** Cell Пустоши (0000DF30) combined data is owned by file DLCNukaWorld.esm due to ref BillboardBldgVerticalSm02 (001F21AC) +MASTERFILE: *** Cell Пустоши (0000DF96) combined data is owned by file DLCNukaWorld.esm due to ref LeafPile01 (0304F493) +MASTERFILE: NavMesh ID 002269BE in cell 'Пустоши' (0000E4BC) (-23, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00228B35 in cell 'Пустоши' (0000E6CB) (-22, -21) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00217B76 in cell 'Пустоши' (0000E1E5) (12, -15) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002472F7 in cell 'Пустоши' (0000E794) (-25, -27) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +FORMS: DOOR: Reference MetalTrapdoor01 001B9AE2 has portal to navmesh 0104F4D3 which is not found. Please finalize navmesh in cell Пустоши 0000DFB7 to resolve this. +MASTERFILE: NavMesh ID 0024970D in cell 'Пустоши' (0000D936) (3, 24) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00140AE2 in cell 'Пустоши' (0000D936) (3, 24) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A5F in cell 'Пустоши' (0000E455) (-19, -2) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0017173C in cell 'Пустоши' (0000E455) (-19, -2) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0024746F in cell 'Пустоши' (0000E201) (15, -16) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A64 in cell 'Пустоши' (0000E559) (-15, -10) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A63 in cell 'Пустоши' (0000E559) (-15, -10) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00228788 in cell 'Пустоши' (0000E559) (-15, -10) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0024970F in cell 'Пустоши' (0000D917) (3, 25) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0024970E in cell 'Пустоши' (0000D917) (3, 25) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00140ADF in cell 'Пустоши' (0000D917) (3, 25) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A60 in cell 'Пустоши' (0000E6EB) (-21, -22) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496B7 in cell 'Пустоши' (0000E6EB) (-21, -22) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A67 in cell 'Пустоши' (0000E666) (-20, -18) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00228B3D in cell 'Пустоши' (0000E666) (-20, -18) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249718 in cell 'Пустоши' (0000E0D3) (7, -6) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0018486E in cell 'Пустоши' (0000E0D3) (7, -6) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00172975 in cell 'Пустоши' (0000E413) (-19, 0) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A70 in cell 'Пустоши' (0000E825) (-19, -31) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00140FC7 in cell 'Пустоши' (0000E825) (-19, -31) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A73 in cell 'Пустоши' (0000E822) (-17, -32) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A72 in cell 'Пустоши' (0000E822) (-17, -32) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A71 in cell 'Пустоши' (0000E822) (-17, -32) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0018FB3A in cell 'Пустоши' (0000E822) (-17, -32) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496B2 in cell 'Пустоши' (0000E53C) (-19, -9) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00184BAD in cell 'Пустоши' (0000E53C) (-19, -9) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0022F301 in cell 'Пустоши' (0000E276) (22, -20) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249715 in cell 'Пустоши' (0000E4CA) (-4, -6) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249714 in cell 'Пустоши' (0000E4CA) (-4, -6) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249713 in cell 'Пустоши' (0000E4CA) (-4, -6) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 000F93F1 in cell 'Пустоши' (0000E4CA) (-4, -6) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0024749E in cell 'Пустоши' (0000E647) (-22, -17) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249A82 in cell 'Пустоши' (0000DB13) (23, 8) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 001F60FF in cell 'Пустоши' (0000DB13) (23, 8) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0022CF74 in cell 'Пустоши' (0000E522) (-26, -8) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249B06 in cell 'Пустоши' (0000DFCF) (-16, 2) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0023AFEC in cell 'Пустоши' (0000DFCF) (-16, 2) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496A3 in cell 'Пустоши' (0000DAF4) (23, 9) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 001F6100 in cell 'Пустоши' (0000DAF4) (23, 9) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496BD in cell 'Пустоши' (0000E70D) (-22, -23) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00135C01 in cell 'Пустоши' (0000E70D) (-22, -23) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496BA in cell 'Пустоши' (0000E51D) (-21, -8) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496B9 in cell 'Пустоши' (0000E51D) (-21, -8) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0015FE96 in cell 'Пустоши' (0000E51D) (-21, -8) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249B0C in cell 'Пустоши' (0000E465) (-2, -3) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249B0B in cell 'Пустоши' (0000E465) (-2, -3) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0024601F in cell 'Пустоши' (0000E465) (-2, -3) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249B10 in cell 'Пустоши' (0000E770) (-22, -26) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002472FC in cell 'Пустоши' (0000E770) (-22, -26) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249B11 in cell 'Пустоши' (0000E6D4) (-31, -21) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0022C850 in cell 'Пустоши' (0000E6D4) (-31, -21) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249712 in cell 'Пустоши' (0000E4A9) (-4, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249711 in cell 'Пустоши' (0000E4A9) (-4, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249710 in cell 'Пустоши' (0000E4A9) (-4, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00119FF3 in cell 'Пустоши' (0000E4A9) (-4, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249719 in cell 'Пустоши' (0000E406) (-6, 0) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00239B0F in cell 'Пустоши' (0000E406) (-6, 0) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0017E164 in cell 'Пустоши' (0000DF80) (-3, 4) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249B19 in cell 'Пустоши' (0000DB35) (20, 7) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00209862 in cell 'Пустоши' (0000DB35) (20, 7) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 002496B3 in cell 'Пустоши' (0000E4B9) (-20, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0023AFC3 in cell 'Пустоши' (0000E4B9) (-20, -5) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00249716 in cell 'Пустоши' (0000DB44) (4, 7) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 00231DAF in cell 'Пустоши' (0000DB44) (4, 7) in WorldSpace 'Commonwealth' (0000003C) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0201C8FE in cell 'Пустоши' (02000BEB) (12, 9) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02054439 in cell 'Пустоши' (0200274E) (-10, 8) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02054437 in cell 'Пустоши' (0200274E) (-10, 8) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0204EB61 in cell 'Пустоши' (0200274E) (-10, 8) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0205443C in cell 'Пустоши' (02002740) (-8, 11) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0204EB65 in cell 'Пустоши' (02002740) (-8, 11) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02043819 in cell 'Пустоши' (02000B90) (8, -9) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02054436 in cell 'Пустоши' (02002749) (-9, 8) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0204EB62 in cell 'Пустоши' (02002749) (-9, 8) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0201C900 in cell 'Пустоши' (02000B43) (13, 9) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02044102 in cell 'Пустоши' (02000C1D) (8, 9) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02049FF7 in cell 'Пустоши' (02000CA4) (2, -4) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 02025F19 in cell 'Пустоши' (02000CE5) (0, -14) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0202131E in cell 'Пустоши' (02000C01) (11, -2) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: Ref (0204974E) to base object Fern01_DLC03_04 (02003C5B) in cell Пустоши (8, 6) (02000C20) should be persistent but is not. +MASTERFILE: NavMesh ID 02043219 in cell 'Пустоши' (02000B4B) (10, -8) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 0201AF17 in cell 'Пустоши' (02000DE0) (-12, 0) in WorldSpace 'DLC03FarHarbor' (02000B0F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 030328D9 in cell 'Пустоши' (03003422) (-11, -6) in WorldSpace 'NukaWorld' (0300290F) has invalid cover data. It will be removed. +MASTERFILE: Potentially Invalid Z value (-70547.19) on reference:REFR Form '' (0300ED8E) to MSTT form 'SkeletonClothedF01' (0008B214) in Cell 'Пустоши' (03003349) (-8, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9A) to ALCH form 'NukaCola' (0004835D) in Cell 'Пустоши' (03003204) (-3, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9C) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Пустоши' (03003204) (-3, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9D) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Пустоши' (03003204) (-3, 16) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73753.95) on reference:REFR Form '' (0300ED9E) to MISC form 'NukaColaEmpty' (0004835A) in Cell 'Пустоши' (03003203) (-3, 17) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-73834.35) on reference:REFR Form '' (0300EDA1) to MSTT form 'SkeletonBareBodyHeadless' (000E1B85) in Cell 'Пустоши' (03003203) (-3, 17) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: Potentially Invalid Z value (-80350.69) on reference:REFR Form '' (0300ED9F) to MSTT form 'SkeletonClothedF05' (001A4D44) in Cell 'Пустоши' (0300320A) (-3, 10) in WorldSpace 'NukaWorld' (0300290F) +MASTERFILE: NavMesh ID 03053AF0 in cell 'Пустоши' (03003009) (5, 3) in WorldSpace 'NukaWorld' (0300290F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 03035DD7 in cell 'Пустоши' (03003009) (5, 3) in WorldSpace 'NukaWorld' (0300290F) has invalid cover data. It will be removed. +MASTERFILE: NavMesh ID 03032A21 in cell 'Пустоши' (03003054) (4, -7) in WorldSpace 'NukaWorld' (0300290F) has invalid cover data. It will be removed. +CELLS: Cell name Колониальный универсальный магазин for cell PrewarTVStudio (000ECCFD) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Вербовочный центр Национальной гвардии for cell NationalGuardTrainingYard01 (000532B6) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Федеральный продовольственный склад for cell FederalRationStockpile01 (00035FF4) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Подготовительная школа Восточного Бостона for cell EastBostonPrep01 (000379C6) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Альтернативная ячейка Братства Стали for cell BoSAliasCell (000D1064) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Радиологический центр Массачусетс-Бэй for cell TheaterMassBayMedicalCenter02 (001C53EF) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Психиатрическая больница "Парсонс" for cell ParsonsState02 (0005FBB5) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Консервный завод Большого Луковски for cell LongneckLukowskis01 (0003B6ED) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Сувенирный магазин научного центра for cell CambridgeScienceCenter01 (000517B3) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Оружейный склад Национальной гвардии for cell NationalGuardTrainingYard03 (000E2F6F) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Полицейское управление южного Бостона for cell SouthBostonPoliceDepartment01 (0009AE28) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Спутниковая станция ВВС США "Оливия" for cell USAFSatellite01 (00068F7C) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Океанологическая лаборатория Наханта for cell NahantOceanSociety02 (0007FF42) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Штаб-квартира корпорации "Уилсон Атоматойз" for cell AtomatoysCorporateHQ01 (0009087E) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Региональная штаб-квартира "Волт-Тек" for cell VaultTecOffice01 (0001B0F7) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Политехническая школа Центрального Бостона for cell DBTechHighSchool01 (0003AC6D) is too long. The maximum length allowed is 33 characters. +CELLS: Cell name Служебное здание ветроэлектростанции for cell DLC03WindFarmBuilding01 (0202E12D) is too long. The maximum length allowed is 33 characters. \ No newline at end of file diff --git a/[Data]/Textures/DarkGray.dds b/[Data]/Textures/DarkGray.dds new file mode 100644 index 00000000..aebf20f0 Binary files /dev/null and b/[Data]/Textures/DarkGray.dds differ diff --git a/[Data]/Textures/sky/wastelandcloudcloudylower01.dds b/[Data]/Textures/sky/wastelandcloudcloudylower01.dds new file mode 100644 index 00000000..6b40853e Binary files /dev/null and b/[Data]/Textures/sky/wastelandcloudcloudylower01.dds differ diff --git a/[Data]/Textures/sky/wastelandcloudcloudyupper01.dds b/[Data]/Textures/sky/wastelandcloudcloudyupper01.dds new file mode 100644 index 00000000..6342d3d6 Binary files /dev/null and b/[Data]/Textures/sky/wastelandcloudcloudyupper01.dds differ diff --git a/[Data]/Textures/sky/wastelandcloudhorizon01.dds b/[Data]/Textures/sky/wastelandcloudhorizon01.dds new file mode 100644 index 00000000..6912dbbe Binary files /dev/null and b/[Data]/Textures/sky/wastelandcloudhorizon01.dds differ diff --git a/[Data]/Textures/sky/wastelandcloudhorizon02.dds b/[Data]/Textures/sky/wastelandcloudhorizon02.dds new file mode 100644 index 00000000..d14bb231 Binary files /dev/null and b/[Data]/Textures/sky/wastelandcloudhorizon02.dds differ diff --git a/[Data]/Textures/skysky/GS01_d.DDS b/[Data]/Textures/skysky/GS01_d.DDS new file mode 100644 index 00000000..df1b4522 Binary files /dev/null and b/[Data]/Textures/skysky/GS01_d.DDS differ diff --git a/[Data]/fallout4_test.ini b/[Data]/fallout4_test.ini new file mode 100644 index 00000000..986eaaec --- /dev/null +++ b/[Data]/fallout4_test.ini @@ -0,0 +1,527 @@ +; NOTICE: Experimental options may speed up things. They might do nothing. They might crash the editor. +; +; LIPGEN NOTICE: In order to enable LIP generation in the 64-bit CK, you must copy CreationKit32.exe, ssce5532.dll, and GFSDK_GodraysLib.Win32.dll +; from '\Tools\LipGen' to '' (the game root directory). +; +; CREATION KIT SETTINGS +; + +[Mode] +; Enable patches game fallout4.exe. See [Fallout4] section. +Extended=false + +[CreationKit] + +; Allows opening files larger than 4 GB, removed checks, changed class structure, safe for opening files of smaller size, +; however, for more files of 4 GB with the risk of CTD or other errors. +; (NO WRITE, READING FILES IN AN ARCHIVE LARGER THAN 4GB IS NOT SUPPORTED) +LooseFilePatch=true + +; [Experimental] Replacing the refs manager to increase the number of maximum possible loads from 2 million to 68 million. +; Now loading all DLC and games takes 1.5 million. +; It is already incompatible with SeargeDP patch. +BSHandleRefObjectPatch=false + +; [Experimental] Deleting spam useless messages, +; fixing a ROOTCELL generation request, the original CK sends a Form with a type other than Cell. +PreVisPatch=true + +; [Experimental] skipping duplicate generation previs. +PreVis_SkipDuplicatePatch=false + +; [Experimental] Quick search for a TESForm in the altered list. +AlteredFormListPatch=true + +; Will force CK to read large pages (inc. 2kb->256kb read buffer). +IOPatch=true + +; Makes it possible to initialize both 11.0 and 11.1 version DirectX. +; So and fixed Nvidia NSight checks. +D3D11Patch=true + +; Allow rebinding certain window hotkeys. See [CreationKit_Hotkeys] section. +UIHotkeys=true + +; [Experimental] Ref link lines will no longer be visible. +RefLinkGeometryHangWorkaround=false + +; [Experimental] Workaround for version control not allowing merges with more than 2 masters present. +; Do NOT use this for anything else. +VersionControlMergeWorkaround=false + +; [Experimental] Attach Render Window to inside Main Window +AttachRenderWindow=false + +; 0-nothing; +; 1-selection of small font size dialogs +; 2-selection of middle font size dialogs +; 3-selection of large font size dialogs (not implemented). +DialogMode=1 + +; 0-Normaly. +; 1-Light. +; 2-Gray. +; 3-Dark Gray. +; 4-Night. +; Requires a Windows theme with styling (Aero) to be enabled and may cause graphical problems. +UITheme=3 + +; Convert Utf-8 to WinCP when loading and back when saving. +Unicode=false + +; Generate a dump in the game folder when the CK crashes. +GenerateCrashdumps=true + +; Skip initialization AnimationBuildProcessDataExportUtils::DoDataExport after loading plugin file. +SkipAnimationBuildProcessData=false + +; Allow saving master files directly & setting them as the active file in the Data File dialog. +; This will destroy version control information. +AllowSaveESM=true + +; Allow ESP files to act as master files while saving. +AllowMasterESP=true + +; Force the render window to draw at 60fps while idle. +RenderWindowUnlockedFPS=false + +; If RenderWindowUnlockedFPS is enabled, this will enable vertical synchronization. +VSyncRender=false + +; Disable "Not Responding" overlay while performing certain tasks +DisableWindowGhosting=false + +; In the log, hide specific warnings or errors produced by the vanilla game/DLC ESM files. +WarningBlacklist=true + +; Replacing the "Do you know" window with the progress dialog. +ReplacingTipsWithProgressBar=true + +; Spam interval in the status bar with FPS information. (value from 42 to 1000 where 1000 default) +FPSSpamInterval=1000 + +; During the initialization of CellView objects, skip the repeated filter. +SkipChangeWorldSpace=true + +; I can't fix it, everything that contains a primitive is added with a leak. +; I'll just forbid adding them to the layer. +BanAddPrimitiveToLayer=true + +; Sets a preferred processor for a thread. +; The system schedules threads on their preferred processors whenever possible. +; Only for quad-core processor or higher. +EnableThreadAffinity=true + +; Replaces the array search function. +BSTArraySearchItemReplacement=true + +; All verification options are enabled (Enabling it will result in a very slow load). +LoadingExtremelyUnreliableFiles=false + +; Automatic loading of archives with textures, meshes, scripts, etc. +; IMPORTANT: The value must be added together. +; MAIN 1 +; TEXTURES(X) 2 +; MESHES 4 +; MESHES_EXTRA 8 +; MATERIALS 16 +; VOICES 32 +; VOICES_EN 64 +; MISC 128 +AutoloadBA2Files=3 + +; The original archive loader, the AutoloadBA2Files option will not work. +OriginalLoadBA2=true + +; Remove assertion message popups (not recommended). +DisableAssertions=false + +; Enabling a similar patch for FaceGen. See [CreationKit_FaceGen] section. +FaceGenPatch=true + +[CreationKit_PreVisAndComb] +; Unknown flag (may have values 0-pc, 1-ps4, 2-xb1) +; The data is inaccurate, configure it yourself, but for a pc, all flags must be equal to 0. +GenerationVersion1=0 + +; Unknown flag (may have values 0-pc, 1-ps4, 2-xb1) +; According to some data, it should always be 0. +; The data is inaccurate, configure it yourself, but for a pc, all flags must be equal to 0. +GenerationVersion2=0 + +[CreationKit_FaceGen] +; Prevent tint export as DDS. +DisableExportDDS=false + +; Prevent tint export as TGA. +DisableExportTGA=true + +; Prevent facegen geometry export. +DisableExportNIF=false + +; Sets NxN resolution when exporting textures. +TintMaskResolution=2048 + +[CreationKit_Font] +; Set charset for font ListView, ListBox, TreeView controls (worked only UITheme > 0) +; ANSI_CHARSET 0 +; DEFAULT_CHARSET 1 +; SYMBOL_CHARSET 2 +; SHIFTJIS_CHARSET 128 +; HANGEUL_CHARSET 129 +; HANGUL_CHARSET 129 +; GB2312_CHARSET 134 +; CHINESEBIG5_CHARSET 136 +; OEM_CHARSET 255 +; JOHAB_CHARSET 130 +; HEBREW_CHARSET 177 +; ARABIC_CHARSET 178 +; GREEK_CHARSET 161 +; TURKISH_CHARSET 162 +; VIETNAMESE_CHARSET 163 +; THAI_CHARSET 222 +; EASTEUROPE_CHARSET 238 +; RUSSIAN_CHARSET 204 +; MAC_CHARSET 77 +; BALTIC_CHARSET 186 +Charset=1 + +[CreationKit_Log] +; Initial log window position left, top +X=24 +Y=24 + +; Initial log window width (recomended 1024) +Width=1024 + +; Initial log window height (recomended 480) +Height=480 + +; Hide log window +TurnOffLogWindow=false + +; Any installed system font +Font=Consolas + +; Size in points +FontSize=10 + +; Light (300), Regular (400), Medium (500), Bold (700) +FontWeight=400 + +; Print log output to a file (i.e. "log.txt"). +; May cause UI lag on slow hard drives. To disable, set the value to "none". +OutputFile=none + +; +; Bind custom keys for the Render Window & Navmesh Edit Window. UIHotkeys must be enabled under [CreationKit]. +; +; Allowed keys: A-Z, a-z, 0-9, ESC, DEL, TAB, SPACE, BACK, and most symbols. Allowed modifiers: CTRL, SHIFT, and ALT. Spaces and quotes will be ignored. +; +[CreationKit_Hotkeys] + +; Anchor the camera +HKFunc_AnchorCamera=SHIFT+F +; Cycle camera view +HKFunc_CycleThroughCameraViews=Y +; Toggle non-land culling +HKFunc_ToggleNonlandCulling=SHIFT+C +; Clear selection +HKFunc_ClearSelection=D +; Copy selection +HKFunc_Copy=CTRL+C +; Cut selection +HKFunc_CutSelection=CTRL+X +; Delete selection +HKFunc_DeleteSelection=DEL +; Drop camera +HKFunc_DropCamera=CTRL+ALT+Z +; Duplicate selection +HKFunc_Duplicate=CTRL+D +; Edit landscape +HKFunc_EditLandscape=H +; Edit navmesh +HKFunc_EditNavmesh=CTRL+E +; Go to selection in game +HKFunc_GoToSelectionInGame=SHIFT+G +; Object palette +HKFunc_ObjectPalette=SHIFT+O +; Paste clipboard contents +HKFunc_Paste=CTRL+V +; Paste clipboard contents in place +HKFunc_PasteInPlace=SHIFT+CTRL+V +; Picking preferences +HKFunc_PickingPreferences=/ +; Redo +HKFunc_Redo=CTRL+Y +; Refresh +HKFunc_Refresh=F5 +; Refresh and clear undo list +HKFunc_RefreshAndClearUndoList=CTRL+ALT+F5 +; Refresh selected +HKFunc_RefreshSelected=ALT+F5 +; Save +HKFunc_Save=CTRL+S +; Scale a light's fade distance +HKFunc_SetLightFadeScalingKeyDown=CTRL+ALT+S +; Scale a light's FOV +HKFunc_SetLightFOVScalingKeyDown=ALT+S +; Scale a light's FOV +HKFunc_SetLightSDBScalingKeyDown=ALT+B +; Set local rotation +HKFunc_SetLocalRotation=ALT+G +; Scale a reference +HKFunc_SetScalingKeyDown=S +; Toggle gizmo orientation +HKFunc_ToggleGizmoOrientation=G +; Toggle havok +HKFunc_ToggleHavok=ALT+H +; Enter selection manipulation mode +HKFunc_SetManipulationModeSelect=R +; Enter rotation manipulation mode +HKFunc_SetManipulationModeRotate=W +; Enter translation manipulation mode +HKFunc_SetManipulationModeTranslate=E +; Enter scale manipulation mode +HKFunc_SetManipulationModeScale=2 +; Show land borders +HKFunc_ShowLandBorders=B +; Show scene graph +HKFunc_ShowSceneGraph=F10 +; Export selected scene to FBX file +HKFunc_ToFBX=F2 +; Decrement snap units +HKFunc_SnapDecrement=[ +; Increment snap units +HKFunc_SnapIncrement=] +; Toggle bright lights +HKFunc_ToggleBrightLights=A +; Toggle cell window loads +HKFunc_ToggleCellWindowLoads=ALT+A +; Toggle collision geometry +HKFunc_ToggleCollisionGeometry=F4 +; Toggle fog +HKFunc_ToggleFog=CTRL+5 +; Toggle game FOV camera +HKFunc_ToggleGameFOV=ALT+F +; Toggle grass +HKFunc_ToggleGrass=8 +; Toggle grid +HKFunc_ToggleGrid== +; Toggle land culling +HKFunc_ToggleLandCulling=SHIFT+L +; Toggle light markers +HKFunc_ToggleLightMarkers=CTRL+I +; Toggle light radius +HKFunc_ToggleLightRadius=L +; Toggle lighting-only mode +HKFunc_ToggleLightingOnlyMode=CTRL+ALT+L +; Toggle markers +HKFunc_ToggleMarkers=M +; Toggle occlusion planes +HKFunc_ToggleOcclusionPlanes=U +; Toggle orthographic perspective +HKFunc_ToggleOrthographicPerspective=0 +; Toggle picking against trees +HKFunc_TogglePickingAgainstTrees=CTRL+T +; Toggle the reference properties window +HKFunc_TogglePropertiesWindow=ENTER +; Toggle rooms and portals +HKFunc_ToggleRoomsAndPortals=SHIFT+R +; Toggle shadows +HKFunc_ToggleShadows=5 +; Toggle sky +HKFunc_ToggleSky=6 +; Toggle sound markers +HKFunc_ToggleSoundMarkers=CTRL+N +; Toggle trees +HKFunc_ToggleTrees=ALT+T +; Toggle wireframe +HKFunc_ToggleWireframe=7 +; Toggle water culling +HKFunc_ToggleWaterCulling=SHIFT+W +; Undo +HKFunc_Undo=CTRL+Z +; Save and push plugin to PC +HKFunc_SaveAndPushPluginPC=SHIFT+CTRL+S +; Run Object Combination +HKFunc_RunObjectCombination=SHIFT+CTRL+ALT+O +; Preview Object Combination +HKFunc_ToggleObjectCombinationPreview=SHIFT+CTRL+O +; Preview Object Combination Groups +HKFunc_ToggleObjectCombinationGroupPreview=CTRL+O +; Align to rotation +HKFunc_AlignToRotation=CTRL+A +; Align to position +HKFunc_AlignToPosition=SHIFT+CTRL+A +; Load Last Cell +HKFunc_LoadLastCell=CTRL+TAB +; Clear the snap reference +HKFunc_ClearSnapReference=ALT+Q +; Create a bendable spline +HKFunc_CreateBendableSpline=P +; Create a linked ref chain +HKFunc_CreateLinkedRefChain=SHIFT+CTRL+SPACE +; Create a multibound reference +HKFunc_CreateMultiboundReference=CTRL+B +; Cycle the visibility of selected objects +HKFunc_CycleSelectedVisibility=1 +; Cycle the visibility of unselected objects +HKFunc_CycleUnselectedVisibility=SHIFT+ALT+1 +; Drop selection to ground +HKFunc_DropSelectionToGround=F +; Duplicate and link reference +HKFunc_DuplicateAndLink=CTRL+ALT+D +; Fill the material palette from current selection +HKFunc_FillMaterialPalette=ALT+M +; Fragment static collection +HKFunc_FragmentStaticCollection=ALT+U +; Freeze the camera +HKFunc_FreezeCamera=3 +; Group references +HKFunc_GroupReferences=CTRL+G +; Link/break planes/rooms +HKFunc_LinkOrBreakPlanesOrRooms=ALT+L +; Load selected object's parent cell +HKFunc_LoadCellForSelectedObject=CTRL+L +; Make static collection +HKFunc_MakeStaticCollection=ALT+O +; Match slope while dragging +HKFunc_MatchSlopeWhileDragging=ALT+ +; Move clipboard references +HKFunc_MoveClipboardReferences=CTRL+M +; Move clipboard references in place +HKFunc_MoveClipboardReferencesInPlace=SHIFT+CTRL+M +; Move selection to cursor +HKFunc_MoveSelectionToCursor=ALT+N +; Enter paint selection mode +HKFunc_PaintSelection=SHIFT+CTRL+ +; Place camera above selection +HKFunc_PlaceCameraAboveSelection=T +; Quick link +HKFunc_QuickLink=CTRL+SPACE +; Raise selection +HKFunc_RaiseSelection=CTRL+ALT+G +; Reset rotation +HKFunc_ResetReferenceRotation=CTRL+K +; Reset scale +HKFunc_ResetReferenceScale=SHIFT+CTRL+K +; Resnap References +HKFunc_SnapReferences=SHIFT+K +; Search and replace +HKFunc_SearchAndReplace=CTRL+F +; Select adjoining references +HKFunc_SelectAdjoiningReferences=CTRL+ENTER +; Select all adjoining references +HKFunc_SelectAllAdjoiningReferences=SHIFT+CTRL+ENTER +; Toggle batch dialog +HKFunc_ToggleBatchDialog=- +; Toggle debug geometry +HKFunc_ToggleDebugGeometry=4 +; Toggle visibility of enable state opposite children +HKFunc_ToggleEnableStateOppositeChildrenVisibility=SHIFT+1 +; Toggle visibility of enable state children +HKFunc_ToggleEnableStateChildrenVisibility=CTRL+1 +; Toggle flycam +HKFunc_ToggleFlycam=` +; Toggle location snap +HKFunc_ToggleLocationSnap=Q +; Toggle portal mode +HKFunc_TogglePortalMode=CTRL+P +; Toggle reference snap +HKFunc_ToggleReferenceSnap=SHIFT+Q +; Toggle rotation snap +HKFunc_ToggleRotationSnap=CTRL+Q +; Toggle selection culling +HKFunc_ToggleSelectionCulling=SHIFT+CTRL+C +; Toggle selection mask +HKFunc_ToggleSelectionMask=ALT+V +; Ungroup references +HKFunc_UngroupReferences=CTRL+U +; Unhide all hidden objects +HKFunc_UnhideAllObjects=ALT+1 +; Add a polygon +HKFunc_AddPolygon=A +; Change draw mode +HKFunc_ChangeDrawMode=W +; Delete selection +HKFunc_DeleteNavMeshSelection=R +; Drop vertices/Flood Fill +HKFunc_DropVerticesOrFloodFill=F +; Finalize cell +HKFunc_FinalizeCell=CTRL+1 +; Find cover +HKFunc_FindCover=CTRL+2 +; Hide selected triangles +HKFunc_ToggleHiddenForSelectedTris=1 +; Unhide all hidden triangles +HKFunc_UnhideAllTris=ALT+1 +; Inverse flood fill +HKFunc_InverseFloodFill=I +; Merge selected vertices +HKFunc_MergeSelectedVertices=Q +; Open advanced generation dialog +HKFunc_OpenAdvancedGenerationDialog=4 +; Open edge properties dialog +HKFunc_OpenEdgePropertiesDialog=E +; Open standard generation dialog +HKFunc_OpenStandardGenerationDialog=3 +; Rotate double vertex selection +HKFunc_RotateDoubleVertexSelection=TAB +; Rotate double vertex selection +HKFunc_RotateDoubleVertexSelectionWithControlKey=CTRL+TAB +; Select triangle by index +HKFunc_SelectTriangleByIndex=CTRL+F +; Swap edge +HKFunc_SwapEdge=S +; Shrink triangle selection +HKFunc_ShrinkTriangleSelection=SHIFT+S +; Toggle edge select mode +HKFunc_ToggleEdgeSelectMode=G +; Grow triangle selection +HKFunc_GrowTriangleSelection=SHIFT+A +; Toggle no large creature +HKFunc_ToggleNoLargeCreature=CTRL+L +; Toggle Floating creature flag +HKFunc_ToggleFloat=CTRL+ALT+F +; Toggle preferred or create ledge portal +HKFunc_TogglePreferredOrCreateLedgePortal=P +; Toggle single cell view mode +HKFunc_ToggleSingleCellViewMode=N +; Sets current cell as active cell. +HKFunc_SetCurrentCell=CTRL+N +; Toggle triangles selectable +HKFunc_ToggleTrianglesSelectable=T +; Toggle vertices selectable +HKFunc_ToggleVerticesSelectable=V +; Toggle water +HKFunc_ToggleWater=O +; Import Object Navmeshes +HKFunc_ImportObjectNavmeshes=CTRL+ALT+I +; Toggle Negative Navmesh Display +HKFunc_ShowNavCutters=SHIFT+CTRL+N +; Flag Water Triangles +HKFunc_FlagWaterTris=CTRL+ALT+W +; Generate waypoints for selection +HKFunc_GenerateWaypointsForSelection=SHIFT+CTRL+G +; Clear waypoints for selection +HKFunc_ClearWaypointsForSelection=SHIFT+CTRL+C +; Create Precut for selection +HKFunc_CreatePrecutsForSelection=C +; Link Precut for selection +HKFunc_LinkPrecutsForSelection=L +; Clear Precut for selection +HKFunc_ClearPrecutsForSelection=ALT+L + +[Fallout4] +; Thin frame and forbidding the cursor to leave the display +WindowPatch=false + +; Changing setting threads game +ThreadingPatch=false + +; Replace Bethesda's memory allocator with TBBMalloc +MemoryPatch=false + +; Re-enable achievements while mods are active +AchievementsPatch=false \ No newline at end of file diff --git a/[Depends]/UnicodePlugin/CreationKitUnicodePlugin/x86_64/UnicodePlugin.compiled b/[Depends]/UnicodePlugin/CreationKitUnicodePlugin/x86_64/UnicodePlugin.compiled new file mode 100644 index 00000000..8b475cf2 --- /dev/null +++ b/[Depends]/UnicodePlugin/CreationKitUnicodePlugin/x86_64/UnicodePlugin.compiled @@ -0,0 +1,5 @@ + + + + + diff --git a/[Depends]/UnicodePlugin/CreationKitUnicodePlugin/x86_64/UnicodePlugin.res b/[Depends]/UnicodePlugin/CreationKitUnicodePlugin/x86_64/UnicodePlugin.res new file mode 100644 index 00000000..16e04f16 Binary files /dev/null and b/[Depends]/UnicodePlugin/CreationKitUnicodePlugin/x86_64/UnicodePlugin.res differ diff --git a/[Depends]/UnicodePlugin/UnicodePlugin.lpi b/[Depends]/UnicodePlugin/UnicodePlugin.lpi new file mode 100644 index 00000000..181ab8b8 --- /dev/null +++ b/[Depends]/UnicodePlugin/UnicodePlugin.lpi @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +