diff --git a/server/gameserver/mt/SafeArea.cc b/server/gameserver/mt/SafeArea.cc index c6e4420b..fdeb0efc 100644 --- a/server/gameserver/mt/SafeArea.cc +++ b/server/gameserver/mt/SafeArea.cc @@ -54,8 +54,13 @@ namespace mt } int ring_count = pair.second.size() - 1; auto last_area = pair.second.at(pair.second.size() - 1); + bool can_revive = false; for (auto& meta : pair.second) { meta->small_ring_count_ = ring_count--; + if (!can_revive) { + can_revive = meta->rebirth() ? true : false; + } + meta->_can_revive = can_revive; meta->last_area_ = last_area; } } @@ -69,7 +74,7 @@ namespace mt bool SafeArea::CanRevive() const { - return false; + return _can_revive; } } diff --git a/server/gameserver/mt/SafeArea.h b/server/gameserver/mt/SafeArea.h index dca2c6a5..b479f741 100644 --- a/server/gameserver/mt/SafeArea.h +++ b/server/gameserver/mt/SafeArea.h @@ -23,6 +23,7 @@ namespace mt private: static std::map> type_hash_; + bool _can_revive = false; int small_ring_count_ = 0; const mt::SafeArea* last_area_ = nullptr; std::shared_ptr> _boss;