From d1157b3e10f85c7809902f24860f697299059920 Mon Sep 17 00:00:00 2001 From: Allofich Date: Mon, 19 Sep 2016 18:12:30 +0900 Subject: [PATCH] Use correct vfx for teleport spells --- apps/openmw/mwmechanics/spellcasting.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/openmw/mwmechanics/spellcasting.cpp b/apps/openmw/mwmechanics/spellcasting.cpp index 95a7e1a3b..b5b409bee 100644 --- a/apps/openmw/mwmechanics/spellcasting.cpp +++ b/apps/openmw/mwmechanics/spellcasting.cpp @@ -646,14 +646,28 @@ namespace MWMechanics if (target != getPlayer()) return false; + MWRender::Animation* anim = MWBase::Environment::get().getWorld()->getAnimation(mCaster); + if (effectId == ESM::MagicEffect::DivineIntervention) { MWBase::Environment::get().getWorld()->teleportToClosestMarker(target, "divinemarker"); + anim->removeEffect(ESM::MagicEffect::DivineIntervention); + const ESM::Static* fx = MWBase::Environment::get().getWorld()->getStore().get() + .search("VFX_Summon_end"); + if (fx) + MWBase::Environment::get().getWorld()->spawnEffect("meshes\\" + fx->mModel, + "", mCaster.getRefData().getPosition().asVec3()); return true; } else if (effectId == ESM::MagicEffect::AlmsiviIntervention) { MWBase::Environment::get().getWorld()->teleportToClosestMarker(target, "templemarker"); + anim->removeEffect(ESM::MagicEffect::AlmsiviIntervention); + const ESM::Static* fx = MWBase::Environment::get().getWorld()->getStore().get() + .search("VFX_Summon_end"); + if (fx) + MWBase::Environment::get().getWorld()->spawnEffect("meshes\\" + fx->mModel, + "", mCaster.getRefData().getPosition().asVec3()); return true; } @@ -674,6 +688,7 @@ namespace MWMechanics MWWorld::ActionTeleport action(markedCell->isExterior() ? "" : markedCell->getCell()->mName, markedPosition, false); action.execute(target); + anim->removeEffect(ESM::MagicEffect::Recall); } return true; }