diff --git a/CMakeLists.txt b/CMakeLists.txt index 24816a323..0efa7f511 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE) ENDIF(NOT CMAKE_BUILD_TYPE) -SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD 14) SET(CMAKE_CXX_STANDARD_REQUIRED ON) SET(CMAKE_CXX_EXTENSIONS OFF) diff --git a/zone/exp.cpp b/zone/exp.cpp index 8f722b1f3..b0eb13790 100644 --- a/zone/exp.cpp +++ b/zone/exp.cpp @@ -718,7 +718,8 @@ void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) { else Message(Chat::Yellow, "Welcome to level %i!", check_level); - if (check_level == RuleI(Character, DeathItemLossLevel)) + if (check_level == RuleI(Character, DeathItemLossLevel) && + m_ClientVersionBit & EQ::versions::maskUFAndEarlier) MessageString(Chat::Yellow, CORPSE_ITEM_LOST); if (check_level == RuleI(Character, DeathExpLossLevel)) diff --git a/zone/mob_movement_manager.cpp b/zone/mob_movement_manager.cpp index 904bc5246..0ebed1188 100644 --- a/zone/mob_movement_manager.cpp +++ b/zone/mob_movement_manager.cpp @@ -1088,6 +1088,17 @@ void MobMovementManager::UpdatePath(Mob *who, float x, float y, float z, MobMove PushFlyTo(ent.second, x, y, z, mob_movement_mode); PushStopMoving(ent.second); } + // Below for npcs that can traverse land or water so they don't sink + else if (who->GetFlyMode() == GravityBehavior::Water && + zone->watermap->InLiquid(who->GetPosition()) && + zone->watermap->InLiquid(glm::vec3(x, y, z)) && + zone->zonemap->CheckLoS(who->GetPosition(), glm::vec3(x, y, z))) { + auto iter = _impl->Entries.find(who); + auto &ent = (*iter); + + PushSwimTo(ent.second, x, y, z, mob_movement_mode); + PushStopMoving(ent.second); + } else { UpdatePathGround(who, x, y, z, mob_movement_mode); }