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

fix formatting

addressing hasWaterWalking comment

refactor to address remaining comments

clean up formatter changes

adding suggested condition to if statement

move isWaterWalking check into if statement

refactor if block to see if actor needs to have water walking purged

added entry to changelog.md and authors.md

removing redundant check from if statement

Sort previous changelog entry
7220-lua-add-a-general-purpose-lexical-parser
James-Deciutiis 1 year ago
parent 22c62a8c38
commit 273a2ae323

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

@ -33,6 +33,7 @@
Bug #7054: Quests aren't sorted by name
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 #7122: Teleportation to underwater should cancel active water walking effect
Bug #7172: Current music playlist continues playing indefinitely if next playlist is empty
Feature #5492: Let rain and snow collide with statics
Feature #6447: Add LOD support to Object Paging

@ -1,11 +1,13 @@
#include "actionteleport.hpp"
#include <components/esm3/loadcell.hpp>
#include <components/esm3/loadmgef.hpp>
#include "../mwbase/environment.hpp"
#include "../mwbase/mechanicsmanager.hpp"
#include "../mwbase/world.hpp"
#include "../mwmechanics/actorutil.hpp"
#include "../mwmechanics/creaturestats.hpp"
#include "../mwworld/cellstore.hpp"
@ -45,6 +47,7 @@ namespace MWWorld
MWBase::World* world = MWBase::Environment::get().getWorld();
MWWorld::WorldModel* worldModel = MWBase::Environment::get().getWorldModel();
actor.getClass().getCreatureStats(actor).land(actor == world->getPlayerPtr());
if (actor == world->getPlayerPtr())
{
world->getPlayer().setTeleported(true);
@ -65,6 +68,10 @@ namespace MWWorld
else
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(

Loading…
Cancel
Save