Merge branch 'remove-water-walking-teleport-underwater' into 'master'

teleporting to an underwater marked location will remove water walking spell effects from actor

Closes #7122

See merge request OpenMW/openmw!2656
7220-lua-add-a-general-purpose-lexical-parser
psi29a 2 years ago
commit 8b0e55dd5f

@ -102,6 +102,7 @@ Programmers
Jacob Turnbull (Tankinfrank) Jacob Turnbull (Tankinfrank)
Jake Westrip (16bitint) Jake Westrip (16bitint)
James Carty (MrTopCat) James Carty (MrTopCat)
James Deciutiis (JamesDeciutiis)
James Moore (moore.work) James Moore (moore.work)
James Stephens (james-h-stephens) James Stephens (james-h-stephens)
Jan-Peter Nilsson (peppe) Jan-Peter Nilsson (peppe)

@ -33,6 +33,7 @@
Bug #7054: Quests aren't sorted by name Bug #7054: Quests aren't sorted by name
Bug #7084: Resurrecting an actor doesn't take into account base record changes Bug #7084: Resurrecting an actor doesn't take into account base record changes
Bug #7088: Deleting last save game of last character doesn't clear character name/details Bug #7088: Deleting last save game of last character doesn't clear character name/details
Bug #7122: Teleportation to underwater should cancel active water walking effect
Bug #7172: Current music playlist continues playing indefinitely if next playlist is empty Bug #7172: Current music playlist continues playing indefinitely if next playlist is empty
Feature #5492: Let rain and snow collide with statics Feature #5492: Let rain and snow collide with statics
Feature #6447: Add LOD support to Object Paging Feature #6447: Add LOD support to Object Paging

@ -1,11 +1,13 @@
#include "actionteleport.hpp" #include "actionteleport.hpp"
#include <components/esm3/loadcell.hpp> #include <components/esm3/loadcell.hpp>
#include <components/esm3/loadmgef.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/mechanicsmanager.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwmechanics/actorutil.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
#include "../mwworld/cellstore.hpp" #include "../mwworld/cellstore.hpp"
@ -45,6 +47,7 @@ namespace MWWorld
MWBase::World* world = MWBase::Environment::get().getWorld(); MWBase::World* world = MWBase::Environment::get().getWorld();
MWWorld::WorldModel* worldModel = MWBase::Environment::get().getWorldModel(); MWWorld::WorldModel* worldModel = MWBase::Environment::get().getWorldModel();
actor.getClass().getCreatureStats(actor).land(actor == world->getPlayerPtr()); actor.getClass().getCreatureStats(actor).land(actor == world->getPlayerPtr());
if (actor == world->getPlayerPtr()) if (actor == world->getPlayerPtr())
{ {
world->getPlayer().setTeleported(true); world->getPlayer().setTeleported(true);
@ -65,6 +68,10 @@ namespace MWWorld
else else
world->moveObject(actor, worldModel->getInterior(mCellName), mPosition.asVec3(), true, true); world->moveObject(actor, worldModel->getInterior(mCellName), mPosition.asVec3(), true, true);
} }
if (!world->isWaterWalkingCastableOnTarget(actor) && MWMechanics::hasWaterWalking(actor))
actor.getClass().getCreatureStats(actor).getActiveSpells().purgeEffect(
actor, ESM::MagicEffect::WaterWalking);
} }
void ActionTeleport::getFollowers( void ActionTeleport::getFollowers(

Loading…
Cancel
Save