diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 5269fb9..04bb651 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2522,12 +2522,23 @@ void Creature::ProcOnceChgAttrBuff(MetaData::Buff* buff_meta) { if (buff_meta->int_param2 == 1) { //绝对值 - ability.hp += buff_meta->param3; - ability.hp = std::min(ability.max_hp, ability.hp); + if (buff_meta->param3 > 0) { + AddHp(buff_meta->param3); + } else if (buff_meta->param3 < 0) { + #if 01 + DecHP(std::abs(buff_meta->param3), 1, "", 1); + #endif + } } else if (buff_meta->int_param2 == 2) { //百分比 - ability.hp *= 1 + buff_meta->param3; - ability.hp = std::min(ability.max_hp, ability.hp); + float chg_hp = ability.hp * buff_meta->param3; + if (chg_hp > 0.0001f) { + AddHp(chg_hp); + } else if (chg_hp < 0.0001f){ + #if 1 + DecHP(std::abs(chg_hp), 1, "", 1); + #endif + } } SyncAroundPlayers(__FILE__, __LINE__, __func__); }