CommonLibVR
TESShout.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BGSEquipType.h"
5 #include "RE/F/FormTypes.h"
6 #include "RE/T/TESDescription.h"
7 #include "RE/T/TESForm.h"
8 #include "RE/T/TESFullName.h"
9 
10 namespace RE
11 {
12  class TESShout :
13  public TESForm, // 00
14  public TESFullName, // 20
15  public BGSMenuDisplayObject, // 30
16  public BGSEquipType, // 40
17  public TESDescription // 50
18  {
19  public:
20  inline static constexpr auto RTTI = RTTI_TESShout;
21  inline static constexpr auto VTABLE = VTABLE_TESShout;
22  inline static constexpr auto FORMTYPE = FormType::Shout;
23 
24  struct RecordFlags
25  {
26  enum RecordFlag : std::uint32_t
27  {
28  kDeleted = 1 << 5,
30  kIgnored = 1 << 12
31  };
32  };
33 
34  struct Variation // SNAM
35  {
37  SpellItem* spell; // 08
38  float recoveryTime; // 10
39  std::uint32_t pad14; // 14
40  };
41  static_assert(sizeof(Variation) == 0x18);
42 
43  struct VariationIDs
44  {
45  enum VariationID : std::uint32_t
46  {
47  kNone = static_cast<std::underlying_type_t<VariationID>>(-1),
48  kOne = 0,
49  kTwo,
50  kThree,
51 
52  kTotal
53  };
54  };
56 
57  ~TESShout() override; // 00
58 
59  // override (TESForm)
60  bool Load(TESFile* a_mod) override; // 06
61  void InitItemImpl() override; // 13
62  bool GetKnown() const override; // 17
63 
64  // override (BGSEquipType)
65  BGSEquipSlot* GetEquipSlot() const override; // 04
66  void SetEquipSlot(BGSEquipSlot* a_slot) override; // 05 - { return; }
67 
68  // members
69  Variation variations[VariationIDs::kTotal]; // 60 - SNAM
70  private:
71  KEEP_FOR_RE()
72  };
73  static_assert(sizeof(TESShout) == 0xA8);
74 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BGSEquipSlot.h:10
Definition: BGSEquipType.h:9
Definition: BGSMenuDisplayObject.h:10
Definition: SpellItem.h:16
Definition: TESDescription.h:12
Definition: TESFile.h:17
Definition: TESForm.h:40
Definition: TESFullName.h:9
Definition: TESShout.h:18
bool GetKnown() const override
~TESShout() override
bool Load(TESFile *a_mod) override
void InitItemImpl() override
void SetEquipSlot(BGSEquipSlot *a_slot) override
BGSEquipSlot * GetEquipSlot() const override
static constexpr auto FORMTYPE
Definition: TESShout.h:22
static constexpr auto RTTI
Definition: TESShout.h:20
Variation variations[VariationIDs::kTotal]
Definition: TESShout.h:69
static constexpr auto VTABLE
Definition: TESShout.h:21
Definition: TESWordOfPower.h:13
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 5 > VTABLE_TESShout
Definition: Offsets_VTABLE.h:12900
@ kNone
Definition: PlayerCharacter.h:85
constexpr REL::ID RTTI_TESShout(static_cast< std::uint64_t >(513956))
Definition: TESShout.h:25
RecordFlag
Definition: TESShout.h:27
@ kDeleted
Definition: TESShout.h:28
@ kTreatSpellsAsPowers
Definition: TESShout.h:29
@ kIgnored
Definition: TESShout.h:30
Definition: TESShout.h:44
VariationID
Definition: TESShout.h:46
Definition: TESShout.h:35
std::uint32_t pad14
Definition: TESShout.h:39
float recoveryTime
Definition: TESShout.h:38
TESWordOfPower * word
Definition: TESShout.h:36
SpellItem * spell
Definition: TESShout.h:37