CommonLibSSE (powerof3)
MagicTarget.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSPointerHandle.h"
4 #include "RE/B/BSTList.h"
5 #include "RE/B/BSTSmartPointer.h"
7 
8 namespace RE
9 {
10  class Actor;
11  class ActiveEffect;
12  class EffectItem;
13  class EffectSetting;
14  class MagicItem;
15  class TESBoundObject;
16  class TESObjectREFR;
17 
19  {
20  public:
21  inline static constexpr auto RTTI = RTTI_MagicTarget;
22 
24 
26  {
27  public:
28  inline static constexpr auto RTTI = RTTI_MagicTarget__ForEachActiveEffectVisitor;
29 
30  virtual ~ForEachActiveEffectVisitor(); // 00
31 
32  // add
33  virtual bool Accept(ActiveEffect* a_effect) = 0; // 01
34  };
35  static_assert(sizeof(ForEachActiveEffectVisitor) == 0x8);
36 
38  {
39  MagicItem* spell; // 00
41  std::uint32_t pad0C; // 0C
44  };
45  static_assert(sizeof(SpellDispelData) == 0x20);
46 
47  virtual ~MagicTarget(); // 00
48 
49  // add
50  virtual void Unk_01(void); // 01
51  virtual TESObjectREFR* GetTargetStatsObject(); // 02 - { return false; }
52  [[nodiscard]] virtual bool MagicTargetIsActor() const; // 03 - { return false; }
53  virtual bool IsInvulnerable(); // 04 - { return false; }
54  virtual void InvalidateCommandedActorEffect(ActiveEffect* a_effect); // 05 - { return; }
55  virtual bool CanAddActiveEffect() = 0; // 06
57  virtual void Unk_08(void); // 08 - { return; }
58  virtual void Unk_09(void); // 09 - { return; }
59  virtual void CheckResistance(MagicItem* a_magicItem, EffectItem* a_effect, TESBoundObject* a_object); // 0A - { return 1.0; }
60  virtual void CheckAbsorb(Actor* a_actor, MagicItem* a_magicItem, const EffectItem* a_effect); // 0B - { return false; }
61 
62  void DispelEffectsWithArchetype(Archetype a_type, bool a_force);
64  bool HasMagicEffect(EffectSetting* a_effect);
65 
66  // members
68  std::uint8_t flags; // 10
69  std::uint8_t pad11; // 11
70  std::uint16_t pad12; // 12
71  std::uint32_t pad14; // 14
72  };
73  static_assert(sizeof(MagicTarget) == 0x18);
74 }
Definition: ActiveEffect.h:22
Definition: Actor.h:125
Definition: BSTList.h:10
Definition: BSTSmartPointer.h:37
Definition: EffectSetting.h:24
Definition: MagicItem.h:27
virtual bool Accept(ActiveEffect *a_effect)=0
static constexpr auto RTTI
Definition: MagicTarget.h:28
Definition: MagicTarget.h:19
SpellDispelData * postUpdateDispelList
Definition: MagicTarget.h:67
virtual bool CanAddActiveEffect()=0
bool HasMagicEffect(EffectSetting *a_effect)
std::uint16_t pad12
Definition: MagicTarget.h:70
virtual void CheckAbsorb(Actor *a_actor, MagicItem *a_magicItem, const EffectItem *a_effect)
virtual void InvalidateCommandedActorEffect(ActiveEffect *a_effect)
virtual BSSimpleList< ActiveEffect * > * GetActiveEffectList()=0
virtual TESObjectREFR * GetTargetStatsObject()
virtual void Unk_08(void)
virtual ~MagicTarget()
std::uint8_t pad11
Definition: MagicTarget.h:69
virtual void CheckResistance(MagicItem *a_magicItem, EffectItem *a_effect, TESBoundObject *a_object)
bool HasEffectWithArchetype(Archetype a_type)
virtual bool IsInvulnerable()
void DispelEffectsWithArchetype(Archetype a_type, bool a_force)
virtual void Unk_01(void)
virtual bool MagicTargetIsActor() const
virtual void Unk_09(void)
std::uint32_t pad14
Definition: MagicTarget.h:71
std::uint8_t flags
Definition: MagicTarget.h:68
static constexpr auto RTTI
Definition: MagicTarget.h:21
Definition: TESBoundObject.h:24
Definition: TESObjectREFR.h:103
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_MagicTarget
Definition: Offsets_RTTI.h:5136
constexpr REL::ID RTTI_MagicTarget__ForEachActiveEffectVisitor
Definition: Offsets_RTTI.h:5138
ArchetypeID
Definition: EffectArchetypes.h:8
Definition: MagicTarget.h:38
std::uint32_t pad0C
Definition: MagicTarget.h:41
SpellDispelData * next
Definition: MagicTarget.h:43
MagicItem * spell
Definition: MagicTarget.h:39
BSPointerHandle< Actor > caster
Definition: MagicTarget.h:40
BSTSmartPointer< ActiveEffect > activeEffect
Definition: MagicTarget.h:42