From 305b5fec0fb26b247daeced91c536c966ff00e53 Mon Sep 17 00:00:00 2001
From: Chris Robinson <chris.kcat@gmail.com>
Date: Tue, 27 Aug 2013 21:40:31 -0700
Subject: [PATCH] Avoid needlessly copying the MagicEffects

---
 apps/openmw/mwmechanics/actors.cpp | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp
index 8c310ff226..bfe476adb1 100644
--- a/apps/openmw/mwmechanics/actors.cpp
+++ b/apps/openmw/mwmechanics/actors.cpp
@@ -135,30 +135,27 @@ namespace MWMechanics
 
     void Actors::calculateCreatureStatModifiers (const MWWorld::Ptr& ptr)
     {
-        CreatureStats& creatureStats = MWWorld::Class::get (ptr).getCreatureStats (ptr);
+        CreatureStats &creatureStats = MWWorld::Class::get(ptr).getCreatureStats(ptr);
+        const MagicEffects &effects = creatureStats.getMagicEffects();
 
         // attributes
-        for (int i=0; i<8; ++i)
+        for(int i = 0;i < ESM::Attribute::Length;++i)
         {
-            int modifier =
-                creatureStats.getMagicEffects().get (EffectKey (ESM::MagicEffect::FortifyAttribute, i)).mMagnitude;
+            Stat<int> stat = creatureStats.getAttribute(i);
+            stat.setModifier(effects.get(EffectKey(ESM::MagicEffect::FortifyAttribute, i)).mMagnitude -
+                             effects.get(EffectKey(ESM::MagicEffect::DrainAttribute, i)).mMagnitude);
 
-            modifier -= creatureStats.getMagicEffects().get (EffectKey (ESM::MagicEffect::DrainAttribute, i)).mMagnitude;
-
-            creatureStats.getAttribute(i).setModifier (modifier);
+            creatureStats.setAttribute(i, stat);
         }
 
         // dynamic stats
-        MagicEffects effects = creatureStats.getMagicEffects();
-
-        for (int i=0; i<3; ++i)
+        for(int i = 0;i < 3;++i)
         {
-            DynamicStat<float> stat = creatureStats.getDynamic (i);
+            DynamicStat<float> stat = creatureStats.getDynamic(i);
+            stat.setModifier(effects.get(EffectKey(80+i)).mMagnitude -
+                             effects.get(EffectKey(18+i)).mMagnitude);
 
-            stat.setModifier (
-                effects.get (EffectKey(80+i)).mMagnitude - effects.get (EffectKey(18+i)).mMagnitude);
-
-            creatureStats.setDynamic (i, stat);
+            creatureStats.setDynamic(i, stat);
         }
     }