From dde7b246f89421d3711733d5597ec33d99c514ae Mon Sep 17 00:00:00 2001 From: Shawn Lei Date: Sat, 10 Jun 2023 17:42:37 +0800 Subject: [PATCH] Add isSprinting filter --- src/DynamicAnimationCasting.cpp | 4 ++++ src/DynamicAnimationCasting.h | 1 + src/Framework.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/src/DynamicAnimationCasting.cpp b/src/DynamicAnimationCasting.cpp index 1683e0a..7813ab9 100644 --- a/src/DynamicAnimationCasting.cpp +++ b/src/DynamicAnimationCasting.cpp @@ -132,6 +132,10 @@ bool Loki::AnimationCasting::CastTrigger::Invoke(const RE::Actor* a_caster) return false; } + if (isSprinting.has_value() && isSprinting.value() != actor->IsSprinting()) { + return false; + } + RE::ActorValueOwner* actorAV = actor->AsActorValueOwner(); if (!actorAV) { return false; diff --git a/src/DynamicAnimationCasting.h b/src/DynamicAnimationCasting.h index da27715..6f91d35 100644 --- a/src/DynamicAnimationCasting.h +++ b/src/DynamicAnimationCasting.h @@ -54,6 +54,7 @@ namespace Loki { RE::BGSKeyword* keyword = nullptr; std::optional isOnMount; std::optional isRunning; + std::optional isSprinting; std::optional isSneaking; WeaponTrigger weapons[2]; // right, left float chance = 1.0f; diff --git a/src/Framework.cpp b/src/Framework.cpp index f3faa88..7b7dd89 100644 --- a/src/Framework.cpp +++ b/src/Framework.cpp @@ -145,6 +145,7 @@ void Loki::DynamicAnimationCasting::ReadToml(std::filesystem::path path) { trigger.isOnMount = ParseOptionalBool(event["IsOnMount"]); trigger.isSneaking = ParseOptionalBool(event["IsSneaking"]); trigger.isRunning = ParseOptionalBool(event["IsRunning"]); + trigger.isSprinting = ParseOptionalBool(event["IsSprinting"]); trigger.weapons[0].formid = ParseFormID(event, "IsEquippedRightFormID", "WeaponEspName"); trigger.weapons[1].formid = ParseFormID(event, "IsEquippedLeftFormID", "WeaponEspName"); trigger.weapons[0].enchant = ParseFormID(event, "HasWeaponEnchantEffect", "WeaponEnchantEffectEspName");