forked from teamnwah/openmw-tes3coop
Merge remote-tracking branch 'scrawl/magic'
This commit is contained in:
commit
a198751f21
4 changed files with 20 additions and 1 deletions
|
@ -69,7 +69,7 @@ add_openmw_dir (mwclass
|
||||||
add_openmw_dir (mwmechanics
|
add_openmw_dir (mwmechanics
|
||||||
mechanicsmanagerimp stat character creaturestats magiceffects movement actors objects
|
mechanicsmanagerimp stat character creaturestats magiceffects movement actors objects
|
||||||
drawstate spells activespells npcstats aipackage aisequence alchemy aiwander aitravel aifollow
|
drawstate spells activespells npcstats aipackage aisequence alchemy aiwander aitravel aifollow
|
||||||
aiescort aiactivate repair enchanting pathfinding security
|
aiescort aiactivate repair enchanting pathfinding security spellsuccess
|
||||||
)
|
)
|
||||||
|
|
||||||
add_openmw_dir (mwbase
|
add_openmw_dir (mwbase
|
||||||
|
|
|
@ -47,6 +47,7 @@ namespace MWMechanics
|
||||||
if(!paused)
|
if(!paused)
|
||||||
{
|
{
|
||||||
updateDrowning(ptr, duration);
|
updateDrowning(ptr, duration);
|
||||||
|
calculateNpcStatModifiers(ptr);
|
||||||
updateEquippedLight(ptr, duration);
|
updateEquippedLight(ptr, duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -170,6 +171,20 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Actors::calculateNpcStatModifiers (const MWWorld::Ptr& ptr)
|
||||||
|
{
|
||||||
|
NpcStats &npcStats = MWWorld::Class::get(ptr).getNpcStats(ptr);
|
||||||
|
const MagicEffects &effects = npcStats.getMagicEffects();
|
||||||
|
|
||||||
|
// skills
|
||||||
|
for(int i = 0;i < ESM::Skill::Length;++i)
|
||||||
|
{
|
||||||
|
Stat<float>& skill = npcStats.getSkill(i);
|
||||||
|
skill.setModifier(effects.get(EffectKey(ESM::MagicEffect::FortifySkill, i)).mMagnitude -
|
||||||
|
effects.get(EffectKey(ESM::MagicEffect::DrainSkill, i)).mMagnitude);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Actors::updateDrowning(const MWWorld::Ptr& ptr, float duration)
|
void Actors::updateDrowning(const MWWorld::Ptr& ptr, float duration)
|
||||||
{
|
{
|
||||||
MWBase::World *world = MWBase::Environment::get().getWorld();
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
|
|
|
@ -34,11 +34,14 @@ namespace MWMechanics
|
||||||
|
|
||||||
void updateNpc(const MWWorld::Ptr &ptr, float duration, bool paused);
|
void updateNpc(const MWWorld::Ptr &ptr, float duration, bool paused);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void adjustMagicEffects (const MWWorld::Ptr& creature);
|
void adjustMagicEffects (const MWWorld::Ptr& creature);
|
||||||
|
|
||||||
void calculateDynamicStats (const MWWorld::Ptr& ptr);
|
void calculateDynamicStats (const MWWorld::Ptr& ptr);
|
||||||
|
|
||||||
void calculateCreatureStatModifiers (const MWWorld::Ptr& ptr);
|
void calculateCreatureStatModifiers (const MWWorld::Ptr& ptr);
|
||||||
|
void calculateNpcStatModifiers (const MWWorld::Ptr& ptr);
|
||||||
|
|
||||||
void calculateRestoration (const MWWorld::Ptr& ptr, float duration);
|
void calculateRestoration (const MWWorld::Ptr& ptr, float duration);
|
||||||
|
|
||||||
|
|
|
@ -2077,6 +2077,7 @@ namespace MWWorld
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actor.getClass().skillUsageSucceeded(actor, MWMechanics::spellSchoolToSkill(MWMechanics::getSpellSchool(selectedSpell, actor)), 0);
|
||||||
|
|
||||||
actor.getClass().getCreatureStats(actor).getActiveSpells().addSpell(selectedSpell, actor, ESM::RT_Self);
|
actor.getClass().getCreatureStats(actor).getActiveSpells().addSpell(selectedSpell, actor, ESM::RT_Self);
|
||||||
// TODO: RT_Range, RT_Touch
|
// TODO: RT_Range, RT_Touch
|
||||||
|
|
Loading…
Reference in a new issue