diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 3cb6ab0c..ca6f03bc 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -146,6 +146,7 @@ namespace mt int moba_room_time = 60 * 3; std::vector> moba_towers; int moba_tower_interval = 1; + float moba_tower_recover_hp_rate = 0.5; int nature_recover_hp_idletime = 3; int nature_recover_hp_interval = 1; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 0c368472..c7eb0ee3 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -184,7 +184,13 @@ void Room::Init() { float distance = hum->GetPos().Distance2D2(std::get<0>(tuple)); if (distance < std::get<1>(tuple)) { - + if (!hum->dead && !hum->poisoning && !hum->downed) { + if (hum->GetHP() + 1 < hum->GetMaxHP()) { + hum->AddHp(hum->GetMaxHP() * + mt::Param::s().moba_tower_recover_hp_rate); + hum->TryAddBuff(hum, kRecoverHpEffectBuffId); + } + } } return true; });