From 93b2f092248404220042e0faa344b55a899dec9f Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 29 Apr 2016 17:50:33 +0200 Subject: [PATCH] Workaround for some AI functions being incorrectly handled as AI packages (Bug #3378) --- apps/openmw/mwmechanics/aipackage.hpp | 1 + apps/openmw/mwmechanics/aisequence.cpp | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwmechanics/aipackage.hpp b/apps/openmw/mwmechanics/aipackage.hpp index f938a34a1..aa689f189 100644 --- a/apps/openmw/mwmechanics/aipackage.hpp +++ b/apps/openmw/mwmechanics/aipackage.hpp @@ -41,6 +41,7 @@ namespace MWMechanics TypeIdActivate = 4, // These 3 are not really handled as Ai Packages in the MW engine + // For compatibility do *not* return these in the getCurrentAiPackage script function.. TypeIdCombat = 5, TypeIdPursue = 6, TypeIdAvoidDoor = 7 diff --git a/apps/openmw/mwmechanics/aisequence.cpp b/apps/openmw/mwmechanics/aisequence.cpp index f9016c607..c71dd5db9 100644 --- a/apps/openmw/mwmechanics/aisequence.cpp +++ b/apps/openmw/mwmechanics/aisequence.cpp @@ -166,10 +166,15 @@ void AiSequence::execute (const MWWorld::Ptr& actor, CharacterController& charac } MWMechanics::AiPackage* package = mPackages.front(); - mLastAiPackage = package->getTypeId(); + int packageTypeId = package->getTypeId(); + // workaround ai packages not being handled as in the vanilla engine + if (packageTypeId != AiPackage::TypeIdCombat + && packageTypeId != AiPackage::TypeIdPursue + && packageTypeId != AiPackage::TypeIdAvoidDoor) + mLastAiPackage = packageTypeId; // if active package is combat one, choose nearest target - if (mLastAiPackage == AiPackage::TypeIdCombat) + if (packageTypeId == AiPackage::TypeIdCombat) { std::list::iterator itActualCombat; @@ -216,7 +221,6 @@ void AiSequence::execute (const MWWorld::Ptr& actor, CharacterController& charac } package = mPackages.front(); - mLastAiPackage = package->getTypeId(); } else {