Allow multiple spell hit sounds on single target

This commit is contained in:
Allofich 2016-08-31 17:55:17 +09:00
parent 7859e378df
commit b4577fe751

View file

@ -356,7 +356,6 @@ namespace MWMechanics
ESM::EffectList reflectedEffects; ESM::EffectList reflectedEffects;
std::vector<ActiveSpells::ActiveEffect> appliedLastingEffects; std::vector<ActiveSpells::ActiveEffect> appliedLastingEffects;
bool firstAppliedEffect = true;
bool anyHarmfulEffect = false; bool anyHarmfulEffect = false;
// HACK: cache target's magic effects here, and add any applied effects to it. Use the cached effects for determining resistance. // HACK: cache target's magic effects here, and add any applied effects to it. Use the cached effects for determining resistance.
@ -545,20 +544,15 @@ namespace MWMechanics
if (target.getClass().isActor() || magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration) if (target.getClass().isActor() || magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration)
{ {
// Play sound, only for the first effect static const std::string schools[] = {
if (firstAppliedEffect) "alteration", "conjuration", "destruction", "illusion", "mysticism", "restoration"
{ };
static const std::string schools[] = {
"alteration", "conjuration", "destruction", "illusion", "mysticism", "restoration"
};
MWBase::SoundManager *sndMgr = MWBase::Environment::get().getSoundManager(); MWBase::SoundManager *sndMgr = MWBase::Environment::get().getSoundManager();
if(!magicEffect->mHitSound.empty()) if(!magicEffect->mHitSound.empty())
sndMgr->playSound3D(target, magicEffect->mHitSound, 1.0f, 1.0f); sndMgr->playSound3D(target, magicEffect->mHitSound, 1.0f, 1.0f);
else else
sndMgr->playSound3D(target, schools[magicEffect->mData.mSchool]+" hit", 1.0f, 1.0f); sndMgr->playSound3D(target, schools[magicEffect->mData.mSchool]+" hit", 1.0f, 1.0f);
firstAppliedEffect = false;
}
// Add VFX // Add VFX
const ESM::Static* castStatic; const ESM::Static* castStatic;