Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/M/MagicTarget.h
T
2026-05-30 18:33:24 +12:00

53 lines
3.2 KiB
C++

#pragma once
namespace RE
{
class ActiveEffectList;
class __declspec(novtable) MagicTarget
{
public:
static constexpr auto RTTI{ RTTI::MagicTarget };
static constexpr auto VTABLE{ VTABLE::MagicTarget };
class AddTargetData;
class SpellDispelData;
// members
virtual ~MagicTarget(); // 00
// add
virtual bool AddTarget(AddTargetData& a_data); // 01
virtual TESObjectREFR* GetTargetStatsObject() { return nullptr; } // 02
virtual bool MagicTargetIsActor() { return false; } // 03
virtual bool IsInvulnerable() const { return false; } // 04
virtual void InvalidateCommandedActorEffect([[maybe_unused]] ActiveEffect* a_effect) { return; } // 05
virtual bool CanAddActiveEffect() const = 0; // 06
virtual ActiveEffectList* GetActiveEffectList() = 0; // 07
virtual float CheckResistance([[maybe_unused]] MagicItem* a_spell, [[maybe_unused]] EffectItem* a_effect, [[maybe_unused]] TESBoundObject* a_source) const { return 1.0F; } // 08
virtual void EffectAdded([[maybe_unused]] ActiveEffect* a_effect) { return; } // 09
virtual void EffectRemoved([[maybe_unused]] ActiveEffect* a_effect) { return; } // 0A
virtual void EffectActiveStatusChanged([[maybe_unused]] ActiveEffect* a_effect) { return; } // 0B
virtual bool CheckAbsorb([[maybe_unused]] Actor* a_caster, [[maybe_unused]] MagicItem* a_spell, [[maybe_unused]] const EffectItem* a_effectItem) { return false; } // 0C
[[nodiscard]] bool IsTakingHealthDamageFromActiveEffect()
{
using func_t = decltype(&MagicTarget::IsTakingHealthDamageFromActiveEffect);
static REL::Relocation<func_t> func{ ID::MagicTarget::IsTakingHealthDamageFromActiveEffect };
return func(this);
}
[[nodiscard]] bool IsTakingRadDamageFromActiveEffect()
{
using func_t = decltype(&MagicTarget::IsTakingRadDamageFromActiveEffect);
static REL::Relocation<func_t> func{ ID::MagicTarget::IsTakingRadDamageFromActiveEffect };
return func(this);
}
// members
SpellDispelData* postUpdateDispelList; // 08
std::int8_t flags; // 10
};
static_assert(sizeof(MagicTarget) == 0x18);
}