void Creature::drainHealth(Creature* attacker, CombatType_t combatType, int32_t damage)
{
lastDamageSource = combatType;
onAttacked();
if(attacker && attacker->getPlayer())
{
if(attacker->getPlayer()->getExtraMagicDamage() > 1)
{
int16_t color = g_config.getNumber(ConfigManager::EXTRA_DAMAGE_COLOR);
if(color < 0)
color = random_range(0, 255);
int realDamage = damage;
damage = damage * attacker->getPlayer()->getExtraMagicDamage();
std::stringstream ss;
ss << "+" << damage - realDamage;
g_game.addAnimatedText(attacker->getPosition(), (uint8_t)color, ss.str());
}
}
changeHealth(-damage);
if(attacker)
attacker->onAttackedCreatureDrainHealth(this, damage);
}