CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
ActiveEffect.h
Go to the documentation of this file.
1#pragma once
2
4#include "RE/B/BSContainer.h"
8#include "RE/B/BSTList.h"
9#include "RE/M/MagicSystem.h"
10#include "RE/N/NiSmartPointer.h"
11
12namespace RE
13{
14 class Actor;
15 class BGSLoadFormBuffer;
16 class BGSSaveFormBuffer;
17 class EffectSetting;
18 class MagicItem;
19 class MagicTarget;
20 class NiNode;
21 class NiPoint3;
22 class ReferenceEffect;
23 class TESBoundObject;
24 struct Effect;
25
27 {
28 public:
29 inline static constexpr auto RTTI = RTTI_ActiveEffect;
30 inline static constexpr auto VMTYPEID = static_cast<VMTypeID>(142);
31
33 {
34 public:
35 inline static constexpr auto RTTI = RTTI_ActiveEffect__ForEachHitEffectVisitor;
36
37 virtual ~ForEachHitEffectVisitor(); // 00
38
39 // add
40 virtual BSContainer::ForEachResult Visit(ReferenceEffect* a_hitEffect) = 0; // 01
41 };
42
43 enum class Flag
44 {
45 kHasConditions = 1 << 7,
46 kRecovers = 1 << 9,
47 kInactive = 1 << 15,
48 kDispelled = 1 << 18
49 };
50
51 enum class ConditionStatus
52 {
53 kNA = static_cast<std::underlying_type_t<ConditionStatus>>(-1),
54 kFalse = 0,
55 kTrue = 1,
56 };
57
58 // add
59 virtual void AdjustForPerks(Actor* a_caster, MagicTarget* a_target); // 00
60 virtual void OnAdd(MagicTarget* a_target); // 01
61 virtual void Unk_02(void); // 02 - { return; }
62 virtual TESObjectREFR* GetVisualsTarget(); // 03 - { return target ? target->GetTargetStatsObject() : 0; }
63 virtual void Update(float a_delta); // 04 - { return; }
64 virtual void EvaluateConditions(float a_delta, bool a_forceUpdate); // 05
65 virtual bool IsCausingHealthDamage(); // 06 - { return 0; }
66 virtual void SetLocation(const NiPoint3& a_location); // 07 - { return; }
67 virtual void LoadGame(BGSSaveFormBuffer* a_buf); // 08
68 virtual void SaveGame(BGSLoadFormBuffer* a_buf); // 09
69 virtual void FinishLoadGame(BGSLoadFormBuffer* a_buf); // 0A
70 virtual void Revert(BGSLoadFormBuffer* a_buf); // 0B - { castingSource = 4; }
71 virtual std::int32_t Compare(ActiveEffect* a_otherEffect); // 0C
72 virtual void HandleEvent(const BSFixedString& a_eventName); // 0D - { return; }
73 virtual void SwitchAttachedRoot(std::uint64_t a_arg2, NiNode* a_attachRoot); // 0E - { return; }
74 virtual void Unk_0F(void); // 0F - { return; }
75 virtual bool ShouldDispelOnDeath() const; // 10 - { return effect->baseEffect->data.flags.any(EffectSetting::EffectSettingData::Flag::kNoDeathDispel); }
76 virtual bool GetAllowMultipleCastingSourceStacking(); // 11 - { return 0; }
77 virtual void ClearTargetImpl(); // 12 - { return; }
78
79 virtual ~ActiveEffect(); // 13
80
81 virtual void Start(); // 14 - { return; }
82 virtual void Finish(); // 15 - { return; }
83 virtual void Unk_16(void); // 16
84 virtual bool CheckCustomSkillUseConditions() const; // 17 - { return 1; }
85 virtual float GetCustomSkillUseMagnitudeMultiplier(float a_mult) const; // 18 - { return 1.0; }
86
87 void Dispel(bool a_force);
88 [[nodiscard]] EffectSetting* GetBaseObject() noexcept;
89 [[nodiscard]] const EffectSetting* GetBaseObject() const noexcept;
92 const Actor* GetTargetActor() const;
93
99 Effect* effect; // 48
104 float elapsedSeconds; // 70
105 float duration; // 74
106 float magnitude; // 78
107 stl::enumeration<Flag, std::uint32_t> flags; // 7C
108 stl::enumeration<ConditionStatus, std::uint32_t> conditionStatus; // 80
109 std::uint16_t usUniqueID; // 84
110 std::uint16_t pad86; // 86
111 MagicSystem::CastingSource castingSource; // 88
112 std::uint32_t pad8C; // 8C
113 };
114 static_assert(sizeof(ActiveEffect) == 0x90);
115}
Definition: ActiveEffect.h:33
virtual BSContainer::ForEachResult Visit(ReferenceEffect *a_hitEffect)=0
static constexpr auto RTTI
Definition: ActiveEffect.h:35
Definition: ActiveEffect.h:27
virtual void EvaluateConditions(float a_delta, bool a_forceUpdate)
float elapsedSeconds
Definition: ActiveEffect.h:104
static constexpr auto VMTYPEID
Definition: ActiveEffect.h:30
virtual void ClearTargetImpl()
virtual bool IsCausingHealthDamage()
Actor * GetTargetActor()
MagicItem * spell
Definition: ActiveEffect.h:98
ConditionStatus
Definition: ActiveEffect.h:52
BSSoundHandle persistentSound
Definition: ActiveEffect.h:95
virtual void SwitchAttachedRoot(std::uint64_t a_arg2, NiNode *a_attachRoot)
std::uint16_t usUniqueID
Definition: ActiveEffect.h:109
static constexpr auto RTTI
Definition: ActiveEffect.h:29
NiPointer< NiNode > sourceNode
Definition: ActiveEffect.h:97
ActiveEffectReferenceEffectController hitEffectController
Definition: ActiveEffect.h:94
virtual void AdjustForPerks(Actor *a_caster, MagicTarget *a_target)
virtual void OnAdd(MagicTarget *a_target)
virtual void Unk_16(void)
virtual ~ActiveEffect()
virtual void Finish()
virtual bool GetAllowMultipleCastingSourceStacking()
void Dispel(bool a_force)
MagicTarget * target
Definition: ActiveEffect.h:100
virtual void Unk_0F(void)
std::uint32_t pad8C
Definition: ActiveEffect.h:112
stl::enumeration< Flag, std::uint32_t > flags
Definition: ActiveEffect.h:107
NiPointer< Actor > GetCasterActor() const
Effect * effect
Definition: ActiveEffect.h:99
stl::enumeration< ConditionStatus, std::uint32_t > conditionStatus
Definition: ActiveEffect.h:108
std::uint16_t pad86
Definition: ActiveEffect.h:110
virtual void Unk_02(void)
virtual void LoadGame(BGSSaveFormBuffer *a_buf)
virtual TESObjectREFR * GetVisualsTarget()
Flag
Definition: ActiveEffect.h:44
float duration
Definition: ActiveEffect.h:105
virtual bool ShouldDispelOnDeath() const
virtual std::int32_t Compare(ActiveEffect *a_otherEffect)
BSSimpleList< ReferenceEffect * > * hitEffects
Definition: ActiveEffect.h:102
virtual float GetCustomSkillUseMagnitudeMultiplier(float a_mult) const
virtual void SaveGame(BGSLoadFormBuffer *a_buf)
virtual void Revert(BGSLoadFormBuffer *a_buf)
MagicItem * displacementSpell
Definition: ActiveEffect.h:103
float magnitude
Definition: ActiveEffect.h:106
virtual void Update(float a_delta)
MagicSystem::CastingSource castingSource
Definition: ActiveEffect.h:111
ActorHandle caster
Definition: ActiveEffect.h:96
EffectSetting * GetBaseObject() noexcept
TESBoundObject * source
Definition: ActiveEffect.h:101
virtual void FinishLoadGame(BGSLoadFormBuffer *a_buf)
virtual bool CheckCustomSkillUseConditions() const
virtual void Start()
virtual void SetLocation(const NiPoint3 &a_location)
virtual void HandleEvent(const BSFixedString &a_eventName)
Definition: ActiveEffectReferenceEffectController.h:12
Definition: Actor.h:127
Definition: BSTList.h:10
Definition: EffectSetting.h:24
Definition: MagicItem.h:27
Definition: MagicTarget.h:23
Definition: NiNode.h:12
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: ReferenceEffect.h:12
Definition: TESBoundObject.h:24
Definition: TESObjectREFR.h:110
ForEachResult
Definition: BSContainer.h:6
Definition: AbsorbEffect.h:6
std::uint32_t VMTypeID
Definition: BSCoreTypes.h:9
constexpr REL::ID RTTI_ActiveEffect(static_cast< std::uint64_t >(514042))
constexpr REL::ID RTTI_ActiveEffect__ForEachHitEffectVisitor(static_cast< std::uint64_t >(686475))
Definition: PCH.h:74
Definition: EffectArchetypes.h:65
Definition: BSSoundHandle.h:10
Definition: Effect.h:11