forked from teamnwah/openmw-tes3coop
Break invisibility on Use or Activate
This commit is contained in:
parent
5fd2df5546
commit
0bc3a13c0f
8 changed files with 23 additions and 2 deletions
|
@ -517,6 +517,8 @@ void OMW::Engine::activate()
|
|||
|
||||
std::string script = MWWorld::Class::get (ptr).getScript (ptr);
|
||||
|
||||
MWBase::Environment::get().getWorld()->breakInvisibility(MWBase::Environment::get().getWorld()->getPlayer().getPlayer());
|
||||
|
||||
if (!script.empty())
|
||||
{
|
||||
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,
|
||||
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
|
||||
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)
|
||||
{
|
||||
getWidget(w, "Health");
|
||||
|
|
|
@ -501,6 +501,7 @@ bool CharacterController::updateNpcState(bool onground, bool inwater, bool isrun
|
|||
{
|
||||
if(mUpperBodyState == UpperCharState_WeapEquiped)
|
||||
{
|
||||
MWBase::Environment::get().getWorld()->breakInvisibility(mPtr);
|
||||
mAttackType.clear();
|
||||
if(mWeaponType == WeapType_Spell)
|
||||
{
|
||||
|
|
|
@ -615,3 +615,8 @@ void MWWorld::InventoryStore::rechargeItems(float duration)
|
|||
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 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);
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
const MWWorld::Ptr& actor, const std::string& sourceName);
|
||||
|
||||
virtual void breakInvisibility (const MWWorld::Ptr& actor);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue