void update()
{
////update timers
//for (Timers::iterator i = mTimers.begin(); i != mTimers.end(); i++)
//{
// if (i.second > -1) i.second--;
//}
//int oldHP = getModifiedAttribute(ATTR_HP);
//int newHP = oldHP;
//int maxHP = getModifiedAttribute(ATTR_MAX_HP);
//// Regenerate HP
//if (mAction != DEAD && !isTimerRunning(T_B_HP_REGEN))
//{
// setTimerHard(T_B_HP_REGEN, TICKS_PER_HP_REGENERATION);
// newHP += getModifiedAttribute(ATTR_HP_REGEN);
//}
//// Cap HP at maximum
//if (newHP > maxHP)
//{
// newHP = maxHP;
//}
//// Only update HP when it actually changed to avoid network noise
//if (newHP != oldHP)
//{
// setAttribute(ATTR_HP, newHP);
// raiseUpdateFlags(UPDATEFLAG_HEALTHCHANGE);
//}
//// Update lifetime of effects.
//for (AttributeMap::iterator it = mAttributes.begin();
// it != mAttributes.end();
// ++it)
// if (it.second.tick())
// updateDerivedAttributes(it.first);
//// Update and run status effects
//StatusEffects::iterator it = mStatus.begin();
//while (it != mStatus.end())
//{
// it.second.time--;
// if (it.second.time > 0 && mAction != DEAD)
// it.second.status.tick(this, it.second.time);
// if (it.second.time <= 0 || mAction == DEAD)
// {
// mStatus.erase(it);
// it = mStatus.begin();
// }
// it++;
//}
//// Check if being died
//if (getModifiedAttribute(ATTR_HP) <= 0 && mAction != DEAD)
// died();
}