mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-26 09:35:28 +00:00
Break invisibility on Use or Activate
This commit is contained in:
parent
5fd2df5546
commit
0bc3a13c0f
@ -517,6 +517,8 @@ void OMW::Engine::activate()
|
|||||||
|
|
||||||
std::string script = MWWorld::Class::get (ptr).getScript (ptr);
|
std::string script = MWWorld::Class::get (ptr).getScript (ptr);
|
||||||
|
|
||||||
|
MWBase::Environment::get().getWorld()->breakInvisibility(MWBase::Environment::get().getWorld()->getPlayer().getPlayer());
|
||||||
|
|
||||||
if (!script.empty())
|
if (!script.empty())
|
||||||
{
|
{
|
||||||
MWBase::Environment::get().getWorld()->getLocalScripts().setIgnore (ptr);
|
MWBase::Environment::get().getWorld()->getLocalScripts().setIgnore (ptr);
|
||||||
|
@ -419,6 +419,8 @@ namespace MWBase
|
|||||||
|
|
||||||
virtual void launchProjectile (const std::string& id, bool stack, const ESM::EffectList& effects,
|
virtual void launchProjectile (const std::string& id, bool stack, const ESM::EffectList& effects,
|
||||||
const MWWorld::Ptr& actor, const std::string& sourceName) = 0;
|
const MWWorld::Ptr& actor, const std::string& sourceName) = 0;
|
||||||
|
|
||||||
|
virtual void breakInvisibility (const MWWorld::Ptr& actor) = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ namespace MWGui
|
|||||||
|
|
||||||
// health, magicka, fatigue tooltip
|
// health, magicka, fatigue tooltip
|
||||||
MyGUI::Widget* w;
|
MyGUI::Widget* w;
|
||||||
std::string valStr = boost::lexical_cast<std::string>(value.getCurrent()) + "/" + boost::lexical_cast<std::string>(value.getModified());
|
std::string valStr = boost::lexical_cast<std::string>(int(value.getCurrent())) + "/" + boost::lexical_cast<std::string>(int(value.getModified()));
|
||||||
if (i==0)
|
if (i==0)
|
||||||
{
|
{
|
||||||
getWidget(w, "Health");
|
getWidget(w, "Health");
|
||||||
|
@ -501,6 +501,7 @@ bool CharacterController::updateNpcState(bool onground, bool inwater, bool isrun
|
|||||||
{
|
{
|
||||||
if(mUpperBodyState == UpperCharState_WeapEquiped)
|
if(mUpperBodyState == UpperCharState_WeapEquiped)
|
||||||
{
|
{
|
||||||
|
MWBase::Environment::get().getWorld()->breakInvisibility(mPtr);
|
||||||
mAttackType.clear();
|
mAttackType.clear();
|
||||||
if(mWeaponType == WeapType_Spell)
|
if(mWeaponType == WeapType_Spell)
|
||||||
{
|
{
|
||||||
|
@ -615,3 +615,8 @@ void MWWorld::InventoryStore::rechargeItems(float duration)
|
|||||||
it->second);
|
it->second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MWWorld::InventoryStore::purgeEffect(short effectId)
|
||||||
|
{
|
||||||
|
mMagicEffects.add(MWMechanics::EffectKey(effectId), -mMagicEffects.get(MWMechanics::EffectKey(effectId)).mMagnitude);
|
||||||
|
}
|
||||||
|
@ -179,7 +179,10 @@ namespace MWWorld
|
|||||||
void visitEffectSources (MWMechanics::EffectSourceVisitor& visitor);
|
void visitEffectSources (MWMechanics::EffectSourceVisitor& visitor);
|
||||||
|
|
||||||
void rechargeItems (float duration);
|
void rechargeItems (float duration);
|
||||||
/// Restore charge on enchanted items. Note this should only be done for the player.
|
///< Restore charge on enchanted items. Note this should only be done for the player.
|
||||||
|
|
||||||
|
void purgeEffect (short effectId);
|
||||||
|
///< Remove a magic effect
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2238,4 +2238,10 @@ namespace MWWorld
|
|||||||
deleteObject(movedPtr);
|
deleteObject(movedPtr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void World::breakInvisibility(const Ptr &actor)
|
||||||
|
{
|
||||||
|
actor.getClass().getCreatureStats(actor).getActiveSpells().purgeEffect(ESM::MagicEffect::Invisibility);
|
||||||
|
actor.getClass().getInventoryStore(actor).purgeEffect(ESM::MagicEffect::Invisibility);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -504,6 +504,8 @@ namespace MWWorld
|
|||||||
|
|
||||||
virtual void launchProjectile (const std::string& id, bool stack, const ESM::EffectList& effects,
|
virtual void launchProjectile (const std::string& id, bool stack, const ESM::EffectList& effects,
|
||||||
const MWWorld::Ptr& actor, const std::string& sourceName);
|
const MWWorld::Ptr& actor, const std::string& sourceName);
|
||||||
|
|
||||||
|
virtual void breakInvisibility (const MWWorld::Ptr& actor);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user