mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-19 03:39:58 +00:00
Spell priority: make AI do not cast target spells under water
This commit is contained in:
parent
00402b7154
commit
3190f28710
@ -383,6 +383,7 @@ namespace MWBase
|
||||
///Is the head of the creature underwater?
|
||||
virtual bool isSubmerged(const MWWorld::ConstPtr &object) const = 0;
|
||||
virtual bool isUnderwater(const MWWorld::CellStore* cell, const osg::Vec3f &pos) const = 0;
|
||||
virtual bool isUnderwater(const MWWorld::ConstPtr &object, const float heightRatio) const = 0;
|
||||
virtual bool isWaterWalkingCastableOnTarget(const MWWorld::ConstPtr &target) const = 0;
|
||||
virtual bool isOnGround(const MWWorld::Ptr &ptr) const = 0;
|
||||
|
||||
|
@ -545,6 +545,13 @@ namespace MWMechanics
|
||||
|
||||
const ESM::MagicEffect* magicEffect = MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find(effect.mEffectID);
|
||||
|
||||
// Underwater casting not possible
|
||||
if (effect.mRange == ESM::RT_Target)
|
||||
{
|
||||
if (MWBase::Environment::get().getWorld()->isUnderwater(MWWorld::ConstPtr(actor), 0.75f))
|
||||
return 0;
|
||||
}
|
||||
|
||||
rating *= magicEffect->mData.mBaseCost;
|
||||
|
||||
if (magicEffect->mData.mFlags & ESM::MagicEffect::Harmful)
|
||||
|
@ -168,9 +168,6 @@ namespace MWWorld
|
||||
|
||||
float mDistanceToFacedObject;
|
||||
|
||||
bool isUnderwater(const MWWorld::ConstPtr &object, const float heightRatio) const;
|
||||
///< helper function for implementing isSwimming(), isSubmerged(), isWading()
|
||||
|
||||
bool mTeleportEnabled;
|
||||
bool mLevitationEnabled;
|
||||
bool mGoToJail;
|
||||
@ -490,6 +487,7 @@ namespace MWWorld
|
||||
virtual bool isSubmerged(const MWWorld::ConstPtr &object) const;
|
||||
virtual bool isSwimming(const MWWorld::ConstPtr &object) const;
|
||||
virtual bool isUnderwater(const MWWorld::CellStore* cell, const osg::Vec3f &pos) const;
|
||||
virtual bool isUnderwater(const MWWorld::ConstPtr &object, const float heightRatio) const;
|
||||
virtual bool isWading(const MWWorld::ConstPtr &object) const;
|
||||
virtual bool isWaterWalkingCastableOnTarget(const MWWorld::ConstPtr &target) const;
|
||||
virtual bool isOnGround(const MWWorld::Ptr &ptr) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user