diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index e2bf08d82..c264d63df 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -452,22 +452,12 @@ namespace MWMechanics return; CreatureStats &stats = actor.getClass().getCreatureStats(actor); - int hello = stats.getAiSetting(CreatureStats::AI_Hello).getModified(); - if (hello == 0) - return; - - if (MWBase::Environment::get().getWorld()->isSwimming(actor)) - return; - - MWWorld::Ptr player = getPlayer(); - osg::Vec3f playerPos(player.getRefData().getPosition().asVec3()); - osg::Vec3f actorPos(actor.getRefData().getPosition().asVec3()); - osg::Vec3f dir = playerPos - actorPos; - const MWMechanics::AiSequence& seq = stats.getAiSequence(); int packageId = seq.getTypeId(); - if (seq.isInCombat() || (packageId != AiPackage::TypeIdWander && packageId != AiPackage::TypeIdTravel && packageId != -1)) + if (seq.isInCombat() || + MWBase::Environment::get().getWorld()->isSwimming(actor) || + (packageId != AiPackage::TypeIdWander && packageId != AiPackage::TypeIdTravel && packageId != -1)) { stats.setTurningToPlayer(false); stats.setGreetingTimer(0); @@ -475,6 +465,11 @@ namespace MWMechanics return; } + MWWorld::Ptr player = getPlayer(); + osg::Vec3f playerPos(player.getRefData().getPosition().asVec3()); + osg::Vec3f actorPos(actor.getRefData().getPosition().asVec3()); + osg::Vec3f dir = playerPos - actorPos; + if (stats.isTurningToPlayer()) { // Reduce the turning animation glitch by using a *HUGE* value of @@ -492,11 +487,10 @@ namespace MWMechanics return; // Play a random voice greeting if the player gets too close - float helloDistance = static_cast(hello); static int iGreetDistanceMultiplier = MWBase::Environment::get().getWorld()->getStore() .get().find("iGreetDistanceMultiplier")->mValue.getInteger(); - helloDistance *= iGreetDistanceMultiplier; + float helloDistance = static_cast(stats.getAiSetting(CreatureStats::AI_Hello).getModified() * iGreetDistanceMultiplier); int greetingTimer = stats.getGreetingTimer(); GreetingState greetingState = stats.getGreetingState();