CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
MagicTarget.h
Go to the documentation of this file.
1#pragma once
2
4#include "RE/B/BSTList.h"
7#include "RE/M/MagicSystem.h"
8#include "RE/N/NiPoint3.h"
9
10namespace RE
11{
12 class Actor;
13 class ActiveEffect;
14 class EffectItem;
15 class EffectSetting;
16 class MagicItem;
17 class TESBoundObject;
18 class TESObjectREFR;
19
20 struct Effect;
21
23 {
24 public:
25 inline static constexpr auto RTTI = RTTI_MagicTarget;
26
28
30 {
31 public:
32 inline static constexpr auto RTTI = RTTI_MagicTarget__ForEachActiveEffectVisitor;
33
35
36 // add
37 virtual bool Accept(ActiveEffect* a_effect) = 0; // 01
38 };
39 static_assert(sizeof(ForEachActiveEffectVisitor) == 0x8);
40
42 {
45 std::uint32_t pad0C; // 0C
48 };
49 static_assert(sizeof(SpellDispelData) == 0x20);
50
52 {
55 Effect* effect; // 10
57 std::uint64_t unk20; // 20 - MagicCaster::PostCreationCallback
58 std::uint64_t unk28; // 28 - MagicTarget**
60 float magnitude; // 3C
61 float unk40; // 40
63 std::uint8_t unk48; // 48
64 bool dualCasted; // 49
65 std::uint16_t pad4A; // 4A
66 std::uint32_t pad4C; // 4C
67 };
68 static_assert(sizeof(AddTargetData) == 0x50);
69
70 virtual ~MagicTarget(); // 00
71
72 // add
73 virtual bool AddTarget(AddTargetData& a_targetData); // 01
74 virtual TESObjectREFR* GetTargetStatsObject(); // 02 - { return false; }
75 [[nodiscard]] virtual bool MagicTargetIsActor() const; // 03 - { return false; }
76 virtual bool IsInvulnerable(); // 04 - { return false; }
77 virtual void InvalidateCommandedActorEffect(ActiveEffect* a_effect); // 05 - { return; }
78 virtual bool CanAddActiveEffect() = 0; // 06
80 virtual void EffectAdded(ActiveEffect* a_effect); // 08 - { return; }
81 virtual void EffectRemoved(ActiveEffect* a_effect); // 09 - { return; }
82 virtual float CheckResistance(MagicItem* a_magicItem, Effect* a_effect, TESBoundObject* a_object); // 0A - { return 1.0; }
83 virtual bool CheckAbsorb(Actor* a_actor, MagicItem* a_magicItem, const Effect* a_effect); // 0B - { return false; }
84
85 bool DispelEffect(MagicItem* a_spell, BSPointerHandle<Actor>& a_caster, ActiveEffect* a_effect = nullptr);
86 void DispelEffectsWithArchetype(Archetype a_type, bool a_force);
89
90 // members
92 std::uint8_t flags; // 10
93 std::uint8_t pad11; // 11
94 std::uint16_t pad12; // 12
95 std::uint32_t pad14; // 14
96 };
97 static_assert(sizeof(MagicTarget) == 0x18);
98}
Definition: ActiveEffect.h:27
Definition: Actor.h:127
Definition: BSPointerHandle.h:91
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:32
Definition: MagicTarget.h:23
SpellDispelData * postUpdateDispelList
Definition: MagicTarget.h:91
virtual TESObjectREFR * GetTargetStatsObject()
virtual bool CanAddActiveEffect()=0
virtual float CheckResistance(MagicItem *a_magicItem, Effect *a_effect, TESBoundObject *a_object)
bool HasMagicEffect(EffectSetting *a_effect)
std::uint16_t pad12
Definition: MagicTarget.h:94
virtual void InvalidateCommandedActorEffect(ActiveEffect *a_effect)
virtual ~MagicTarget()
virtual bool CheckAbsorb(Actor *a_actor, MagicItem *a_magicItem, const Effect *a_effect)
std::uint8_t pad11
Definition: MagicTarget.h:93
bool DispelEffect(MagicItem *a_spell, BSPointerHandle< Actor > &a_caster, ActiveEffect *a_effect=nullptr)
virtual bool AddTarget(AddTargetData &a_targetData)
bool HasEffectWithArchetype(Archetype a_type)
virtual bool IsInvulnerable()
void DispelEffectsWithArchetype(Archetype a_type, bool a_force)
virtual BSSimpleList< ActiveEffect * > * GetActiveEffectList()=0
virtual bool MagicTargetIsActor() const
std::uint32_t pad14
Definition: MagicTarget.h:95
std::uint8_t flags
Definition: MagicTarget.h:92
virtual void EffectRemoved(ActiveEffect *a_effect)
virtual void EffectAdded(ActiveEffect *a_effect)
static constexpr auto RTTI
Definition: MagicTarget.h:25
Definition: NiPoint3.h:6
Definition: TESBoundObject.h:24
Definition: TESObjectREFR.h:110
CastingSource
Definition: MagicSystem.h:21
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_MagicTarget__ForEachActiveEffectVisitor(static_cast< std::uint64_t >(685330))
constexpr REL::ID RTTI_MagicTarget(static_cast< std::uint64_t >(513884))
ArchetypeID
Definition: EffectArchetypes.h:8
Definition: Effect.h:11
Definition: MagicTarget.h:52
MagicSystem::CastingSource castingSource
Definition: MagicTarget.h:62
TESBoundObject * source
Definition: MagicTarget.h:56
MagicItem * magicItem
Definition: MagicTarget.h:54
std::uint16_t pad4A
Definition: MagicTarget.h:65
float magnitude
Definition: MagicTarget.h:60
Effect * effect
Definition: MagicTarget.h:55
std::uint8_t unk48
Definition: MagicTarget.h:63
TESObjectREFR * caster
Definition: MagicTarget.h:53
bool dualCasted
Definition: MagicTarget.h:64
std::uint64_t unk20
Definition: MagicTarget.h:57
NiPoint3 explosionPoint
Definition: MagicTarget.h:59
float unk40
Definition: MagicTarget.h:61
std::uint64_t unk28
Definition: MagicTarget.h:58
std::uint32_t pad4C
Definition: MagicTarget.h:66
Definition: MagicTarget.h:42
std::uint32_t pad0C
Definition: MagicTarget.h:45
SpellDispelData * next
Definition: MagicTarget.h:47
MagicItem * spell
Definition: MagicTarget.h:43
BSPointerHandle< Actor > caster
Definition: MagicTarget.h:44
BSTSmartPointer< ActiveEffect > activeEffect
Definition: MagicTarget.h:46