diff options
-rw-r--r-- | src/server/game/Entities/Unit/UnitDefines.h | 29 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp | 21 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MoveSplineFlag.h | 6 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MovementUtil.cpp | 2 |
4 files changed, 31 insertions, 27 deletions
diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h index 0e51bc6525d..91a10a5b9c5 100644 --- a/src/server/game/Entities/Unit/UnitDefines.h +++ b/src/server/game/Entities/Unit/UnitDefines.h @@ -333,21 +333,22 @@ DEFINE_ENUM_FLAG(NPCFlags); // EnumUtils: DESCRIBE THIS enum NPCFlags2 : uint32 { - UNIT_NPC_FLAG_2_NONE = 0x00000000, - UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER = 0x00000001, // TITLE is item upgrade - UNIT_NPC_FLAG_2_GARRISON_ARCHITECT = 0x00000002, // TITLE is garrison architect DESCRIPTION garrison building placement UI - UNIT_NPC_FLAG_2_STEERING = 0x00000004, // TITLE is avoiding obstacles DESCRIPTION clientside pathfinding - UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL = 0x00000008, // TITLE is area spirit healer individual DESCRIPTION area spirit healer with individual timers - UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER = 0x00000010, // TITLE is shipment crafter DESCRIPTION garrison work orders - UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC = 0x00000020, // TITLE is garrison mission - UNIT_NPC_FLAG_2_TRADESKILL_NPC = 0x00000040, // TITLE is tradeskill DESCRIPTION crafting at npc - UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW = 0x00000080, // TITLE is black market view DESCRIPTION only allows viewing black market auctions, no bidding - UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC = 0x00000200, // TITLE is garrrison talent - UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR = 0x00000400, // TITLE is contribution collector - UNIT_NPC_FLAG_2_AZERITE_RESPEC = 0x00004000, // TITLE is azerite respec - UNIT_NPC_FLAG_2_ISLANDS_QUEUE = 0x00008000, // TITLE is islands queue + UNIT_NPC_FLAG_2_NONE = 0x00000000, + UNIT_NPC_FLAG_2_ITEM_UPGRADE_MASTER = 0x00000001, // TITLE is item upgrade + UNIT_NPC_FLAG_2_GARRISON_ARCHITECT = 0x00000002, // TITLE is garrison architect DESCRIPTION garrison building placement UI + UNIT_NPC_FLAG_2_STEERING = 0x00000004, // TITLE is avoiding obstacles DESCRIPTION clientside pathfinding + UNIT_NPC_FLAG_2_AREA_SPIRIT_HEALER_INDIVIDUAL = 0x00000008, // TITLE is area spirit healer individual DESCRIPTION area spirit healer with individual timers + UNIT_NPC_FLAG_2_SHIPMENT_CRAFTER = 0x00000010, // TITLE is shipment crafter DESCRIPTION garrison work orders + UNIT_NPC_FLAG_2_GARRISON_MISSION_NPC = 0x00000020, // TITLE is garrison mission + UNIT_NPC_FLAG_2_TRADESKILL_NPC = 0x00000040, // TITLE is tradeskill DESCRIPTION crafting at npc + UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW = 0x00000080, // TITLE is black market view DESCRIPTION only allows viewing black market auctions, no bidding + UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC = 0x00000200, // TITLE is garrrison talent + UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR = 0x00000400, // TITLE is contribution collector + UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES = 0x00002000, // TITLE enables avoiding obstacles when FastSteering spline flag is set + UNIT_NPC_FLAG_2_AZERITE_RESPEC = 0x00004000, // TITLE is azerite respec + UNIT_NPC_FLAG_2_ISLANDS_QUEUE = 0x00008000, // TITLE is islands queue UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION = 0x00010000, - UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER= 0x00200000, // TITLE is personal tabard designer + UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER = 0x00200000, // TITLE is personal tabard designer }; DEFINE_ENUM_FLAG(NPCFlags2); diff --git a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp index 3979882e32c..3a9b8d1a5b0 100644 --- a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp +++ b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp @@ -561,6 +561,7 @@ TC_API_EXPORT EnumText EnumUtils<NPCFlags2>::ToString(NPCFlags2 value) case UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW: return { "UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW", "is black market view", "only allows viewing black market auctions, no bidding" }; case UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC: return { "UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC", "is garrrison talent", "" }; case UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR: return { "UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR", "is contribution collector", "" }; + case UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES: return { "UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES", "enables avoiding obstacles when FastSteering spline flag is set", "" }; case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return { "UNIT_NPC_FLAG_2_AZERITE_RESPEC", "is azerite respec", "" }; case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return { "UNIT_NPC_FLAG_2_ISLANDS_QUEUE", "is islands queue", "" }; case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return { "UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION", "UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION", "" }; @@ -570,7 +571,7 @@ TC_API_EXPORT EnumText EnumUtils<NPCFlags2>::ToString(NPCFlags2 value) } template <> -TC_API_EXPORT size_t EnumUtils<NPCFlags2>::Count() { return 15; } +TC_API_EXPORT size_t EnumUtils<NPCFlags2>::Count() { return 16; } template <> TC_API_EXPORT NPCFlags2 EnumUtils<NPCFlags2>::FromIndex(size_t index) @@ -588,10 +589,11 @@ TC_API_EXPORT NPCFlags2 EnumUtils<NPCFlags2>::FromIndex(size_t index) case 8: return UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW; case 9: return UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC; case 10: return UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR; - case 11: return UNIT_NPC_FLAG_2_AZERITE_RESPEC; - case 12: return UNIT_NPC_FLAG_2_ISLANDS_QUEUE; - case 13: return UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION; - case 14: return UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER; + case 11: return UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES; + case 12: return UNIT_NPC_FLAG_2_AZERITE_RESPEC; + case 13: return UNIT_NPC_FLAG_2_ISLANDS_QUEUE; + case 14: return UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION; + case 15: return UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER; default: throw std::out_of_range("index"); } } @@ -612,10 +614,11 @@ TC_API_EXPORT size_t EnumUtils<NPCFlags2>::ToIndex(NPCFlags2 value) case UNIT_NPC_FLAG_2_BLACK_MARKET_VIEW: return 8; case UNIT_NPC_FLAG_2_GARRISON_TALENT_NPC: return 9; case UNIT_NPC_FLAG_2_CONTRIBUTION_COLLECTOR: return 10; - case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return 11; - case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return 12; - case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return 13; - case UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER: return 14; + case UNIT_NPC_FLAG_2_FAST_STEERING_AVOIDS_OBSTACLES: return 11; + case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return 12; + case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return 13; + case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return 14; + case UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER: return 15; default: throw std::out_of_range("value"); } } diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h index fc4d54fdcba..5936f8d7067 100644 --- a/src/server/game/Movement/Spline/MoveSplineFlag.h +++ b/src/server/game/Movement/Spline/MoveSplineFlag.h @@ -55,7 +55,7 @@ namespace Movement CanSwim = 0x00200000, UncompressedPath = 0x00400000, Unknown_0x800000 = 0x00800000, // NOT VERIFIED - Unknown_0x1000000 = 0x01000000, // NOT VERIFIED + FastSteering = 0x01000000, // Predicts spline only 500ms into the future for smoothing instead of 1s (making turns sharper) and turns off clientside obstacle detection Animation = 0x02000000, // Plays animation after some time passed Parabolic = 0x04000000, // Affects elevation computation, can't be combined with Falling flag FadeObject = 0x08000000, @@ -69,7 +69,7 @@ namespace Movement Mask_No_Monster_Move = Done, // Unused, not suported flags Mask_Unused = No_Spline | Enter_Cycle | Frozen | Unknown_0x8 | Unknown_0x100 | Unknown_0x20000 | Unknown_0x40000 - | Unknown_0x800000 | Unknown_0x1000000 | FadeObject | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000 + | Unknown_0x800000 | FastSteering | FadeObject | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000 }; inline uint32& raw() { return (uint32&)*this; } @@ -127,7 +127,7 @@ namespace Movement bool canSwim : 1; bool uncompressedPath : 1; bool unknown0x800000 : 1; - bool unknown0x1000000 : 1; + bool fastSteering : 1; bool animation : 1; bool parabolic : 1; bool fadeObject : 1; diff --git a/src/server/game/Movement/Spline/MovementUtil.cpp b/src/server/game/Movement/Spline/MovementUtil.cpp index 7a6aba2bf88..15b9fbe2ab6 100644 --- a/src/server/game/Movement/Spline/MovementUtil.cpp +++ b/src/server/game/Movement/Spline/MovementUtil.cpp @@ -169,7 +169,7 @@ namespace Movement STRINGIZE(CanSwim ), // 0x00200000 STRINGIZE(UncompressedPath ), // 0x00400000 STRINGIZE(Unknown_0x800000 ), // 0x00800000 - STRINGIZE(Unknown_0x1000000 ), // 0x01000000 + STRINGIZE(FastSteering ), // 0x01000000 // Predicts spline only 500ms into the future for smoothing instead of 1s and turns off clientside obstacle detection STRINGIZE(Animation ), // 0x02000000 // Animationid (0...3), Uint32 Time, Not Compartible With Trajectory And Fall Movement STRINGIZE(Parabolic ), // 0x04000000 // Not Compartible With Fall Movement STRINGIZE(FadeObject ), // 0x08000000 |