Files
2026-05-30 18:33:24 +12:00

45 lines
1.2 KiB
C++

#pragma once
namespace RE
{
enum class SCRIPT_OUTPUT;
class ConditionCheckParams;
class TESConditionItem;
class TESCondition
{
public:
[[nodiscard]] explicit operator bool() const noexcept { return head != nullptr; }
[[nodiscard]] bool operator()(TESObjectREFR* a_actionRef, TESObjectREFR* a_targetRef) const
{
return IsTrue(a_actionRef, a_targetRef);
}
[[nodiscard]] bool IsTrue(TESObjectREFR* a_actionRef, TESObjectREFR* a_targetRef) const
{
using func_t = decltype(&TESCondition::IsTrue);
static REL::Relocation<func_t> func{ ID::TESCondition::IsTrue };
return func(this, a_actionRef, a_targetRef);
}
[[nodiscard]] bool IsTrueForAllButFunction(ConditionCheckParams& a_paramData, SCRIPT_OUTPUT a_function) const
{
using func_t = decltype(&TESCondition::IsTrueForAllButFunction);
static REL::Relocation<func_t> func{ ID::TESCondition::IsTrueForAllButFunction };
return func(this, a_paramData, a_function);
}
void ClearAllConditionItems() const
{
using func_t = decltype(&TESCondition::ClearAllConditionItems);
static REL::Relocation<func_t> func{ ID::TESCondition::ClearAllConditionItems };
return func(this);
}
// members
TESConditionItem* head; // 0
};
static_assert(sizeof(TESCondition) == 0x8);
}