CommonLibSSE NG
TESObjectARMO.h
Go to the documentation of this file.
1 #pragma once
2 
6 #include "RE/B/BGSEquipType.h"
7 #include "RE/B/BGSKeywordForm.h"
9 #include "RE/B/BSTArray.h"
10 #include "RE/F/FormTypes.h"
11 #include "RE/T/TESBipedModelForm.h"
12 #include "RE/T/TESBoundObject.h"
13 #include "RE/T/TESDescription.h"
15 #include "RE/T/TESFullName.h"
16 #include "RE/T/TESRaceForm.h"
17 #include "RE/T/TESValueForm.h"
18 #include "RE/T/TESWeightForm.h"
19 
20 namespace RE
21 {
22  class TESObjectARMO :
23  public TESBoundObject, // 000
24  public TESFullName, // 030
25  public TESRaceForm, // 040
26  public TESEnchantableForm, // 050
27  public TESValueForm, // 068
28  public TESWeightForm, // 078
29  public BGSDestructibleObjectForm, // 088
30  public BGSPickupPutdownSounds, // 098
31  public TESBipedModelForm, // 0B0
32  public BGSEquipType, // 1A0
33  public BGSBipedObjectForm, // 1B0
34  public BGSBlockBashData, // 1C0
35  public BGSKeywordForm, // 1D8
36  public TESDescription // 1F0
37  {
38  public:
39  inline static constexpr auto RTTI = RTTI_TESObjectARMO;
40  inline static constexpr auto VTABLE = VTABLE_TESObjectARMO;
41  inline static constexpr auto FORMTYPE = FormType::Armor;
42 
43  struct RecordFlags
44  {
45  enum RecordFlag : std::uint32_t
46  {
47  kNonPlayable = 1 << 2,
48  kDeleted = 1 << 5,
49  kShield = 1 << 6,
50  kIgnored = 1 << 12
51  };
52  };
53 
54  // override (TESBoundObject)
55  void InitializeData() override; // 04
56  bool Load(TESFile* a_mod) override; // 06
57  void SaveGame(BGSSaveFormBuffer* a_buf) override; // 0E
58  void LoadGame(BGSLoadFormBuffer* a_buf) override; // 0F
59  void InitItemImpl() override; // 13
60  TESFile* GetDescriptionOwnerFile() const override; // 14 - { return templateArmor ? templateArmor->GetFile(-1) : GetFile(-1); }
61  void Copy(TESForm* a_srcForm) override; // 2F
62 
63  // override (BGSKeywordForm)
64  [[nodiscard]] BGSKeyword* GetDefaultKeyword() const override; // 05
65 
66  [[nodiscard]] float GetArmorRating();
67  [[nodiscard]] TESObjectARMA* GetArmorAddon(TESRace* a_race);
68  [[nodiscard]] TESObjectARMA* GetArmorAddonByMask(TESRace* a_race, BipedObjectSlot a_slot);
69 
70  // members
71  std::uint32_t armorRating; // 200 - DNAM - CK value * 100 as a std::uint32_t
72  std::uint32_t pad204; // 204
74  TESObjectARMO* templateArmor; // 220 - TNAM
75  };
76  static_assert(sizeof(TESObjectARMO) == 0x228);
77 }
Definition: BGSBipedObjectForm.h:61
Definition: BGSBlockBashData.h:9
Definition: BGSDestructibleObjectForm.h:61
Definition: BGSEquipType.h:9
Definition: BGSKeywordForm.h:12
Definition: BGSKeyword.h:10
Definition: BGSLoadFormBuffer.h:11
Definition: BGSPickupPutdownSounds.h:10
Definition: BGSSaveFormBuffer.h:8
Definition: BSTArray.h:377
Definition: TESBipedModelForm.h:12
Definition: TESBoundObject.h:24
Definition: TESDescription.h:12
Definition: TESEnchantableForm.h:11
Definition: TESFile.h:17
Definition: TESForm.h:36
Definition: TESFullName.h:9
Definition: TESObjectARMA.h:28
Definition: TESObjectARMO.h:37
TESObjectARMA * GetArmorAddon(TESRace *a_race)
BSTArray< TESObjectARMA * > armorAddons
Definition: TESObjectARMO.h:73
void LoadGame(BGSLoadFormBuffer *a_buf) override
float GetArmorRating()
BGSKeyword * GetDefaultKeyword() const override
TESObjectARMA * GetArmorAddonByMask(TESRace *a_race, BipedObjectSlot a_slot)
std::uint32_t pad204
Definition: TESObjectARMO.h:72
TESObjectARMO * templateArmor
Definition: TESObjectARMO.h:74
void InitializeData() override
std::uint32_t armorRating
Definition: TESObjectARMO.h:71
TESFile * GetDescriptionOwnerFile() const override
static constexpr auto FORMTYPE
Definition: TESObjectARMO.h:41
static constexpr auto RTTI
Definition: TESObjectARMO.h:39
static constexpr auto VTABLE
Definition: TESObjectARMO.h:40
void SaveGame(BGSSaveFormBuffer *a_buf) override
bool Load(TESFile *a_mod) override
void Copy(TESForm *a_srcForm) override
void InitItemImpl() override
Definition: TESRaceForm.h:10
Definition: TESRace.h:146
Definition: TESValueForm.h:8
Definition: TESWeightForm.h:8
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_TESObjectARMO(513936, 392577, 0x1edb340)
constexpr std::array< REL::VariantID, 14 > VTABLE_TESObjectARMO
Definition: Offsets_VTABLE.h:533
BipedObjectSlot
Definition: BGSBipedObjectForm.h:11
Definition: TESObjectARMO.h:44
RecordFlag
Definition: TESObjectARMO.h:46
@ kNonPlayable
Definition: TESObjectARMO.h:47
@ kDeleted
Definition: TESObjectARMO.h:48
@ kIgnored
Definition: TESObjectARMO.h:50
@ kShield
Definition: TESObjectARMO.h:49