Don't play "idle" voice entries for NPCs with Hello 0

Not entirely sure if this is correct, but it prevents the NPCs in the starting boat from incorrectly playing them.
actorid
scrawl 11 years ago
parent 39d86a9468
commit 52f89e9a17

@ -191,15 +191,18 @@ namespace MWMechanics
mIdleNow = true; mIdleNow = true;
// Play idle voiced dialogue entries randomly // Play idle voiced dialogue entries randomly
const MWWorld::ESMStore &store = MWBase::Environment::get().getWorld()->getStore(); int hello = actor.getClass().getCreatureStats(actor).getAiSetting(CreatureStats::AI_Hello).getModified();
float chance = store.get<ESM::GameSetting>().find("fVoiceIdleOdds")->getFloat(); if (hello > 0)
int roll = std::rand()/ (static_cast<double> (RAND_MAX) + 1) * 100; // [0, 99] {
const MWWorld::ESMStore &store = MWBase::Environment::get().getWorld()->getStore();
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr(); float chance = store.get<ESM::GameSetting>().find("fVoiceIdleOdds")->getFloat();
int roll = std::rand()/ (static_cast<double> (RAND_MAX) + 1) * 100; // [0, 99]
// Don't bother if the player is out of hearing range MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr();
if (roll < chance && Ogre::Vector3(player.getRefData().getPosition().pos).distance(Ogre::Vector3(actor.getRefData().getPosition().pos)) < 1500)
MWBase::Environment::get().getDialogueManager()->say(actor, "idle"); // Don't bother if the player is out of hearing range
if (roll < chance && Ogre::Vector3(player.getRefData().getPosition().pos).distance(Ogre::Vector3(actor.getRefData().getPosition().pos)) < 1500)
MWBase::Environment::get().getDialogueManager()->say(actor, "idle");
}
} }
} }
@ -208,7 +211,7 @@ namespace MWMechanics
// Play a random voice greeting if the player gets too close // Play a random voice greeting if the player gets too close
const MWWorld::ESMStore &store = MWBase::Environment::get().getWorld()->getStore(); const MWWorld::ESMStore &store = MWBase::Environment::get().getWorld()->getStore();
float hello = actor.getClass().getCreatureStats(actor).getAiSetting(CreatureStats::AI_Hello).getModified(); int hello = actor.getClass().getCreatureStats(actor).getAiSetting(CreatureStats::AI_Hello).getModified();
float helloDistance = hello; float helloDistance = hello;
int iGreetDistanceMultiplier = store.get<ESM::GameSetting>().find("iGreetDistanceMultiplier")->getInt(); int iGreetDistanceMultiplier = store.get<ESM::GameSetting>().find("iGreetDistanceMultiplier")->getInt();
helloDistance *= iGreetDistanceMultiplier; helloDistance *= iGreetDistanceMultiplier;

Loading…
Cancel
Save