diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 8d6d38094..294f3b3e1 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -1635,6 +1635,15 @@ DisableWaterBreath = 4 AllFlightPaths = 0 +# +# TaxiFlightSpeed +# Description: Movement speed used while players travel along taxi flight paths. +# Range: >0.01-50.0 +# Default: 32.0 - (Blizzlike) +# Note: Values above 50.0 are rejected and fall back to the default value of 32.0. + +TaxiFlightSpeed = 32.0 + # # InstantFlightPaths # Description: Flight paths will take players to their destination instantly instead diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index c44c33e3a..792783a6a 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -682,8 +682,6 @@ void FlightPathMovementGenerator::DoFinalize(Player* player) player->RemovePlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK); } -#define PLAYER_FLIGHT_SPEED 32.0f - void FlightPathMovementGenerator::DoReset(Player* player) { uint32 end = GetPathAtMapEnd(); @@ -711,7 +709,7 @@ void FlightPathMovementGenerator::DoReset(Player* player) } init.SetFirstPointId(GetCurrentNode()); init.SetFly(); - init.SetVelocity(PLAYER_FLIGHT_SPEED); + init.SetVelocity(sWorld->getFloatConfig(CONFIG_TAXI_FLIGHT_SPEED)); init.Launch(); } diff --git a/src/server/game/World/WorldConfig.cpp b/src/server/game/World/WorldConfig.cpp index 55c3cf248..434a19ba6 100644 --- a/src/server/game/World/WorldConfig.cpp +++ b/src/server/game/World/WorldConfig.cpp @@ -261,6 +261,9 @@ void WorldConfig::BuildConfigCache() SetConfigValue(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE, "RecruitAFriend.MaxDifference", 4); SetConfigValue(CONFIG_ALL_TAXI_PATHS, "AllFlightPaths", false); + // Keep the maximum aligned with the flying speed clamp in MoveSplineInit::Launch. + SetConfigValue(CONFIG_TAXI_FLIGHT_SPEED, "TaxiFlightSpeed", 32.0f, ConfigValueCache::Reloadable::Yes, + [](float const& value) { return value > 0.01f && value <= 50.0f; }, "> 0.01 && <= 50"); SetConfigValue(CONFIG_INSTANT_TAXI, "InstantFlightPaths", 0); SetConfigValue(CONFIG_INSTANCE_IGNORE_LEVEL, "Instance.IgnoreLevel", false); diff --git a/src/server/game/World/WorldConfig.h b/src/server/game/World/WorldConfig.h index 6c57a0836..23249ae88 100644 --- a/src/server/game/World/WorldConfig.h +++ b/src/server/game/World/WorldConfig.h @@ -37,6 +37,7 @@ enum ServerConfigs CONFIG_ALLOW_TWO_SIDE_INTERACTION_ARENA, CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION, CONFIG_ALL_TAXI_PATHS, + CONFIG_TAXI_FLIGHT_SPEED, CONFIG_INSTANCE_IGNORE_LEVEL, CONFIG_INSTANCE_IGNORE_RAID, CONFIG_INSTANCE_GMSUMMON_PLAYER,