docs: add plugin setup guide
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BGSTypedFormValuePair.h"
|
||||
#include "RE/B/BSTArray.h"
|
||||
#include "RE/B/BSTTuple.h"
|
||||
#include "RE/B/BaseFormComponent.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
enum class ENUM_FORM_ID;
|
||||
class CALCED_OBJECT;
|
||||
class ContainerItemExtra;
|
||||
class LEVELED_OBJECT;
|
||||
class INSTANCE_FILTER;
|
||||
|
||||
class __declspec(novtable) TESLeveledList :
|
||||
public BaseFormComponent // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::TESLeveledList };
|
||||
static constexpr auto VTABLE{ VTABLE::TESLeveledList };
|
||||
|
||||
enum class LeveledListAllBelowForce
|
||||
{
|
||||
kNever = -1,
|
||||
kDefault = 0,
|
||||
kAlways = 1,
|
||||
kShiftUp = 2,
|
||||
};
|
||||
|
||||
// add
|
||||
virtual std::int8_t GetChanceNone(); // 07
|
||||
virtual bool GetMultCalc(); // 08
|
||||
virtual std::int32_t GetMaxLevelDifference() { return 0; } // 09
|
||||
virtual const char* GetOverrideName() { return nullptr; } // 0A
|
||||
virtual bool GetCanContainFormsOfType(ENUM_FORM_ID a_type) const = 0; // 0B
|
||||
|
||||
LEVELED_OBJECT* AddLeveledObject(std::uint16_t a_level, std::uint16_t a_count, std::int8_t a_chanceNone, TESForm* a_item, ContainerItemExtra* a_itemExtra)
|
||||
{
|
||||
using func_t = decltype(&TESLeveledList::AddLeveledObject);
|
||||
static REL::Relocation<func_t> func{ ID::TESLeveledList::AddLeveledObject };
|
||||
return func(this, a_level, a_count, a_chanceNone, a_item, a_itemExtra);
|
||||
}
|
||||
|
||||
void CalculateCurrentFormList(
|
||||
std::uint16_t a_level,
|
||||
std::uint16_t a_count,
|
||||
BSScrapArray<CALCED_OBJECT>& a_outCont,
|
||||
LeveledListAllBelowForce a_allBelowForce = LeveledListAllBelowForce::kDefault,
|
||||
bool a_clampToPlayer = false,
|
||||
INSTANCE_FILTER* a_instanceFilter = nullptr,
|
||||
const char* a_overrideName = nullptr)
|
||||
{
|
||||
using func_t = decltype(&TESLeveledList::CalculateCurrentFormList);
|
||||
static REL::Relocation<func_t> func{ ID::TESLeveledList::CalculateCurrentFormList };
|
||||
return func(this, a_level, a_count, a_outCont, a_allBelowForce, a_clampToPlayer, a_instanceFilter, a_overrideName);
|
||||
}
|
||||
|
||||
void CalculateCurrentFormListForRef(TESObjectREFR* a_ref, BSScrapArray<CALCED_OBJECT>& a_outCont, bool a_legendary)
|
||||
{
|
||||
using func_t = decltype(&TESLeveledList::CalculateCurrentFormListForRef);
|
||||
static REL::Relocation<func_t> func{ ID::TESLeveledList::CalculateCurrentFormListForRef };
|
||||
return func(this, a_ref, a_outCont, a_legendary);
|
||||
}
|
||||
|
||||
bool GetUseAll()
|
||||
{
|
||||
using func_t = decltype(&TESLeveledList::GetUseAll);
|
||||
static REL::Relocation<func_t> func{ ID::TESLeveledList::GetUseAll };
|
||||
return func(this);
|
||||
}
|
||||
|
||||
// members
|
||||
TESGlobal* chanceGlobal; // 08
|
||||
BSTArray<BSTTuple<TESForm*, BGSTypedFormValuePair::SharedVal>>* keywordChances; // 10
|
||||
LEVELED_OBJECT* leveledLists; // 18
|
||||
LEVELED_OBJECT** scriptAddedLists; // 20
|
||||
std::int8_t scriptListCount; // 28
|
||||
std::int8_t baseListCount; // 29
|
||||
std::int8_t chanceNone; // 2A
|
||||
std::int8_t llFlags; // 2B
|
||||
std::int8_t maxUseAllCount; // 2C
|
||||
};
|
||||
static_assert(sizeof(TESLeveledList) == 0x30);
|
||||
}
|
||||
Reference in New Issue
Block a user