Files
2026-05-30 18:33:24 +12:00

93 lines
3.6 KiB
C++

#pragma once
#include "RE/B/BGSAttachParentArray.h"
#include "RE/B/BGSBipedObjectForm.h"
#include "RE/B/BGSBlockBashData.h"
#include "RE/B/BGSDestructibleObjectForm.h"
#include "RE/B/BGSEquipType.h"
#include "RE/B/BGSInstanceNamingRulesForm.h"
#include "RE/B/BGSKeywordForm.h"
#include "RE/B/BGSPickupPutdownSounds.h"
#include "RE/B/BGSTypedFormValuePair.h"
#include "RE/B/BSTArray.h"
#include "RE/B/BSTTuple.h"
#include "RE/T/TESBipedModelForm.h"
#include "RE/T/TESBoundObject.h"
#include "RE/T/TESDescription.h"
#include "RE/T/TESEnchantableForm.h"
#include "RE/T/TESFullName.h"
#include "RE/T/TESRaceForm.h"
namespace RE
{
enum class STAGGER_MAGNITUDE;
class __declspec(novtable) TESObjectARMO :
public TESBoundObject, // 000
public TESFullName, // 068
public TESRaceForm, // 078
public TESEnchantableForm, // 088
public BGSDestructibleObjectForm, // 0A0
public BGSPickupPutdownSounds, // 0B0
public TESBipedModelForm, // 0C8
public BGSEquipType, // 1D0
public BGSBipedObjectForm, // 1E0
public BGSBlockBashData, // 1F0
public BGSKeywordForm, // 208
public TESDescription, // 228
public BGSInstanceNamingRulesForm // 240
{
public:
static constexpr auto RTTI{ RTTI::TESObjectARMO };
static constexpr auto VTABLE{ VTABLE::TESObjectARMO };
static constexpr auto FORM_ID{ ENUM_FORM_ID::kARMO };
class __declspec(novtable) InstanceData :
public TBO_InstanceData // 00
{
public:
static constexpr auto RTTI{ RTTI::TESObjectARMO__InstanceData };
static constexpr auto VTABLE{ VTABLE::TESObjectARMO__InstanceData };
// members
BSTArray<EnchantmentItem*>* enchantments; // 10
BSTArray<BGSMaterialSwap*>* materialSwaps; // 18
BGSBlockBashData* blockBashData; // 20
BGSKeywordForm* keywords; // 28
BSTArray<BSTTuple<TESForm*, BGSTypedFormValuePair::SharedVal>>* damageTypes; // 30
BSTArray<BSTTuple<TESForm*, BGSTypedFormValuePair::SharedVal>>* actorValues; // 38
float weight; // 40
float colorRemappingIndex; // 44
std::uint32_t value; // 48
std::uint32_t health; // 4C
REX::TEnumSet<STAGGER_MAGNITUDE, std::int32_t> staggerRating; // 50
std::uint16_t rating; // 54
std::uint16_t index; // 56
};
static_assert(sizeof(InstanceData) == 0x58);
class ArmorAddon
{
public:
// members
std::uint16_t index; // 00
TESObjectARMA* armorAddon; // 08
};
static_assert(sizeof(ArmorAddon) == 0x10);
bool Protects(const ActorValueInfo* a_condition, bool a_only)
{
using func_t = decltype(&TESObjectARMO::Protects);
static REL::Relocation<func_t> func{ ID::TESObjectARMO::Protects };
return func(this, a_condition, a_only);
}
// members
InstanceData armorData; // 250
BSTArray<ArmorAddon> modelArray; // 2A8
TESObjectARMO* armorTemplate; // 2C0
BGSAttachParentArray attachParents; // 2C8
};
static_assert(sizeof(TESObjectARMO) == 0x2E0);
}