CommonLibSSE (powerof3)
TESLeveledList.h
Go to the documentation of this file.
1 #pragma once
2 
5 #include "RE/F/FormTypes.h"
6 #include "RE/M/MemoryManager.h"
7 
8 namespace RE
9 {
10  class TESFaction;
11  class TESForm;
12  class TESGlobal;
13 
15  {
16  public:
17  // members
18  TESForm* form; // 00 - LVLO~
19  std::uint16_t count; // 08
20  std::uint16_t level; // 0A - ~LVLO
21  std::uint32_t pad0C; // 0C
23  };
24  static_assert(sizeof(LEVELED_OBJECT) == 0x18);
25 
27  {
28  public:
29  inline static constexpr auto RTTI = RTTI_TESLeveledList;
30 
31  enum Flag : std::uint8_t // LVLF
32  {
35  kUseAll = 1 << 2,
36  kSpecialLoot = 1 << 3
37  };
38 
39  ~TESLeveledList() override; // 00
40 
41  // override (BaseFormComponent)
42  void InitializeDataComponent() override; // 01
43  void ClearDataComponent() override; // 02
44  void CopyComponent(BaseFormComponent* a_rhs) override; // 03
45 
46  // add
47  virtual std::uint8_t GetChanceNone(); // 04 - { if (global) return global->value; else return chanceNone; }
48  virtual bool GetMultCalc(); // 05 - { return (flags >> 1) & 1; }
49  virtual std::int32_t GetLevDifferenceMax(); // 06 - { return 0; }
50  [[nodiscard]] virtual bool GetCanContainFormsOfType(FormType a_type) const = 0; // 07
51 
52  [[nodiscard]] std::vector<TESForm*> GetContainedForms() const;
53 
54  // members
56  std::int8_t chanceNone; // 10 - LVLD
57  Flag llFlags; // 11 - LVLF
58  std::uint8_t numEntries; // 12 - LLCT
59  std::uint8_t unk13; // 13
60  std::uint32_t pad14; // 14
61  void* unk18; // 18
62  TESGlobal* chanceGlobal; // 20 - LVLG
63  };
64  static_assert(sizeof(TESLeveledList) == 0x28);
65 }
Definition: BaseFormComponent.h:8
Definition: MemoryManager.h:240
Definition: TESForm.h:34
Definition: TESGlobal.h:10
Definition: TESLeveledList.h:27
SimpleArray< LEVELED_OBJECT > entries
Definition: TESLeveledList.h:55
void CopyComponent(BaseFormComponent *a_rhs) override
std::uint32_t pad14
Definition: TESLeveledList.h:60
std::vector< TESForm * > GetContainedForms() const
Flag
Definition: TESLeveledList.h:32
@ kSpecialLoot
Definition: TESLeveledList.h:36
@ kCalculateFromAllLevelsLTOrEqPCLevel
Definition: TESLeveledList.h:33
@ kUseAll
Definition: TESLeveledList.h:35
@ kCalculateForEachItemInCount
Definition: TESLeveledList.h:34
~TESLeveledList() override
std::uint8_t numEntries
Definition: TESLeveledList.h:58
virtual bool GetMultCalc()
void * unk18
Definition: TESLeveledList.h:61
std::int8_t chanceNone
Definition: TESLeveledList.h:56
virtual std::uint8_t GetChanceNone()
virtual bool GetCanContainFormsOfType(FormType a_type) const =0
void ClearDataComponent() override
Flag llFlags
Definition: TESLeveledList.h:57
std::uint8_t unk13
Definition: TESLeveledList.h:59
void InitializeDataComponent() override
static constexpr auto RTTI
Definition: TESLeveledList.h:29
TESGlobal * chanceGlobal
Definition: TESLeveledList.h:62
virtual std::int32_t GetLevDifferenceMax()
Definition: AbsorbEffect.h:6
FormType
Definition: FormTypes.h:139
constexpr REL::ID RTTI_TESLeveledList
Definition: Offsets_RTTI.h:6013
Definition: ContainerItemExtra.h:9
Definition: TESLeveledList.h:15
std::uint16_t level
Definition: TESLeveledList.h:20
std::uint16_t count
Definition: TESLeveledList.h:19
ContainerItemExtra * itemExtra
Definition: TESLeveledList.h:22
TESForm * form
Definition: TESLeveledList.h:18
std::uint32_t pad0C
Definition: TESLeveledList.h:21