diff --git a/include/RE/A/Actor.h b/include/RE/A/Actor.h index 38017deb7..9f3b942cc 100644 --- a/include/RE/A/Actor.h +++ b/include/RE/A/Actor.h @@ -572,6 +572,7 @@ namespace RE bool IsCasting(MagicItem* a_spell) const; bool IsCommandedActor() const; bool IsCurrentShout(SpellItem* a_power); + bool IsDualCasting() const; bool IsEssential() const; bool IsFactionInCrimeGroup(const TESFaction* a_faction) const; bool IsGhost() const; diff --git a/src/RE/A/Actor.cpp b/src/RE/A/Actor.cpp index 858bb1176..65a9cbeef 100644 --- a/src/RE/A/Actor.cpp +++ b/src/RE/A/Actor.cpp @@ -741,14 +741,24 @@ namespace RE return boolFlags.all(BOOL_FLAGS::kIsCommandedActor); } - bool Actor::IsCurrentShout(SpellItem* a_spell) + bool Actor::IsCurrentShout(SpellItem* a_power) { using func_t = decltype(&Actor::IsCurrentShout); REL::Relocation func{ RELOCATION_ID(37858, 38812) }; - return func(this, a_spell); + return func(this, a_power); + } + + bool Actor::IsDualCasting() const + { + if (!currentProcess) { + return false; + } + + const auto highProcess = currentProcess->high; + return highProcess && highProcess->isDualCasting; } - bool Actor::IsEssential() const + bool Actor::IsEssential() const { return boolFlags.all(BOOL_FLAGS::kEssential); }