Core/Movement: Update movement flags for 12.1.0
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE `player_condition`
|
||||
CHANGE COLUMN `MovementFlags1` `MovementFlags` int NOT NULL DEFAULT 0 AFTER `PowerTypeValue`,
|
||||
DROP COLUMN `MovementFlags2`;
|
||||
@@ -0,0 +1,2 @@
|
||||
UPDATE `trinity_string` SET `content_default` = 'Target''s moveFlags: %llu (%s)' WHERE `entry` = 1143;
|
||||
UPDATE `trinity_string` SET `content_default` = 'Target''s moveFlags set to: %llu (%s)' WHERE `entry` = 1144;
|
||||
@@ -1342,17 +1342,17 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
"LifetimeMaxPVPRank, AchievementLogic, Gender, NativeGender, AreaLogic, LfgLogic, CurrencyLogic, QuestKillID, QuestKillLogic, "
|
||||
"MinExpansionLevel, MaxExpansionLevel, MinAvgItemLevel, MaxAvgItemLevel, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, PhaseUseFlags, "
|
||||
"PhaseID, PhaseGroupID, Flags, ChrSpecializationIndex, ChrSpecializationRole, ModifierTreeID, PowerType, PowerTypeComp, PowerTypeValue, "
|
||||
"WeaponSubclassMask, MaxGuildLevel, MinGuildLevel, MaxExpansionTier, MinExpansionTier, MinPVPRank, MaxPVPRank, ContentTuningID, CovenantID, "
|
||||
"TraitNodeEntryLogic, SkillID1, SkillID2, SkillID3, SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, "
|
||||
"MaxSkill4, MinFactionID1, MinFactionID2, MinFactionID3, MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, "
|
||||
"PrevQuestID3, PrevQuestID4, CurrQuestID1, CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, "
|
||||
"CurrentCompletedQuestID3, CurrentCompletedQuestID4, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, "
|
||||
"ItemCount2, ItemCount3, ItemCount4, Explored1, Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraStacks1, "
|
||||
"AuraStacks2, AuraStacks3, AuraStacks4, Achievement1, Achievement2, Achievement3, Achievement4, AreaID1, AreaID2, AreaID3, AreaID4, "
|
||||
"LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, "
|
||||
"LfgValue4, CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, "
|
||||
"QuestKillMonster1, QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, "
|
||||
"MovementFlags2, RaceMask1, RaceMask2, TraitNodeEntryID1, TraitNodeEntryID2, TraitNodeEntryID3, TraitNodeEntryID4, TraitNodeEntryMinRank1, "
|
||||
"MovementFlags, WeaponSubclassMask, MaxGuildLevel, MinGuildLevel, MaxExpansionTier, MinExpansionTier, MinPVPRank, MaxPVPRank, "
|
||||
"ContentTuningID, CovenantID, TraitNodeEntryLogic, SkillID1, SkillID2, SkillID3, SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, "
|
||||
"MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MinFactionID1, MinFactionID2, MinFactionID3, MinReputation1, MinReputation2, MinReputation3, "
|
||||
"PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, "
|
||||
"CurrentCompletedQuestID2, CurrentCompletedQuestID3, CurrentCompletedQuestID4, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, "
|
||||
"ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, ItemCount4, Explored1, Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, "
|
||||
"AuraSpellID3, AuraSpellID4, AuraStacks1, AuraStacks2, AuraStacks3, AuraStacks4, Achievement1, Achievement2, Achievement3, Achievement4, "
|
||||
"AreaID1, AreaID2, AreaID3, AreaID4, LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, "
|
||||
"LfgValue1, LfgValue2, LfgValue3, LfgValue4, CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, "
|
||||
"CurrencyCount3, CurrencyCount4, QuestKillMonster1, QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, "
|
||||
"QuestKillMonster6, RaceMask1, RaceMask2, TraitNodeEntryID1, TraitNodeEntryID2, TraitNodeEntryID3, TraitNodeEntryID4, TraitNodeEntryMinRank1, "
|
||||
"TraitNodeEntryMinRank2, TraitNodeEntryMinRank3, TraitNodeEntryMinRank4, TraitNodeEntryMaxRank1, TraitNodeEntryMaxRank2, "
|
||||
"TraitNodeEntryMaxRank3, TraitNodeEntryMaxRank4 FROM player_condition WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH);
|
||||
PREPARE_MAX_ID_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT MAX(ID) + 1 FROM player_condition", CONNECTION_SYNCH);
|
||||
|
||||
@@ -3075,11 +3075,17 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio
|
||||
if (condition->LifetimeMaxPVPRank && player->m_activePlayerData->LifetimeMaxRank != condition->LifetimeMaxPVPRank)
|
||||
return false;
|
||||
|
||||
if (condition->MovementFlags[0] && !(player->GetUnitMovementFlags() & condition->MovementFlags[0]))
|
||||
return false;
|
||||
if (condition->MovementFlags)
|
||||
{
|
||||
static constexpr MovementFlags PlayerConditionSupportedMovementFlags = MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD
|
||||
| MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT | MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT
|
||||
| MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN | MOVEMENTFLAG_WALKING | MOVEMENTFLAG_DISABLE_GRAVITY
|
||||
| MOVEMENTFLAG_ROOT | MOVEMENTFLAG_FALLING | MOVEMENTFLAG_SWIMMING;
|
||||
|
||||
if (condition->MovementFlags[1] && !(player->GetExtraUnitMovementFlags() & condition->MovementFlags[1]))
|
||||
return false;
|
||||
MovementFlags requiredFlags = MovementFlags(condition->MovementFlags) & PlayerConditionSupportedMovementFlags;
|
||||
if ((player->GetUnitMovementFlags() & requiredFlags) != requiredFlags)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (condition->WeaponSubclassMask)
|
||||
{
|
||||
|
||||
@@ -4363,7 +4363,7 @@ struct PhaseXPhaseGroupLoadInfo
|
||||
|
||||
struct PlayerConditionLoadInfo
|
||||
{
|
||||
static constexpr DB2FieldMeta Fields[163] =
|
||||
static constexpr DB2FieldMeta Fields[162] =
|
||||
{
|
||||
{ .IsSigned = false, .Type = FT_INT, .Name = "ID" },
|
||||
{ .IsSigned = false, .Type = FT_STRING, .Name = "FailureDescription" },
|
||||
@@ -4414,6 +4414,7 @@ struct PlayerConditionLoadInfo
|
||||
{ .IsSigned = true, .Type = FT_BYTE, .Name = "PowerType" },
|
||||
{ .IsSigned = false, .Type = FT_BYTE, .Name = "PowerTypeComp" },
|
||||
{ .IsSigned = true, .Type = FT_BYTE, .Name = "PowerTypeValue" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "MovementFlags" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "WeaponSubclassMask" },
|
||||
{ .IsSigned = false, .Type = FT_BYTE, .Name = "MaxGuildLevel" },
|
||||
{ .IsSigned = false, .Type = FT_BYTE, .Name = "MinGuildLevel" },
|
||||
@@ -4512,8 +4513,6 @@ struct PlayerConditionLoadInfo
|
||||
{ .IsSigned = false, .Type = FT_INT, .Name = "QuestKillMonster4" },
|
||||
{ .IsSigned = false, .Type = FT_INT, .Name = "QuestKillMonster5" },
|
||||
{ .IsSigned = false, .Type = FT_INT, .Name = "QuestKillMonster6" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "MovementFlags1" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "MovementFlags2" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "RaceMask1" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "RaceMask2" },
|
||||
{ .IsSigned = true, .Type = FT_INT, .Name = "TraitNodeEntryID1" },
|
||||
@@ -4530,7 +4529,7 @@ struct PlayerConditionLoadInfo
|
||||
{ .IsSigned = false, .Type = FT_SHORT, .Name = "TraitNodeEntryMaxRank4" },
|
||||
};
|
||||
|
||||
static constexpr DB2LoadInfo Instance{ Fields, 163, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION };
|
||||
static constexpr DB2LoadInfo Instance{ Fields, 162, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION };
|
||||
};
|
||||
|
||||
struct PlayerDataElementAccountLoadInfo
|
||||
|
||||
@@ -17122,6 +17122,7 @@ struct PlayerConditionMeta
|
||||
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
|
||||
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
|
||||
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
|
||||
{ .Type = FT_INT, .ArraySize = 1, .IsSigned = true },
|
||||
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
|
||||
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false },
|
||||
{ .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true },
|
||||
@@ -17155,7 +17156,6 @@ struct PlayerConditionMeta
|
||||
{ .Type = FT_INT, .ArraySize = 4, .IsSigned = false },
|
||||
{ .Type = FT_INT, .ArraySize = 6, .IsSigned = false },
|
||||
{ .Type = FT_INT, .ArraySize = 2, .IsSigned = true },
|
||||
{ .Type = FT_INT, .ArraySize = 2, .IsSigned = true },
|
||||
{ .Type = FT_INT, .ArraySize = 4, .IsSigned = true },
|
||||
{ .Type = FT_SHORT, .ArraySize = 4, .IsSigned = false },
|
||||
{ .Type = FT_SHORT, .ArraySize = 4, .IsSigned = false },
|
||||
@@ -17168,7 +17168,7 @@ struct PlayerConditionMeta
|
||||
.ParentIndexField = -1,
|
||||
.FieldCount = 86,
|
||||
.FileFieldCount = 86,
|
||||
.LayoutHash = 0x7A9E50CE,
|
||||
.LayoutHash = 0x1D743D99,
|
||||
.Fields = Fields
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3310,6 +3310,7 @@ struct PlayerConditionEntry
|
||||
int8 PowerType;
|
||||
uint8 PowerTypeComp;
|
||||
int8 PowerTypeValue;
|
||||
int32 MovementFlags;
|
||||
int32 WeaponSubclassMask;
|
||||
uint8 MaxGuildLevel;
|
||||
uint8 MinGuildLevel;
|
||||
@@ -3343,7 +3344,6 @@ struct PlayerConditionEntry
|
||||
std::array<uint32, 4> CurrencyID;
|
||||
std::array<uint32, 4> CurrencyCount;
|
||||
std::array<uint32, 6> QuestKillMonster;
|
||||
std::array<int32, 2> MovementFlags;
|
||||
Trinity::RaceMask<int32, 2> RaceMask;
|
||||
std::array<int32, 4> TraitNodeEntryID;
|
||||
std::array<uint16, 4> TraitNodeEntryMinRank;
|
||||
|
||||
@@ -274,9 +274,7 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P
|
||||
|
||||
data << GetGUID(); // MoverGUID
|
||||
|
||||
data << uint32(unit->GetUnitMovementFlags());
|
||||
data << uint32(unit->GetExtraUnitMovementFlags());
|
||||
data << uint32(unit->GetExtraUnitMovementFlags2());
|
||||
data << uint64(unit->GetUnitMovementFlags());
|
||||
|
||||
data << uint32(unit->m_movementInfo.time); // MoveTime
|
||||
data << float(unit->GetPositionX());
|
||||
|
||||
@@ -15,22 +15,113 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef MovementInfo_h__
|
||||
#define MovementInfo_h__
|
||||
#ifndef TRINITYCORE_MOVEMENT_INFO_H
|
||||
#define TRINITYCORE_MOVEMENT_INFO_H
|
||||
|
||||
#include "EnumFlag.h"
|
||||
#include "ObjectGuid.h"
|
||||
#include "Optional.h"
|
||||
#include "Position.h"
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
|
||||
// EnumUtils: DESCRIBE THIS
|
||||
enum MovementFlags : uint64
|
||||
{
|
||||
MOVEMENTFLAG_NONE = 0x0000000000000000, // SKIP
|
||||
MOVEMENTFLAG_FORWARD = 0x0000000000000001,
|
||||
MOVEMENTFLAG_BACKWARD = 0x0000000000000002,
|
||||
MOVEMENTFLAG_STRAFE_LEFT = 0x0000000000000004,
|
||||
MOVEMENTFLAG_STRAFE_RIGHT = 0x0000000000000008,
|
||||
MOVEMENTFLAG_LEFT = 0x0000000000000010,
|
||||
MOVEMENTFLAG_RIGHT = 0x0000000000000020,
|
||||
MOVEMENTFLAG_PITCH_UP = 0x0000000000000040,
|
||||
MOVEMENTFLAG_PITCH_DOWN = 0x0000000000000080,
|
||||
MOVEMENTFLAG_WALKING = 0x0000000000000100, // Walking
|
||||
MOVEMENTFLAG_DISABLE_GRAVITY = 0x0000000000000200, // Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible.
|
||||
MOVEMENTFLAG_ROOT = 0x0000000000000400, // Must not be set along with MOVEMENTFLAG_MASK_MOVING
|
||||
MOVEMENTFLAG_FALLING = 0x0000000000000800, // damage dealt on that type of falling
|
||||
MOVEMENTFLAG_FALLING_FAR = 0x0000000000001000,
|
||||
MOVEMENTFLAG_PENDING_STOP = 0x0000000000002000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_STOP = 0x0000000000004000,
|
||||
MOVEMENTFLAG_PENDING_FORWARD = 0x0000000000008000,
|
||||
MOVEMENTFLAG_PENDING_BACKWARD = 0x0000000000010000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_LEFT = 0x0000000000020000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_RIGHT = 0x0000000000040000,
|
||||
MOVEMENTFLAG_PENDING_ROOT = 0x0000000000080000,
|
||||
MOVEMENTFLAG_SWIMMING = 0x0000000000100000, // appears with fly flag also
|
||||
MOVEMENTFLAG_ASCENDING = 0x0000000000200000, // press "space" when flying
|
||||
MOVEMENTFLAG_DESCENDING = 0x0000000000400000,
|
||||
MOVEMENTFLAG_CAN_FLY = 0x0000000000800000, // Appears when unit can fly. For example, appears when a player sits on a mount.
|
||||
MOVEMENTFLAG_FLYING = 0x0000000001000000, // unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity
|
||||
MOVEMENTFLAG_SPLINE_ELEVATION = 0x0000000002000000, // used for flight paths
|
||||
MOVEMENTFLAG_WATERWALKING = 0x0000000004000000, // prevent unit from falling through water
|
||||
MOVEMENTFLAG_FALLING_SLOW = 0x0000000008000000, // active rogue safe fall spell (passive)
|
||||
MOVEMENTFLAG_CANNOT_SWIM = 0x0000000010000000,
|
||||
MOVEMENTFLAG_DISABLE_COLLISION = 0x0000000020000000,
|
||||
MOVEMENTFLAG_KNOCKBACK = 0x0000000040000000,
|
||||
MOVEMENTFLAG_TOUCHING_GROUND = 0x0000000080000000, // terrain normal calculation is disabled if this flag is not present, client automatically handles setting this flag
|
||||
MOVEMENTFLAG_NO_STRAFE = 0x0000000100000000,
|
||||
MOVEMENTFLAG_NO_JUMPING = 0x0000000200000000,
|
||||
MOVEMENTFLAG_FULL_SPEED_TURNING = 0x0000000400000000,
|
||||
MOVEMENTFLAG_FULL_SPEED_PITCHING = 0x0000000800000000,
|
||||
MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING = 0x0000001000000000,
|
||||
MOVEMENTFLAG_WATERWALKING_FULL_PITCH = 0x0000002000000000,
|
||||
MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS = 0x0000004000000000,
|
||||
MOVEMENTFLAG_CAN_TURN_WHILE_FALLING = 0x0000008000000000,
|
||||
MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES = 0x0000010000000000,
|
||||
MOVEMENTFLAG_CAN_DOUBLE_JUMP = 0x0000020000000000,
|
||||
MOVEMENTFLAG_DOUBLE_JUMP = 0x0000040000000000,
|
||||
MOVEMENTFLAG_UNK43 = 0x0000080000000000, // old MovementFlags2 0x8000
|
||||
MOVEMENTFLAG_DISABLE_INERTIA = 0x0000100000000000,
|
||||
MOVEMENTFLAG_CAN_ADV_FLY = 0x0000200000000000,
|
||||
MOVEMENTFLAG_ADV_FLYING = 0x0000400000000000,
|
||||
MOVEMENTFLAG_UNK47 = 0x0000800000000000, // old MovementFlags3 0x8
|
||||
MOVEMENTFLAG_UNK48 = 0x0001000000000000, // old MovementFlags3 0x10
|
||||
MOVEMENTFLAG_FALLING_ADV_FLY_DISMOUNT = 0x0002000000000000, // falling after dismounting while adv flying
|
||||
MOVEMENTFLAG_UNK50 = 0x0004000000000000, // old MovementFlags3 0x200
|
||||
MOVEMENTFLAG_WALKING_ON_WATER = 0x0008000000000000, // currently on water surface
|
||||
MOVEMENTFLAG_CAN_DRIVE = 0x0010000000000000,
|
||||
MOVEMENTFLAG_DRIVING_FORWARD = 0x0020000000000000,
|
||||
MOVEMENTFLAG_DRIVING_BACKWARD = 0x0040000000000000,
|
||||
MOVEMENTFLAG_UNK55 = 0x0080000000000000, // old MovementFlags3 0x20000
|
||||
MOVEMENTFLAG_UNK56 = 0x0100000000000000, // old MovementFlags3 0x40000
|
||||
MOVEMENTFLAG_UNK57 = 0x0200000000000000, // old MovementFlags3 0x80000
|
||||
MOVEMENTFLAG_UNK58 = 0x0400000000000000,
|
||||
MOVEMENTFLAG_HOVER = 0x0800000000000000,
|
||||
|
||||
MOVEMENTFLAG_MASK_MOVING =
|
||||
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT |
|
||||
MOVEMENTFLAG_FALLING | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING,// SKIP
|
||||
|
||||
MOVEMENTFLAG_MASK_TURNING =
|
||||
MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT | MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN, // SKIP
|
||||
|
||||
MOVEMENTFLAG_MASK_MOVING_FLY =
|
||||
MOVEMENTFLAG_FLYING | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING, // SKIP
|
||||
|
||||
// Movement flags allowed for creature in CreateObject - we need to keep all other enabled serverside
|
||||
// to properly calculate all movement
|
||||
MOVEMENTFLAG_MASK_CREATURE_ALLOWED =
|
||||
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_ROOT | MOVEMENTFLAG_SWIMMING |
|
||||
MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_WATERWALKING | MOVEMENTFLAG_FALLING_SLOW | MOVEMENTFLAG_HOVER | MOVEMENTFLAG_DISABLE_COLLISION, // SKIP
|
||||
|
||||
/// @todo if needed: add more flags to this masks that are exclusive to players
|
||||
MOVEMENTFLAG_MASK_PLAYER_ONLY =
|
||||
MOVEMENTFLAG_FLYING, // SKIP
|
||||
|
||||
/// Movement flags that have change status opcodes associated for players
|
||||
MOVEMENTFLAG_MASK_HAS_PLAYER_STATUS_OPCODE = MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_ROOT |
|
||||
MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_WATERWALKING | MOVEMENTFLAG_FALLING_SLOW | MOVEMENTFLAG_HOVER | MOVEMENTFLAG_DISABLE_COLLISION // SKIP
|
||||
};
|
||||
|
||||
DEFINE_ENUM_FLAG(MovementFlags);
|
||||
|
||||
struct MovementInfo
|
||||
{
|
||||
// common
|
||||
ObjectGuid guid;
|
||||
uint32 flags = 0;
|
||||
uint32 flags2 = 0;
|
||||
uint32 flags3 = 0;
|
||||
MovementFlags flags = MOVEMENTFLAG_NONE;
|
||||
Position pos;
|
||||
uint32 time = 0;
|
||||
|
||||
@@ -116,23 +207,11 @@ struct MovementInfo
|
||||
|
||||
Optional<ObjectGuid> standingOnGameObjectGUID;
|
||||
|
||||
uint32 GetMovementFlags() const { return flags; }
|
||||
void SetMovementFlags(uint32 flag) { flags = flag; }
|
||||
void AddMovementFlag(uint32 flag) { flags |= flag; }
|
||||
void RemoveMovementFlag(uint32 flag) { flags &= ~flag; }
|
||||
bool HasMovementFlag(uint32 flag) const { return (flags & flag) != 0; }
|
||||
|
||||
uint32 GetExtraMovementFlags() const { return flags2; }
|
||||
void SetExtraMovementFlags(uint32 flag) { flags2 = flag; }
|
||||
void AddExtraMovementFlag(uint32 flag) { flags2 |= flag; }
|
||||
void RemoveExtraMovementFlag(uint32 flag) { flags2 &= ~flag; }
|
||||
bool HasExtraMovementFlag(uint32 flag) const { return (flags2 & flag) != 0; }
|
||||
|
||||
uint32 GetExtraMovementFlags2() const { return flags3; }
|
||||
void SetExtraMovementFlags2(uint32 flag) { flags3 = flag; }
|
||||
void AddExtraMovementFlag2(uint32 flag) { flags3 |= flag; }
|
||||
void RemoveExtraMovementFlag2(uint32 flag) { flags3 &= ~flag; }
|
||||
bool HasExtraMovementFlag2(uint32 flag) const { return (flags3 & flag) != 0; }
|
||||
MovementFlags GetMovementFlags() const { return flags; }
|
||||
void SetMovementFlags(MovementFlags flag) { flags = flag; }
|
||||
void AddMovementFlag(MovementFlags flag) { flags |= flag; }
|
||||
void RemoveMovementFlag(MovementFlags flag) { flags &= ~flag; }
|
||||
bool HasMovementFlag(MovementFlags flag) const { return (flags & flag) != 0; }
|
||||
|
||||
uint32 GetFallTime() const { return jump.fallTime; }
|
||||
void SetFallTime(uint32 fallTime) { jump.fallTime = fallTime; }
|
||||
@@ -215,4 +294,4 @@ private:
|
||||
float _modMagnitude = 1.0f;
|
||||
};
|
||||
|
||||
#endif // MovementInfo_h__
|
||||
#endif // TRINITYCORE_MOVEMENT_INFO_H
|
||||
|
||||
@@ -168,9 +168,7 @@ void MovementInfo::OutDebug()
|
||||
{
|
||||
TC_LOG_DEBUG("misc", "MOVEMENT INFO");
|
||||
TC_LOG_DEBUG("misc", "{}", guid.ToString());
|
||||
TC_LOG_DEBUG("misc", "flags {} ({})", Movement::MovementFlags_ToString(MovementFlags(flags)), flags);
|
||||
TC_LOG_DEBUG("misc", "flags2 {} ({})", Movement::MovementFlags_ToString(MovementFlags2(flags2)), flags2);
|
||||
TC_LOG_DEBUG("misc", "flags3 {} ({})", Movement::MovementFlags_ToString(MovementFlags3(flags3)), flags3);
|
||||
TC_LOG_DEBUG("misc", "flags {} ({})", Movement::MovementFlags_ToString(flags), flags);
|
||||
TC_LOG_DEBUG("misc", "time {} current time {}", time, getMSTime());
|
||||
TC_LOG_DEBUG("misc", "position: `{}`", pos);
|
||||
if (!transport.guid.IsEmpty())
|
||||
@@ -186,7 +184,7 @@ void MovementInfo::OutDebug()
|
||||
TC_LOG_DEBUG("misc", "vehicleId: {}", transport.vehicleId);
|
||||
}
|
||||
|
||||
if ((flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
if (flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING | MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING))
|
||||
TC_LOG_DEBUG("misc", "pitch: {}", pitch);
|
||||
|
||||
if (flags & MOVEMENTFLAG_FALLING || jump.fallTime)
|
||||
|
||||
@@ -0,0 +1,238 @@
|
||||
/*
|
||||
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "MovementInfo.h"
|
||||
#include "Define.h"
|
||||
#include "SmartEnum.h"
|
||||
#include <stdexcept>
|
||||
|
||||
namespace Trinity::Impl::EnumUtilsImpl
|
||||
{
|
||||
|
||||
/********************************************************************\
|
||||
|* data for enum 'MovementFlags' in 'MovementInfo.h' auto-generated *|
|
||||
\********************************************************************/
|
||||
template <>
|
||||
TC_API_EXPORT EnumText EnumUtils<MovementFlags>::ToString(MovementFlags value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG_FORWARD: return { "MOVEMENTFLAG_FORWARD", "MOVEMENTFLAG_FORWARD", "" };
|
||||
case MOVEMENTFLAG_BACKWARD: return { "MOVEMENTFLAG_BACKWARD", "MOVEMENTFLAG_BACKWARD", "" };
|
||||
case MOVEMENTFLAG_STRAFE_LEFT: return { "MOVEMENTFLAG_STRAFE_LEFT", "MOVEMENTFLAG_STRAFE_LEFT", "" };
|
||||
case MOVEMENTFLAG_STRAFE_RIGHT: return { "MOVEMENTFLAG_STRAFE_RIGHT", "MOVEMENTFLAG_STRAFE_RIGHT", "" };
|
||||
case MOVEMENTFLAG_LEFT: return { "MOVEMENTFLAG_LEFT", "MOVEMENTFLAG_LEFT", "" };
|
||||
case MOVEMENTFLAG_RIGHT: return { "MOVEMENTFLAG_RIGHT", "MOVEMENTFLAG_RIGHT", "" };
|
||||
case MOVEMENTFLAG_PITCH_UP: return { "MOVEMENTFLAG_PITCH_UP", "MOVEMENTFLAG_PITCH_UP", "" };
|
||||
case MOVEMENTFLAG_PITCH_DOWN: return { "MOVEMENTFLAG_PITCH_DOWN", "MOVEMENTFLAG_PITCH_DOWN", "" };
|
||||
case MOVEMENTFLAG_WALKING: return { "MOVEMENTFLAG_WALKING", "MOVEMENTFLAG_WALKING", "Walking" };
|
||||
case MOVEMENTFLAG_DISABLE_GRAVITY: return { "MOVEMENTFLAG_DISABLE_GRAVITY", "MOVEMENTFLAG_DISABLE_GRAVITY", "Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible." };
|
||||
case MOVEMENTFLAG_ROOT: return { "MOVEMENTFLAG_ROOT", "MOVEMENTFLAG_ROOT", "Must not be set along with MOVEMENTFLAG_MASK_MOVING" };
|
||||
case MOVEMENTFLAG_FALLING: return { "MOVEMENTFLAG_FALLING", "MOVEMENTFLAG_FALLING", "damage dealt on that type of falling" };
|
||||
case MOVEMENTFLAG_FALLING_FAR: return { "MOVEMENTFLAG_FALLING_FAR", "MOVEMENTFLAG_FALLING_FAR", "" };
|
||||
case MOVEMENTFLAG_PENDING_STOP: return { "MOVEMENTFLAG_PENDING_STOP", "MOVEMENTFLAG_PENDING_STOP", "" };
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_STOP: return { "MOVEMENTFLAG_PENDING_STRAFE_STOP", "MOVEMENTFLAG_PENDING_STRAFE_STOP", "" };
|
||||
case MOVEMENTFLAG_PENDING_FORWARD: return { "MOVEMENTFLAG_PENDING_FORWARD", "MOVEMENTFLAG_PENDING_FORWARD", "" };
|
||||
case MOVEMENTFLAG_PENDING_BACKWARD: return { "MOVEMENTFLAG_PENDING_BACKWARD", "MOVEMENTFLAG_PENDING_BACKWARD", "" };
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_LEFT: return { "MOVEMENTFLAG_PENDING_STRAFE_LEFT", "MOVEMENTFLAG_PENDING_STRAFE_LEFT", "" };
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_RIGHT: return { "MOVEMENTFLAG_PENDING_STRAFE_RIGHT", "MOVEMENTFLAG_PENDING_STRAFE_RIGHT", "" };
|
||||
case MOVEMENTFLAG_PENDING_ROOT: return { "MOVEMENTFLAG_PENDING_ROOT", "MOVEMENTFLAG_PENDING_ROOT", "" };
|
||||
case MOVEMENTFLAG_SWIMMING: return { "MOVEMENTFLAG_SWIMMING", "MOVEMENTFLAG_SWIMMING", "appears with fly flag also" };
|
||||
case MOVEMENTFLAG_ASCENDING: return { "MOVEMENTFLAG_ASCENDING", "MOVEMENTFLAG_ASCENDING", "press \042space\042 when flying" };
|
||||
case MOVEMENTFLAG_DESCENDING: return { "MOVEMENTFLAG_DESCENDING", "MOVEMENTFLAG_DESCENDING", "" };
|
||||
case MOVEMENTFLAG_CAN_FLY: return { "MOVEMENTFLAG_CAN_FLY", "MOVEMENTFLAG_CAN_FLY", "Appears when unit can fly. For example, appears when a player sits on a mount." };
|
||||
case MOVEMENTFLAG_FLYING: return { "MOVEMENTFLAG_FLYING", "MOVEMENTFLAG_FLYING", "unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity" };
|
||||
case MOVEMENTFLAG_SPLINE_ELEVATION: return { "MOVEMENTFLAG_SPLINE_ELEVATION", "MOVEMENTFLAG_SPLINE_ELEVATION", "used for flight paths" };
|
||||
case MOVEMENTFLAG_WATERWALKING: return { "MOVEMENTFLAG_WATERWALKING", "MOVEMENTFLAG_WATERWALKING", "prevent unit from falling through water" };
|
||||
case MOVEMENTFLAG_FALLING_SLOW: return { "MOVEMENTFLAG_FALLING_SLOW", "MOVEMENTFLAG_FALLING_SLOW", "active rogue safe fall spell (passive)" };
|
||||
case MOVEMENTFLAG_CANNOT_SWIM: return { "MOVEMENTFLAG_CANNOT_SWIM", "MOVEMENTFLAG_CANNOT_SWIM", "" };
|
||||
case MOVEMENTFLAG_DISABLE_COLLISION: return { "MOVEMENTFLAG_DISABLE_COLLISION", "MOVEMENTFLAG_DISABLE_COLLISION", "" };
|
||||
case MOVEMENTFLAG_KNOCKBACK: return { "MOVEMENTFLAG_KNOCKBACK", "MOVEMENTFLAG_KNOCKBACK", "" };
|
||||
case MOVEMENTFLAG_TOUCHING_GROUND: return { "MOVEMENTFLAG_TOUCHING_GROUND", "MOVEMENTFLAG_TOUCHING_GROUND", "terrain normal calculation is disabled if this flag is not present, client automatically handles setting this flag" };
|
||||
case MOVEMENTFLAG_NO_STRAFE: return { "MOVEMENTFLAG_NO_STRAFE", "MOVEMENTFLAG_NO_STRAFE", "" };
|
||||
case MOVEMENTFLAG_NO_JUMPING: return { "MOVEMENTFLAG_NO_JUMPING", "MOVEMENTFLAG_NO_JUMPING", "" };
|
||||
case MOVEMENTFLAG_FULL_SPEED_TURNING: return { "MOVEMENTFLAG_FULL_SPEED_TURNING", "MOVEMENTFLAG_FULL_SPEED_TURNING", "" };
|
||||
case MOVEMENTFLAG_FULL_SPEED_PITCHING: return { "MOVEMENTFLAG_FULL_SPEED_PITCHING", "MOVEMENTFLAG_FULL_SPEED_PITCHING", "" };
|
||||
case MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING: return { "MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING", "MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING", "" };
|
||||
case MOVEMENTFLAG_WATERWALKING_FULL_PITCH: return { "MOVEMENTFLAG_WATERWALKING_FULL_PITCH", "MOVEMENTFLAG_WATERWALKING_FULL_PITCH", "" };
|
||||
case MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS: return { "MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS", "MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS", "" };
|
||||
case MOVEMENTFLAG_CAN_TURN_WHILE_FALLING: return { "MOVEMENTFLAG_CAN_TURN_WHILE_FALLING", "MOVEMENTFLAG_CAN_TURN_WHILE_FALLING", "" };
|
||||
case MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES: return { "MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES", "MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES", "" };
|
||||
case MOVEMENTFLAG_CAN_DOUBLE_JUMP: return { "MOVEMENTFLAG_CAN_DOUBLE_JUMP", "MOVEMENTFLAG_CAN_DOUBLE_JUMP", "" };
|
||||
case MOVEMENTFLAG_DOUBLE_JUMP: return { "MOVEMENTFLAG_DOUBLE_JUMP", "MOVEMENTFLAG_DOUBLE_JUMP", "" };
|
||||
case MOVEMENTFLAG_UNK43: return { "MOVEMENTFLAG_UNK43", "MOVEMENTFLAG_UNK43", "old MovementFlags2 0x8000" };
|
||||
case MOVEMENTFLAG_DISABLE_INERTIA: return { "MOVEMENTFLAG_DISABLE_INERTIA", "MOVEMENTFLAG_DISABLE_INERTIA", "" };
|
||||
case MOVEMENTFLAG_CAN_ADV_FLY: return { "MOVEMENTFLAG_CAN_ADV_FLY", "MOVEMENTFLAG_CAN_ADV_FLY", "" };
|
||||
case MOVEMENTFLAG_ADV_FLYING: return { "MOVEMENTFLAG_ADV_FLYING", "MOVEMENTFLAG_ADV_FLYING", "" };
|
||||
case MOVEMENTFLAG_UNK47: return { "MOVEMENTFLAG_UNK47", "MOVEMENTFLAG_UNK47", "old MovementFlags3 0x8" };
|
||||
case MOVEMENTFLAG_UNK48: return { "MOVEMENTFLAG_UNK48", "MOVEMENTFLAG_UNK48", "old MovementFlags3 0x10" };
|
||||
case MOVEMENTFLAG_FALLING_ADV_FLY_DISMOUNT: return { "MOVEMENTFLAG_FALLING_ADV_FLY_DISMOUNT", "MOVEMENTFLAG_FALLING_ADV_FLY_DISMOUNT", "falling after dismounting while adv flying" };
|
||||
case MOVEMENTFLAG_UNK50: return { "MOVEMENTFLAG_UNK50", "MOVEMENTFLAG_UNK50", "old MovementFlags3 0x200" };
|
||||
case MOVEMENTFLAG_WALKING_ON_WATER: return { "MOVEMENTFLAG_WALKING_ON_WATER", "MOVEMENTFLAG_WALKING_ON_WATER", "currently on water surface" };
|
||||
case MOVEMENTFLAG_CAN_DRIVE: return { "MOVEMENTFLAG_CAN_DRIVE", "MOVEMENTFLAG_CAN_DRIVE", "" };
|
||||
case MOVEMENTFLAG_DRIVING_FORWARD: return { "MOVEMENTFLAG_DRIVING_FORWARD", "MOVEMENTFLAG_DRIVING_FORWARD", "" };
|
||||
case MOVEMENTFLAG_DRIVING_BACKWARD: return { "MOVEMENTFLAG_DRIVING_BACKWARD", "MOVEMENTFLAG_DRIVING_BACKWARD", "" };
|
||||
case MOVEMENTFLAG_UNK55: return { "MOVEMENTFLAG_UNK55", "MOVEMENTFLAG_UNK55", "old MovementFlags3 0x20000" };
|
||||
case MOVEMENTFLAG_UNK56: return { "MOVEMENTFLAG_UNK56", "MOVEMENTFLAG_UNK56", "old MovementFlags3 0x40000" };
|
||||
case MOVEMENTFLAG_UNK57: return { "MOVEMENTFLAG_UNK57", "MOVEMENTFLAG_UNK57", "old MovementFlags3 0x80000" };
|
||||
case MOVEMENTFLAG_UNK58: return { "MOVEMENTFLAG_UNK58", "MOVEMENTFLAG_UNK58", "" };
|
||||
case MOVEMENTFLAG_HOVER: return { "MOVEMENTFLAG_HOVER", "MOVEMENTFLAG_HOVER", "" };
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags>::Count() { return 60; }
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT MovementFlags EnumUtils<MovementFlags>::FromIndex(size_t index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case 0: return MOVEMENTFLAG_FORWARD;
|
||||
case 1: return MOVEMENTFLAG_BACKWARD;
|
||||
case 2: return MOVEMENTFLAG_STRAFE_LEFT;
|
||||
case 3: return MOVEMENTFLAG_STRAFE_RIGHT;
|
||||
case 4: return MOVEMENTFLAG_LEFT;
|
||||
case 5: return MOVEMENTFLAG_RIGHT;
|
||||
case 6: return MOVEMENTFLAG_PITCH_UP;
|
||||
case 7: return MOVEMENTFLAG_PITCH_DOWN;
|
||||
case 8: return MOVEMENTFLAG_WALKING;
|
||||
case 9: return MOVEMENTFLAG_DISABLE_GRAVITY;
|
||||
case 10: return MOVEMENTFLAG_ROOT;
|
||||
case 11: return MOVEMENTFLAG_FALLING;
|
||||
case 12: return MOVEMENTFLAG_FALLING_FAR;
|
||||
case 13: return MOVEMENTFLAG_PENDING_STOP;
|
||||
case 14: return MOVEMENTFLAG_PENDING_STRAFE_STOP;
|
||||
case 15: return MOVEMENTFLAG_PENDING_FORWARD;
|
||||
case 16: return MOVEMENTFLAG_PENDING_BACKWARD;
|
||||
case 17: return MOVEMENTFLAG_PENDING_STRAFE_LEFT;
|
||||
case 18: return MOVEMENTFLAG_PENDING_STRAFE_RIGHT;
|
||||
case 19: return MOVEMENTFLAG_PENDING_ROOT;
|
||||
case 20: return MOVEMENTFLAG_SWIMMING;
|
||||
case 21: return MOVEMENTFLAG_ASCENDING;
|
||||
case 22: return MOVEMENTFLAG_DESCENDING;
|
||||
case 23: return MOVEMENTFLAG_CAN_FLY;
|
||||
case 24: return MOVEMENTFLAG_FLYING;
|
||||
case 25: return MOVEMENTFLAG_SPLINE_ELEVATION;
|
||||
case 26: return MOVEMENTFLAG_WATERWALKING;
|
||||
case 27: return MOVEMENTFLAG_FALLING_SLOW;
|
||||
case 28: return MOVEMENTFLAG_CANNOT_SWIM;
|
||||
case 29: return MOVEMENTFLAG_DISABLE_COLLISION;
|
||||
case 30: return MOVEMENTFLAG_KNOCKBACK;
|
||||
case 31: return MOVEMENTFLAG_TOUCHING_GROUND;
|
||||
case 32: return MOVEMENTFLAG_NO_STRAFE;
|
||||
case 33: return MOVEMENTFLAG_NO_JUMPING;
|
||||
case 34: return MOVEMENTFLAG_FULL_SPEED_TURNING;
|
||||
case 35: return MOVEMENTFLAG_FULL_SPEED_PITCHING;
|
||||
case 36: return MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING;
|
||||
case 37: return MOVEMENTFLAG_WATERWALKING_FULL_PITCH;
|
||||
case 38: return MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS;
|
||||
case 39: return MOVEMENTFLAG_CAN_TURN_WHILE_FALLING;
|
||||
case 40: return MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES;
|
||||
case 41: return MOVEMENTFLAG_CAN_DOUBLE_JUMP;
|
||||
case 42: return MOVEMENTFLAG_DOUBLE_JUMP;
|
||||
case 43: return MOVEMENTFLAG_UNK43;
|
||||
case 44: return MOVEMENTFLAG_DISABLE_INERTIA;
|
||||
case 45: return MOVEMENTFLAG_CAN_ADV_FLY;
|
||||
case 46: return MOVEMENTFLAG_ADV_FLYING;
|
||||
case 47: return MOVEMENTFLAG_UNK47;
|
||||
case 48: return MOVEMENTFLAG_UNK48;
|
||||
case 49: return MOVEMENTFLAG_FALLING_ADV_FLY_DISMOUNT;
|
||||
case 50: return MOVEMENTFLAG_UNK50;
|
||||
case 51: return MOVEMENTFLAG_WALKING_ON_WATER;
|
||||
case 52: return MOVEMENTFLAG_CAN_DRIVE;
|
||||
case 53: return MOVEMENTFLAG_DRIVING_FORWARD;
|
||||
case 54: return MOVEMENTFLAG_DRIVING_BACKWARD;
|
||||
case 55: return MOVEMENTFLAG_UNK55;
|
||||
case 56: return MOVEMENTFLAG_UNK56;
|
||||
case 57: return MOVEMENTFLAG_UNK57;
|
||||
case 58: return MOVEMENTFLAG_UNK58;
|
||||
case 59: return MOVEMENTFLAG_HOVER;
|
||||
default: throw std::out_of_range("index");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags>::ToIndex(MovementFlags value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG_FORWARD: return 0;
|
||||
case MOVEMENTFLAG_BACKWARD: return 1;
|
||||
case MOVEMENTFLAG_STRAFE_LEFT: return 2;
|
||||
case MOVEMENTFLAG_STRAFE_RIGHT: return 3;
|
||||
case MOVEMENTFLAG_LEFT: return 4;
|
||||
case MOVEMENTFLAG_RIGHT: return 5;
|
||||
case MOVEMENTFLAG_PITCH_UP: return 6;
|
||||
case MOVEMENTFLAG_PITCH_DOWN: return 7;
|
||||
case MOVEMENTFLAG_WALKING: return 8;
|
||||
case MOVEMENTFLAG_DISABLE_GRAVITY: return 9;
|
||||
case MOVEMENTFLAG_ROOT: return 10;
|
||||
case MOVEMENTFLAG_FALLING: return 11;
|
||||
case MOVEMENTFLAG_FALLING_FAR: return 12;
|
||||
case MOVEMENTFLAG_PENDING_STOP: return 13;
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_STOP: return 14;
|
||||
case MOVEMENTFLAG_PENDING_FORWARD: return 15;
|
||||
case MOVEMENTFLAG_PENDING_BACKWARD: return 16;
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_LEFT: return 17;
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_RIGHT: return 18;
|
||||
case MOVEMENTFLAG_PENDING_ROOT: return 19;
|
||||
case MOVEMENTFLAG_SWIMMING: return 20;
|
||||
case MOVEMENTFLAG_ASCENDING: return 21;
|
||||
case MOVEMENTFLAG_DESCENDING: return 22;
|
||||
case MOVEMENTFLAG_CAN_FLY: return 23;
|
||||
case MOVEMENTFLAG_FLYING: return 24;
|
||||
case MOVEMENTFLAG_SPLINE_ELEVATION: return 25;
|
||||
case MOVEMENTFLAG_WATERWALKING: return 26;
|
||||
case MOVEMENTFLAG_FALLING_SLOW: return 27;
|
||||
case MOVEMENTFLAG_CANNOT_SWIM: return 28;
|
||||
case MOVEMENTFLAG_DISABLE_COLLISION: return 29;
|
||||
case MOVEMENTFLAG_KNOCKBACK: return 30;
|
||||
case MOVEMENTFLAG_TOUCHING_GROUND: return 31;
|
||||
case MOVEMENTFLAG_NO_STRAFE: return 32;
|
||||
case MOVEMENTFLAG_NO_JUMPING: return 33;
|
||||
case MOVEMENTFLAG_FULL_SPEED_TURNING: return 34;
|
||||
case MOVEMENTFLAG_FULL_SPEED_PITCHING: return 35;
|
||||
case MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING: return 36;
|
||||
case MOVEMENTFLAG_WATERWALKING_FULL_PITCH: return 37;
|
||||
case MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS: return 38;
|
||||
case MOVEMENTFLAG_CAN_TURN_WHILE_FALLING: return 39;
|
||||
case MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES: return 40;
|
||||
case MOVEMENTFLAG_CAN_DOUBLE_JUMP: return 41;
|
||||
case MOVEMENTFLAG_DOUBLE_JUMP: return 42;
|
||||
case MOVEMENTFLAG_UNK43: return 43;
|
||||
case MOVEMENTFLAG_DISABLE_INERTIA: return 44;
|
||||
case MOVEMENTFLAG_CAN_ADV_FLY: return 45;
|
||||
case MOVEMENTFLAG_ADV_FLYING: return 46;
|
||||
case MOVEMENTFLAG_UNK47: return 47;
|
||||
case MOVEMENTFLAG_UNK48: return 48;
|
||||
case MOVEMENTFLAG_FALLING_ADV_FLY_DISMOUNT: return 49;
|
||||
case MOVEMENTFLAG_UNK50: return 50;
|
||||
case MOVEMENTFLAG_WALKING_ON_WATER: return 51;
|
||||
case MOVEMENTFLAG_CAN_DRIVE: return 52;
|
||||
case MOVEMENTFLAG_DRIVING_FORWARD: return 53;
|
||||
case MOVEMENTFLAG_DRIVING_BACKWARD: return 54;
|
||||
case MOVEMENTFLAG_UNK55: return 55;
|
||||
case MOVEMENTFLAG_UNK56: return 56;
|
||||
case MOVEMENTFLAG_UNK57: return 57;
|
||||
case MOVEMENTFLAG_UNK58: return 58;
|
||||
case MOVEMENTFLAG_HOVER: return 59;
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28002,7 +28002,7 @@ void Player::ResummonBattlePetTemporaryUnSummonedIfAny()
|
||||
|
||||
bool Player::IsPetNeedBeTemporaryUnsummoned() const
|
||||
{
|
||||
return !IsInWorld() || !IsAlive() || HasUnitMovementFlag(MOVEMENTFLAG_FLYING) || HasExtraUnitMovementFlag2(MOVEMENTFLAG3_ADV_FLYING);
|
||||
return !IsInWorld() || !IsAlive() || HasUnitMovementFlag(MOVEMENTFLAG_FLYING) || HasUnitMovementFlag(MOVEMENTFLAG_ADV_FLYING);
|
||||
}
|
||||
|
||||
bool Player::CanSeeGossipOn(Creature const* creature) const
|
||||
|
||||
@@ -13760,13 +13760,13 @@ bool Unit::SetCollision(bool disable)
|
||||
|
||||
bool Unit::SetStrafingDisabled(bool disable)
|
||||
{
|
||||
if (disable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE))
|
||||
if (disable == HasUnitMovementFlag(MOVEMENTFLAG_NO_STRAFE))
|
||||
return false;
|
||||
|
||||
if (disable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_NO_STRAFE);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_NO_STRAFE);
|
||||
|
||||
static OpcodeServer const disableStrafingOpcodeTable[2] =
|
||||
{
|
||||
@@ -13791,13 +13791,13 @@ bool Unit::SetStrafingDisabled(bool disable)
|
||||
|
||||
bool Unit::SetJumpingDisabled(bool disable)
|
||||
{
|
||||
if (disable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING))
|
||||
if (disable == HasUnitMovementFlag(MOVEMENTFLAG_NO_JUMPING))
|
||||
return false;
|
||||
|
||||
if (disable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_NO_JUMPING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_NO_JUMPING);
|
||||
|
||||
static OpcodeServer const disableJumpingOpcodeTable[2] =
|
||||
{
|
||||
@@ -13822,13 +13822,13 @@ bool Unit::SetJumpingDisabled(bool disable)
|
||||
|
||||
bool Unit::SetEnableFullSpeedTurning(bool enable)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_TURNING))
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_TURNING))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_TURNING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_TURNING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_TURNING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_TURNING);
|
||||
|
||||
static constexpr OpcodeServer fullSpeedTurningOpcodeTable[2] =
|
||||
{
|
||||
@@ -13853,13 +13853,13 @@ bool Unit::SetEnableFullSpeedTurning(bool enable)
|
||||
|
||||
bool Unit::SetEnableFullSpeedPitching(bool enable)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING))
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_PITCHING))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_PITCHING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_PITCHING);
|
||||
|
||||
static constexpr OpcodeServer fullSpeedPitchingOpcodeTable[2] =
|
||||
{
|
||||
@@ -13884,13 +13884,13 @@ bool Unit::SetEnableFullSpeedPitching(bool enable)
|
||||
|
||||
bool Unit::SetAlwaysAllowPitching(bool enable)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING);
|
||||
|
||||
static constexpr OpcodeServer alwaysAllowPitchingOpcodeTable[2] =
|
||||
{
|
||||
@@ -13918,13 +13918,13 @@ bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable)
|
||||
if (GetTypeId() != TYPEID_PLAYER)
|
||||
return false;
|
||||
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS))
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_SWIM_TO_FLY_TRANS);
|
||||
|
||||
static OpcodeServer const swimToFlyTransOpcodeTable[2] =
|
||||
{
|
||||
@@ -13950,13 +13950,13 @@ bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable)
|
||||
bool Unit::SetCanTurnWhileFalling(bool enable)
|
||||
{
|
||||
// Temporarily disabled for short lived auras that unapply before client had time to ACK applying
|
||||
//if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING))
|
||||
//if (enable == HasUnitMovementFlag(MOVEMENTFLAG_CAN_TURN_WHILE_FALLING))
|
||||
// return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_TURN_WHILE_FALLING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_TURN_WHILE_FALLING);
|
||||
|
||||
static OpcodeServer const canTurnWhileFallingOpcodeTable[2] =
|
||||
{
|
||||
@@ -13981,13 +13981,13 @@ bool Unit::SetCanTurnWhileFalling(bool enable)
|
||||
|
||||
bool Unit::SetCanDoubleJump(bool enable)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_DOUBLE_JUMP))
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_CAN_DOUBLE_JUMP))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_DOUBLE_JUMP);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_DOUBLE_JUMP);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_DOUBLE_JUMP);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_DOUBLE_JUMP);
|
||||
|
||||
static OpcodeServer const doubleJumpOpcodeTable[2] =
|
||||
{
|
||||
@@ -14012,13 +14012,13 @@ bool Unit::SetCanDoubleJump(bool enable)
|
||||
|
||||
bool Unit::SetDisableInertia(bool disable)
|
||||
{
|
||||
if (disable == HasExtraUnitMovementFlag2(MOVEMENTFLAG3_DISABLE_INERTIA))
|
||||
if (disable == HasUnitMovementFlag(MOVEMENTFLAG_DISABLE_INERTIA))
|
||||
return false;
|
||||
|
||||
if (disable)
|
||||
AddExtraUnitMovementFlag2(MOVEMENTFLAG3_DISABLE_INERTIA);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_INERTIA);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag2(MOVEMENTFLAG3_DISABLE_INERTIA);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_DISABLE_INERTIA);
|
||||
|
||||
static OpcodeServer const disableInertiaOpcodeTable[2] =
|
||||
{
|
||||
@@ -14043,13 +14043,13 @@ bool Unit::SetDisableInertia(bool disable)
|
||||
|
||||
bool Unit::SetCanAdvFly(bool enable)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag2(MOVEMENTFLAG3_CAN_ADV_FLY))
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_CAN_ADV_FLY))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag2(MOVEMENTFLAG3_CAN_ADV_FLY);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_ADV_FLY);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag2(MOVEMENTFLAG3_CAN_ADV_FLY | MOVEMENTFLAG3_ADV_FLYING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_ADV_FLY | MOVEMENTFLAG_ADV_FLYING);
|
||||
|
||||
static OpcodeServer const advFlyOpcodeTable[2] =
|
||||
{
|
||||
@@ -14074,13 +14074,13 @@ bool Unit::SetCanAdvFly(bool enable)
|
||||
|
||||
bool Unit::SetMoveCantSwim(bool cantSwim)
|
||||
{
|
||||
if (cantSwim == HasExtraUnitMovementFlag2(MOVEMENTFLAG3_CANNOT_SWIM))
|
||||
if (cantSwim == HasUnitMovementFlag(MOVEMENTFLAG_CANNOT_SWIM))
|
||||
return false;
|
||||
|
||||
if (cantSwim)
|
||||
AddExtraUnitMovementFlag2(MOVEMENTFLAG3_CANNOT_SWIM);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CANNOT_SWIM);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag2(MOVEMENTFLAG3_CANNOT_SWIM);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_CANNOT_SWIM);
|
||||
|
||||
static OpcodeServer const cantSwimOpcodeTable[2] =
|
||||
{
|
||||
@@ -14185,13 +14185,13 @@ void Unit::RemoveMovementForce(ObjectGuid id)
|
||||
|
||||
bool Unit::SetIgnoreMovementForces(bool ignore)
|
||||
{
|
||||
if (ignore == HasExtraUnitMovementFlag(MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES))
|
||||
if (ignore == HasUnitMovementFlag(MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES))
|
||||
return false;
|
||||
|
||||
if (ignore)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_IGNORE_MOVEMENT_FORCES);
|
||||
|
||||
static OpcodeServer const ignoreMovementForcesOpcodeTable[2] =
|
||||
{
|
||||
@@ -14717,7 +14717,7 @@ std::string Unit::GetDebugInfo() const
|
||||
sstr << WorldObject::GetDebugInfo() << "\n"
|
||||
<< std::boolalpha
|
||||
<< "IsAIEnabled: " << IsAIEnabled() << " DeathState: " << std::to_string(getDeathState())
|
||||
<< " UnitMovementFlags: " << GetUnitMovementFlags() << " ExtraUnitMovementFlags: " << GetExtraUnitMovementFlags()
|
||||
<< " UnitMovementFlags: " << Movement::MovementFlags_ToString(GetUnitMovementFlags())
|
||||
<< " Class: " << std::to_string(GetClass()) << "\n"
|
||||
<< "" << (movespline ? movespline->ToString() : "Movespline: <none>\n")
|
||||
<< "GetCharmedGUID(): " << GetCharmedGUID().ToString() << "\n"
|
||||
|
||||
@@ -1752,23 +1752,11 @@ class TC_GAME_API Unit : public WorldObject
|
||||
void PauseMovement(uint32 timer = 0, uint8 slot = 0, bool forced = true); // timer in ms
|
||||
void ResumeMovement(uint32 timer = 0, uint8 slot = 0); // timer in ms
|
||||
|
||||
void AddUnitMovementFlag(uint32 f) { m_movementInfo.AddMovementFlag(f); }
|
||||
void RemoveUnitMovementFlag(uint32 f) { m_movementInfo.RemoveMovementFlag(f); }
|
||||
bool HasUnitMovementFlag(uint32 f) const { return m_movementInfo.HasMovementFlag(f); }
|
||||
uint32 GetUnitMovementFlags() const { return m_movementInfo.GetMovementFlags(); }
|
||||
void SetUnitMovementFlags(uint32 f) { m_movementInfo.SetMovementFlags(f); }
|
||||
|
||||
void AddExtraUnitMovementFlag(uint32 f) { m_movementInfo.AddExtraMovementFlag(f); }
|
||||
void RemoveExtraUnitMovementFlag(uint32 f) { m_movementInfo.RemoveExtraMovementFlag(f); }
|
||||
bool HasExtraUnitMovementFlag(uint32 f) const { return m_movementInfo.HasExtraMovementFlag(f); }
|
||||
uint32 GetExtraUnitMovementFlags() const { return m_movementInfo.GetExtraMovementFlags(); }
|
||||
void SetExtraUnitMovementFlags(uint32 f) { m_movementInfo.SetExtraMovementFlags(f); }
|
||||
|
||||
void AddExtraUnitMovementFlag2(uint32 f) { m_movementInfo.AddExtraMovementFlag2(f); }
|
||||
void RemoveExtraUnitMovementFlag2(uint32 f) { m_movementInfo.RemoveExtraMovementFlag2(f); }
|
||||
bool HasExtraUnitMovementFlag2(uint32 f) const { return m_movementInfo.HasExtraMovementFlag2(f); }
|
||||
uint32 GetExtraUnitMovementFlags2() const { return m_movementInfo.GetExtraMovementFlags2(); }
|
||||
void SetExtraUnitMovementFlags2(uint32 f) { m_movementInfo.SetExtraMovementFlags2(f); }
|
||||
void AddUnitMovementFlag(MovementFlags f) { m_movementInfo.AddMovementFlag(f); }
|
||||
void RemoveUnitMovementFlag(MovementFlags f) { m_movementInfo.RemoveMovementFlag(f); }
|
||||
bool HasUnitMovementFlag(MovementFlags f) const { return m_movementInfo.HasMovementFlag(f); }
|
||||
MovementFlags GetUnitMovementFlags() const { return m_movementInfo.GetMovementFlags(); }
|
||||
void SetUnitMovementFlags(MovementFlags f) { m_movementInfo.SetMovementFlags(f); }
|
||||
|
||||
bool IsSplineEnabled() const;
|
||||
|
||||
|
||||
@@ -380,104 +380,6 @@ enum NPCFlags2 : uint32
|
||||
|
||||
DEFINE_ENUM_FLAG(NPCFlags2);
|
||||
|
||||
// EnumUtils: DESCRIBE THIS
|
||||
enum MovementFlags : uint32
|
||||
{
|
||||
MOVEMENTFLAG_NONE = 0x00000000,
|
||||
MOVEMENTFLAG_FORWARD = 0x00000001,
|
||||
MOVEMENTFLAG_BACKWARD = 0x00000002,
|
||||
MOVEMENTFLAG_STRAFE_LEFT = 0x00000004,
|
||||
MOVEMENTFLAG_STRAFE_RIGHT = 0x00000008,
|
||||
MOVEMENTFLAG_LEFT = 0x00000010,
|
||||
MOVEMENTFLAG_RIGHT = 0x00000020,
|
||||
MOVEMENTFLAG_PITCH_UP = 0x00000040,
|
||||
MOVEMENTFLAG_PITCH_DOWN = 0x00000080,
|
||||
MOVEMENTFLAG_WALKING = 0x00000100, // Walking
|
||||
MOVEMENTFLAG_DISABLE_GRAVITY = 0x00000200, // Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible.
|
||||
MOVEMENTFLAG_ROOT = 0x00000400, // Must not be set along with MOVEMENTFLAG_MASK_MOVING
|
||||
MOVEMENTFLAG_FALLING = 0x00000800, // damage dealt on that type of falling
|
||||
MOVEMENTFLAG_FALLING_FAR = 0x00001000,
|
||||
MOVEMENTFLAG_PENDING_STOP = 0x00002000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_STOP = 0x00004000,
|
||||
MOVEMENTFLAG_PENDING_FORWARD = 0x00008000,
|
||||
MOVEMENTFLAG_PENDING_BACKWARD = 0x00010000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_LEFT = 0x00020000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_RIGHT = 0x00040000,
|
||||
MOVEMENTFLAG_PENDING_ROOT = 0x00080000,
|
||||
MOVEMENTFLAG_SWIMMING = 0x00100000, // appears with fly flag also
|
||||
MOVEMENTFLAG_ASCENDING = 0x00200000, // press "space" when flying
|
||||
MOVEMENTFLAG_DESCENDING = 0x00400000,
|
||||
MOVEMENTFLAG_CAN_FLY = 0x00800000, // Appears when unit can fly. For example, appears when a player sits on a mount.
|
||||
MOVEMENTFLAG_FLYING = 0x01000000, // unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity
|
||||
MOVEMENTFLAG_SPLINE_ELEVATION = 0x02000000, // used for flight paths
|
||||
MOVEMENTFLAG_WATERWALKING = 0x04000000, // prevent unit from falling through water
|
||||
MOVEMENTFLAG_FALLING_SLOW = 0x08000000, // active rogue safe fall spell (passive)
|
||||
MOVEMENTFLAG_HOVER = 0x10000000, // hover, cannot jump
|
||||
MOVEMENTFLAG_DISABLE_COLLISION = 0x20000000,
|
||||
|
||||
MOVEMENTFLAG_MASK_MOVING =
|
||||
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT |
|
||||
MOVEMENTFLAG_FALLING | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING,// SKIP
|
||||
|
||||
MOVEMENTFLAG_MASK_TURNING =
|
||||
MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT | MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN, // SKIP
|
||||
|
||||
MOVEMENTFLAG_MASK_MOVING_FLY =
|
||||
MOVEMENTFLAG_FLYING | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING, // SKIP
|
||||
|
||||
// Movement flags allowed for creature in CreateObject - we need to keep all other enabled serverside
|
||||
// to properly calculate all movement
|
||||
MOVEMENTFLAG_MASK_CREATURE_ALLOWED =
|
||||
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_ROOT | MOVEMENTFLAG_SWIMMING |
|
||||
MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_WATERWALKING | MOVEMENTFLAG_FALLING_SLOW | MOVEMENTFLAG_HOVER | MOVEMENTFLAG_DISABLE_COLLISION, // SKIP
|
||||
|
||||
/// @todo if needed: add more flags to this masks that are exclusive to players
|
||||
MOVEMENTFLAG_MASK_PLAYER_ONLY =
|
||||
MOVEMENTFLAG_FLYING, // SKIP
|
||||
|
||||
/// Movement flags that have change status opcodes associated for players
|
||||
MOVEMENTFLAG_MASK_HAS_PLAYER_STATUS_OPCODE = MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_ROOT |
|
||||
MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_WATERWALKING | MOVEMENTFLAG_FALLING_SLOW | MOVEMENTFLAG_HOVER | MOVEMENTFLAG_DISABLE_COLLISION // SKIP
|
||||
};
|
||||
|
||||
// EnumUtils: DESCRIBE THIS
|
||||
enum MovementFlags2 : uint32
|
||||
{
|
||||
MOVEMENTFLAG2_NONE = 0x00000000,
|
||||
MOVEMENTFLAG2_NO_STRAFE = 0x00000001,
|
||||
MOVEMENTFLAG2_NO_JUMPING = 0x00000002,
|
||||
MOVEMENTFLAG2_FULL_SPEED_TURNING = 0x00000004,
|
||||
MOVEMENTFLAG2_FULL_SPEED_PITCHING = 0x00000008,
|
||||
MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING = 0x00000010,
|
||||
MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY = 0x00000020,
|
||||
MOVEMENTFLAG2_WATERWALKING_FULL_PITCH = 0x00000040, // will always waterwalk, even if facing the camera directly down
|
||||
MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED = 0x00000080,
|
||||
MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS = 0x00000100,
|
||||
MOVEMENTFLAG2_UNK9 = 0x00000200, // terrain normal calculation is disabled if this flag is not present, client automatically handles setting this flag
|
||||
MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING = 0x00000400,
|
||||
MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES = 0x00000800,
|
||||
MOVEMENTFLAG2_CAN_DOUBLE_JUMP = 0x00001000,
|
||||
MOVEMENTFLAG2_DOUBLE_JUMP = 0x00002000,
|
||||
// these flags are not sent
|
||||
MOVEMENTFLAG2_AWAITING_LOAD = 0x00010000,
|
||||
MOVEMENTFLAG2_INTERPOLATED_MOVEMENT = 0x00020000,
|
||||
MOVEMENTFLAG2_INTERPOLATED_TURNING = 0x00040000,
|
||||
MOVEMENTFLAG2_INTERPOLATED_PITCHING = 0x00080000
|
||||
};
|
||||
|
||||
// EnumUtils: DESCRIBE THIS
|
||||
enum MovementFlags3 : uint32
|
||||
{
|
||||
MOVEMENTFLAG3_NONE = 0x00000000,
|
||||
MOVEMENTFLAG3_DISABLE_INERTIA = 0x00000001,
|
||||
MOVEMENTFLAG3_CAN_ADV_FLY = 0x00000002,
|
||||
MOVEMENTFLAG3_ADV_FLYING = 0x00000004,
|
||||
MOVEMENTFLAG3_CANNOT_SWIM = 0x00002000,
|
||||
MOVEMENTFLAG3_CAN_DRIVE = 0x00004000,
|
||||
MOVEMENTFLAG3_DRIVING_FORWARD = 0x00008000,
|
||||
MOVEMENTFLAG3_DRIVING_BACKWARD = 0x00010000,
|
||||
};
|
||||
|
||||
enum HitInfo
|
||||
{
|
||||
HITINFO_NORMALSWING = 0x00000000,
|
||||
|
||||
@@ -625,277 +625,4 @@ TC_API_EXPORT size_t EnumUtils<NPCFlags2>::ToIndex(NPCFlags2 value)
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************\
|
||||
|* data for enum 'MovementFlags' in 'UnitDefines.h' auto-generated *|
|
||||
\*******************************************************************/
|
||||
template <>
|
||||
TC_API_EXPORT EnumText EnumUtils<MovementFlags>::ToString(MovementFlags value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG_NONE: return { "MOVEMENTFLAG_NONE", "MOVEMENTFLAG_NONE", "" };
|
||||
case MOVEMENTFLAG_FORWARD: return { "MOVEMENTFLAG_FORWARD", "MOVEMENTFLAG_FORWARD", "" };
|
||||
case MOVEMENTFLAG_BACKWARD: return { "MOVEMENTFLAG_BACKWARD", "MOVEMENTFLAG_BACKWARD", "" };
|
||||
case MOVEMENTFLAG_STRAFE_LEFT: return { "MOVEMENTFLAG_STRAFE_LEFT", "MOVEMENTFLAG_STRAFE_LEFT", "" };
|
||||
case MOVEMENTFLAG_STRAFE_RIGHT: return { "MOVEMENTFLAG_STRAFE_RIGHT", "MOVEMENTFLAG_STRAFE_RIGHT", "" };
|
||||
case MOVEMENTFLAG_LEFT: return { "MOVEMENTFLAG_LEFT", "MOVEMENTFLAG_LEFT", "" };
|
||||
case MOVEMENTFLAG_RIGHT: return { "MOVEMENTFLAG_RIGHT", "MOVEMENTFLAG_RIGHT", "" };
|
||||
case MOVEMENTFLAG_PITCH_UP: return { "MOVEMENTFLAG_PITCH_UP", "MOVEMENTFLAG_PITCH_UP", "" };
|
||||
case MOVEMENTFLAG_PITCH_DOWN: return { "MOVEMENTFLAG_PITCH_DOWN", "MOVEMENTFLAG_PITCH_DOWN", "" };
|
||||
case MOVEMENTFLAG_WALKING: return { "MOVEMENTFLAG_WALKING", "MOVEMENTFLAG_WALKING", "Walking" };
|
||||
case MOVEMENTFLAG_DISABLE_GRAVITY: return { "MOVEMENTFLAG_DISABLE_GRAVITY", "MOVEMENTFLAG_DISABLE_GRAVITY", "Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible." };
|
||||
case MOVEMENTFLAG_ROOT: return { "MOVEMENTFLAG_ROOT", "MOVEMENTFLAG_ROOT", "Must not be set along with MOVEMENTFLAG_MASK_MOVING" };
|
||||
case MOVEMENTFLAG_FALLING: return { "MOVEMENTFLAG_FALLING", "MOVEMENTFLAG_FALLING", "damage dealt on that type of falling" };
|
||||
case MOVEMENTFLAG_FALLING_FAR: return { "MOVEMENTFLAG_FALLING_FAR", "MOVEMENTFLAG_FALLING_FAR", "" };
|
||||
case MOVEMENTFLAG_PENDING_STOP: return { "MOVEMENTFLAG_PENDING_STOP", "MOVEMENTFLAG_PENDING_STOP", "" };
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_STOP: return { "MOVEMENTFLAG_PENDING_STRAFE_STOP", "MOVEMENTFLAG_PENDING_STRAFE_STOP", "" };
|
||||
case MOVEMENTFLAG_PENDING_FORWARD: return { "MOVEMENTFLAG_PENDING_FORWARD", "MOVEMENTFLAG_PENDING_FORWARD", "" };
|
||||
case MOVEMENTFLAG_PENDING_BACKWARD: return { "MOVEMENTFLAG_PENDING_BACKWARD", "MOVEMENTFLAG_PENDING_BACKWARD", "" };
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_LEFT: return { "MOVEMENTFLAG_PENDING_STRAFE_LEFT", "MOVEMENTFLAG_PENDING_STRAFE_LEFT", "" };
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_RIGHT: return { "MOVEMENTFLAG_PENDING_STRAFE_RIGHT", "MOVEMENTFLAG_PENDING_STRAFE_RIGHT", "" };
|
||||
case MOVEMENTFLAG_PENDING_ROOT: return { "MOVEMENTFLAG_PENDING_ROOT", "MOVEMENTFLAG_PENDING_ROOT", "" };
|
||||
case MOVEMENTFLAG_SWIMMING: return { "MOVEMENTFLAG_SWIMMING", "MOVEMENTFLAG_SWIMMING", "appears with fly flag also" };
|
||||
case MOVEMENTFLAG_ASCENDING: return { "MOVEMENTFLAG_ASCENDING", "MOVEMENTFLAG_ASCENDING", "press \042space\042 when flying" };
|
||||
case MOVEMENTFLAG_DESCENDING: return { "MOVEMENTFLAG_DESCENDING", "MOVEMENTFLAG_DESCENDING", "" };
|
||||
case MOVEMENTFLAG_CAN_FLY: return { "MOVEMENTFLAG_CAN_FLY", "MOVEMENTFLAG_CAN_FLY", "Appears when unit can fly. For example, appears when a player sits on a mount." };
|
||||
case MOVEMENTFLAG_FLYING: return { "MOVEMENTFLAG_FLYING", "MOVEMENTFLAG_FLYING", "unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity" };
|
||||
case MOVEMENTFLAG_SPLINE_ELEVATION: return { "MOVEMENTFLAG_SPLINE_ELEVATION", "MOVEMENTFLAG_SPLINE_ELEVATION", "used for flight paths" };
|
||||
case MOVEMENTFLAG_WATERWALKING: return { "MOVEMENTFLAG_WATERWALKING", "MOVEMENTFLAG_WATERWALKING", "prevent unit from falling through water" };
|
||||
case MOVEMENTFLAG_FALLING_SLOW: return { "MOVEMENTFLAG_FALLING_SLOW", "MOVEMENTFLAG_FALLING_SLOW", "active rogue safe fall spell (passive)" };
|
||||
case MOVEMENTFLAG_HOVER: return { "MOVEMENTFLAG_HOVER", "MOVEMENTFLAG_HOVER", "hover, cannot jump" };
|
||||
case MOVEMENTFLAG_DISABLE_COLLISION: return { "MOVEMENTFLAG_DISABLE_COLLISION", "MOVEMENTFLAG_DISABLE_COLLISION", "" };
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags>::Count() { return 31; }
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT MovementFlags EnumUtils<MovementFlags>::FromIndex(size_t index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case 0: return MOVEMENTFLAG_NONE;
|
||||
case 1: return MOVEMENTFLAG_FORWARD;
|
||||
case 2: return MOVEMENTFLAG_BACKWARD;
|
||||
case 3: return MOVEMENTFLAG_STRAFE_LEFT;
|
||||
case 4: return MOVEMENTFLAG_STRAFE_RIGHT;
|
||||
case 5: return MOVEMENTFLAG_LEFT;
|
||||
case 6: return MOVEMENTFLAG_RIGHT;
|
||||
case 7: return MOVEMENTFLAG_PITCH_UP;
|
||||
case 8: return MOVEMENTFLAG_PITCH_DOWN;
|
||||
case 9: return MOVEMENTFLAG_WALKING;
|
||||
case 10: return MOVEMENTFLAG_DISABLE_GRAVITY;
|
||||
case 11: return MOVEMENTFLAG_ROOT;
|
||||
case 12: return MOVEMENTFLAG_FALLING;
|
||||
case 13: return MOVEMENTFLAG_FALLING_FAR;
|
||||
case 14: return MOVEMENTFLAG_PENDING_STOP;
|
||||
case 15: return MOVEMENTFLAG_PENDING_STRAFE_STOP;
|
||||
case 16: return MOVEMENTFLAG_PENDING_FORWARD;
|
||||
case 17: return MOVEMENTFLAG_PENDING_BACKWARD;
|
||||
case 18: return MOVEMENTFLAG_PENDING_STRAFE_LEFT;
|
||||
case 19: return MOVEMENTFLAG_PENDING_STRAFE_RIGHT;
|
||||
case 20: return MOVEMENTFLAG_PENDING_ROOT;
|
||||
case 21: return MOVEMENTFLAG_SWIMMING;
|
||||
case 22: return MOVEMENTFLAG_ASCENDING;
|
||||
case 23: return MOVEMENTFLAG_DESCENDING;
|
||||
case 24: return MOVEMENTFLAG_CAN_FLY;
|
||||
case 25: return MOVEMENTFLAG_FLYING;
|
||||
case 26: return MOVEMENTFLAG_SPLINE_ELEVATION;
|
||||
case 27: return MOVEMENTFLAG_WATERWALKING;
|
||||
case 28: return MOVEMENTFLAG_FALLING_SLOW;
|
||||
case 29: return MOVEMENTFLAG_HOVER;
|
||||
case 30: return MOVEMENTFLAG_DISABLE_COLLISION;
|
||||
default: throw std::out_of_range("index");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags>::ToIndex(MovementFlags value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG_NONE: return 0;
|
||||
case MOVEMENTFLAG_FORWARD: return 1;
|
||||
case MOVEMENTFLAG_BACKWARD: return 2;
|
||||
case MOVEMENTFLAG_STRAFE_LEFT: return 3;
|
||||
case MOVEMENTFLAG_STRAFE_RIGHT: return 4;
|
||||
case MOVEMENTFLAG_LEFT: return 5;
|
||||
case MOVEMENTFLAG_RIGHT: return 6;
|
||||
case MOVEMENTFLAG_PITCH_UP: return 7;
|
||||
case MOVEMENTFLAG_PITCH_DOWN: return 8;
|
||||
case MOVEMENTFLAG_WALKING: return 9;
|
||||
case MOVEMENTFLAG_DISABLE_GRAVITY: return 10;
|
||||
case MOVEMENTFLAG_ROOT: return 11;
|
||||
case MOVEMENTFLAG_FALLING: return 12;
|
||||
case MOVEMENTFLAG_FALLING_FAR: return 13;
|
||||
case MOVEMENTFLAG_PENDING_STOP: return 14;
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_STOP: return 15;
|
||||
case MOVEMENTFLAG_PENDING_FORWARD: return 16;
|
||||
case MOVEMENTFLAG_PENDING_BACKWARD: return 17;
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_LEFT: return 18;
|
||||
case MOVEMENTFLAG_PENDING_STRAFE_RIGHT: return 19;
|
||||
case MOVEMENTFLAG_PENDING_ROOT: return 20;
|
||||
case MOVEMENTFLAG_SWIMMING: return 21;
|
||||
case MOVEMENTFLAG_ASCENDING: return 22;
|
||||
case MOVEMENTFLAG_DESCENDING: return 23;
|
||||
case MOVEMENTFLAG_CAN_FLY: return 24;
|
||||
case MOVEMENTFLAG_FLYING: return 25;
|
||||
case MOVEMENTFLAG_SPLINE_ELEVATION: return 26;
|
||||
case MOVEMENTFLAG_WATERWALKING: return 27;
|
||||
case MOVEMENTFLAG_FALLING_SLOW: return 28;
|
||||
case MOVEMENTFLAG_HOVER: return 29;
|
||||
case MOVEMENTFLAG_DISABLE_COLLISION: return 30;
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
|* data for enum 'MovementFlags2' in 'UnitDefines.h' auto-generated *|
|
||||
\********************************************************************/
|
||||
template <>
|
||||
TC_API_EXPORT EnumText EnumUtils<MovementFlags2>::ToString(MovementFlags2 value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG2_NONE: return { "MOVEMENTFLAG2_NONE", "MOVEMENTFLAG2_NONE", "" };
|
||||
case MOVEMENTFLAG2_NO_STRAFE: return { "MOVEMENTFLAG2_NO_STRAFE", "MOVEMENTFLAG2_NO_STRAFE", "" };
|
||||
case MOVEMENTFLAG2_NO_JUMPING: return { "MOVEMENTFLAG2_NO_JUMPING", "MOVEMENTFLAG2_NO_JUMPING", "" };
|
||||
case MOVEMENTFLAG2_FULL_SPEED_TURNING: return { "MOVEMENTFLAG2_FULL_SPEED_TURNING", "MOVEMENTFLAG2_FULL_SPEED_TURNING", "" };
|
||||
case MOVEMENTFLAG2_FULL_SPEED_PITCHING: return { "MOVEMENTFLAG2_FULL_SPEED_PITCHING", "MOVEMENTFLAG2_FULL_SPEED_PITCHING", "" };
|
||||
case MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING: return { "MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING", "MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING", "" };
|
||||
case MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY: return { "MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY", "MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY", "" };
|
||||
case MOVEMENTFLAG2_WATERWALKING_FULL_PITCH: return { "MOVEMENTFLAG2_WATERWALKING_FULL_PITCH", "MOVEMENTFLAG2_WATERWALKING_FULL_PITCH", "will always waterwalk, even if facing the camera directly down" };
|
||||
case MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED: return { "MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED", "MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED", "" };
|
||||
case MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS: return { "MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS", "MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS", "" };
|
||||
case MOVEMENTFLAG2_UNK9: return { "MOVEMENTFLAG2_UNK9", "MOVEMENTFLAG2_UNK9", "terrain normal calculation is disabled if this flag is not present, client automatically handles setting this flag" };
|
||||
case MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING: return { "MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING", "MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING", "" };
|
||||
case MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES: return { "MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES", "MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES", "" };
|
||||
case MOVEMENTFLAG2_CAN_DOUBLE_JUMP: return { "MOVEMENTFLAG2_CAN_DOUBLE_JUMP", "MOVEMENTFLAG2_CAN_DOUBLE_JUMP", "" };
|
||||
case MOVEMENTFLAG2_DOUBLE_JUMP: return { "MOVEMENTFLAG2_DOUBLE_JUMP", "MOVEMENTFLAG2_DOUBLE_JUMP", "" };
|
||||
case MOVEMENTFLAG2_AWAITING_LOAD: return { "MOVEMENTFLAG2_AWAITING_LOAD", "MOVEMENTFLAG2_AWAITING_LOAD", "" };
|
||||
case MOVEMENTFLAG2_INTERPOLATED_MOVEMENT: return { "MOVEMENTFLAG2_INTERPOLATED_MOVEMENT", "MOVEMENTFLAG2_INTERPOLATED_MOVEMENT", "" };
|
||||
case MOVEMENTFLAG2_INTERPOLATED_TURNING: return { "MOVEMENTFLAG2_INTERPOLATED_TURNING", "MOVEMENTFLAG2_INTERPOLATED_TURNING", "" };
|
||||
case MOVEMENTFLAG2_INTERPOLATED_PITCHING: return { "MOVEMENTFLAG2_INTERPOLATED_PITCHING", "MOVEMENTFLAG2_INTERPOLATED_PITCHING", "" };
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags2>::Count() { return 19; }
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT MovementFlags2 EnumUtils<MovementFlags2>::FromIndex(size_t index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case 0: return MOVEMENTFLAG2_NONE;
|
||||
case 1: return MOVEMENTFLAG2_NO_STRAFE;
|
||||
case 2: return MOVEMENTFLAG2_NO_JUMPING;
|
||||
case 3: return MOVEMENTFLAG2_FULL_SPEED_TURNING;
|
||||
case 4: return MOVEMENTFLAG2_FULL_SPEED_PITCHING;
|
||||
case 5: return MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING;
|
||||
case 6: return MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY;
|
||||
case 7: return MOVEMENTFLAG2_WATERWALKING_FULL_PITCH;
|
||||
case 8: return MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED;
|
||||
case 9: return MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS;
|
||||
case 10: return MOVEMENTFLAG2_UNK9;
|
||||
case 11: return MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING;
|
||||
case 12: return MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES;
|
||||
case 13: return MOVEMENTFLAG2_CAN_DOUBLE_JUMP;
|
||||
case 14: return MOVEMENTFLAG2_DOUBLE_JUMP;
|
||||
case 15: return MOVEMENTFLAG2_AWAITING_LOAD;
|
||||
case 16: return MOVEMENTFLAG2_INTERPOLATED_MOVEMENT;
|
||||
case 17: return MOVEMENTFLAG2_INTERPOLATED_TURNING;
|
||||
case 18: return MOVEMENTFLAG2_INTERPOLATED_PITCHING;
|
||||
default: throw std::out_of_range("index");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags2>::ToIndex(MovementFlags2 value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG2_NONE: return 0;
|
||||
case MOVEMENTFLAG2_NO_STRAFE: return 1;
|
||||
case MOVEMENTFLAG2_NO_JUMPING: return 2;
|
||||
case MOVEMENTFLAG2_FULL_SPEED_TURNING: return 3;
|
||||
case MOVEMENTFLAG2_FULL_SPEED_PITCHING: return 4;
|
||||
case MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING: return 5;
|
||||
case MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY: return 6;
|
||||
case MOVEMENTFLAG2_WATERWALKING_FULL_PITCH: return 7;
|
||||
case MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED: return 8;
|
||||
case MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS: return 9;
|
||||
case MOVEMENTFLAG2_UNK9: return 10;
|
||||
case MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING: return 11;
|
||||
case MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES: return 12;
|
||||
case MOVEMENTFLAG2_CAN_DOUBLE_JUMP: return 13;
|
||||
case MOVEMENTFLAG2_DOUBLE_JUMP: return 14;
|
||||
case MOVEMENTFLAG2_AWAITING_LOAD: return 15;
|
||||
case MOVEMENTFLAG2_INTERPOLATED_MOVEMENT: return 16;
|
||||
case MOVEMENTFLAG2_INTERPOLATED_TURNING: return 17;
|
||||
case MOVEMENTFLAG2_INTERPOLATED_PITCHING: return 18;
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
|* data for enum 'MovementFlags3' in 'UnitDefines.h' auto-generated *|
|
||||
\********************************************************************/
|
||||
template <>
|
||||
TC_API_EXPORT EnumText EnumUtils<MovementFlags3>::ToString(MovementFlags3 value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG3_NONE: return { "MOVEMENTFLAG3_NONE", "MOVEMENTFLAG3_NONE", "" };
|
||||
case MOVEMENTFLAG3_DISABLE_INERTIA: return { "MOVEMENTFLAG3_DISABLE_INERTIA", "MOVEMENTFLAG3_DISABLE_INERTIA", "" };
|
||||
case MOVEMENTFLAG3_CAN_ADV_FLY: return { "MOVEMENTFLAG3_CAN_ADV_FLY", "MOVEMENTFLAG3_CAN_ADV_FLY", "" };
|
||||
case MOVEMENTFLAG3_ADV_FLYING: return { "MOVEMENTFLAG3_ADV_FLYING", "MOVEMENTFLAG3_ADV_FLYING", "" };
|
||||
case MOVEMENTFLAG3_CANNOT_SWIM: return { "MOVEMENTFLAG3_CANNOT_SWIM", "MOVEMENTFLAG3_CANNOT_SWIM", "" };
|
||||
case MOVEMENTFLAG3_CAN_DRIVE: return { "MOVEMENTFLAG3_CAN_DRIVE", "MOVEMENTFLAG3_CAN_DRIVE", "" };
|
||||
case MOVEMENTFLAG3_DRIVING_FORWARD: return { "MOVEMENTFLAG3_DRIVING_FORWARD", "MOVEMENTFLAG3_DRIVING_FORWARD", "" };
|
||||
case MOVEMENTFLAG3_DRIVING_BACKWARD: return { "MOVEMENTFLAG3_DRIVING_BACKWARD", "MOVEMENTFLAG3_DRIVING_BACKWARD", "" };
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags3>::Count() { return 8; }
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT MovementFlags3 EnumUtils<MovementFlags3>::FromIndex(size_t index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case 0: return MOVEMENTFLAG3_NONE;
|
||||
case 1: return MOVEMENTFLAG3_DISABLE_INERTIA;
|
||||
case 2: return MOVEMENTFLAG3_CAN_ADV_FLY;
|
||||
case 3: return MOVEMENTFLAG3_ADV_FLYING;
|
||||
case 4: return MOVEMENTFLAG3_CANNOT_SWIM;
|
||||
case 5: return MOVEMENTFLAG3_CAN_DRIVE;
|
||||
case 6: return MOVEMENTFLAG3_DRIVING_FORWARD;
|
||||
case 7: return MOVEMENTFLAG3_DRIVING_BACKWARD;
|
||||
default: throw std::out_of_range("index");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<MovementFlags3>::ToIndex(MovementFlags3 value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case MOVEMENTFLAG3_NONE: return 0;
|
||||
case MOVEMENTFLAG3_DISABLE_INERTIA: return 1;
|
||||
case MOVEMENTFLAG3_CAN_ADV_FLY: return 2;
|
||||
case MOVEMENTFLAG3_ADV_FLYING: return 3;
|
||||
case MOVEMENTFLAG3_CANNOT_SWIM: return 4;
|
||||
case MOVEMENTFLAG3_CAN_DRIVE: return 5;
|
||||
case MOVEMENTFLAG3_DRIVING_FORWARD: return 6;
|
||||
case MOVEMENTFLAG3_DRIVING_BACKWARD: return 7;
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,15 +641,15 @@ void Vehicle::InitMovementInfoForBase()
|
||||
uint32 vehicleFlags = GetVehicleInfo()->Flags;
|
||||
|
||||
if (vehicleFlags & VEHICLE_FLAG_NO_STRAFE)
|
||||
_me->AddExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE);
|
||||
_me->AddUnitMovementFlag(MOVEMENTFLAG_NO_STRAFE);
|
||||
if (vehicleFlags & VEHICLE_FLAG_NO_JUMPING)
|
||||
_me->AddExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING);
|
||||
_me->AddUnitMovementFlag(MOVEMENTFLAG_NO_JUMPING);
|
||||
if (vehicleFlags & VEHICLE_FLAG_FULLSPEEDTURNING)
|
||||
_me->AddExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_TURNING);
|
||||
_me->AddUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_TURNING);
|
||||
if (vehicleFlags & VEHICLE_FLAG_ALLOW_PITCHING)
|
||||
_me->AddExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING);
|
||||
_me->AddUnitMovementFlag(MOVEMENTFLAG_ALWAYS_ALLOW_PITCHING);
|
||||
if (vehicleFlags & VEHICLE_FLAG_FULLSPEEDPITCHING)
|
||||
_me->AddExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING);
|
||||
_me->AddUnitMovementFlag(MOVEMENTFLAG_FULL_SPEED_PITCHING);
|
||||
|
||||
_me->m_movementInfo.pitch = GetPitch();
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ bool WorldSession::ValidateMovementInfo(Unit const* mover, MovementInfo* mi) con
|
||||
if (check) \
|
||||
{ \
|
||||
TC_LOG_DEBUG("entities.unit", "Player::ValidateMovementInfo: Violation of MovementFlags found ({}). " \
|
||||
"MovementFlags: {}, MovementFlags2: {}, MovementFlags3: {} for player {}. Mask {} will be removed.", \
|
||||
STRINGIZE(check), mi->GetMovementFlags(), mi->GetExtraMovementFlags(), mi->GetExtraMovementFlags2(), GetPlayer()->GetGUID(), maskToRemove); \
|
||||
"MovementFlags: {} for player {}. Mask {} will be removed.", \
|
||||
STRINGIZE(check), mi->GetMovementFlags(), GetPlayer()->GetGUID(), maskToRemove); \
|
||||
mi->RemoveMovementFlag((maskToRemove)); \
|
||||
} \
|
||||
} while (0)
|
||||
@@ -481,9 +481,9 @@ void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movem
|
||||
|
||||
Player* plrMover = mover->ToPlayer();
|
||||
|
||||
TC_LOG_TRACE("opcodes.movement", "HandleMovementOpcode Name {}: opcode {} {} Flags {} Flags2 {} Flags3 {} Pos {}",
|
||||
TC_LOG_TRACE("opcodes.movement", "HandleMovementOpcode Name {}: opcode {} {} Flags {} Pos {}",
|
||||
mover->GetName(), opcode, GetOpcodeNameForLogging(opcode),
|
||||
movementInfo.flags, movementInfo.flags2, movementInfo.flags3, movementInfo.pos);
|
||||
movementInfo.flags, movementInfo.pos);
|
||||
|
||||
// ignore, waiting processing in WorldSession::HandleMoveWorldportAckOpcode and WorldSession::HandleMoveTeleportAck
|
||||
if (plrMover && plrMover->IsBeingTeleported())
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace Movement
|
||||
TransportBase* _transport;
|
||||
};
|
||||
|
||||
UnitMoveType SelectSpeedType(uint32 moveFlags)
|
||||
UnitMoveType SelectSpeedType(MovementFlags moveFlags)
|
||||
{
|
||||
if (moveFlags & MOVEMENTFLAG_FLYING)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ namespace Movement
|
||||
args.flags.Enter_Cycle = args.flags.Cyclic;
|
||||
move_spline.onTransport = transport;
|
||||
|
||||
uint32 moveFlags = unit->m_movementInfo.GetMovementFlags();
|
||||
MovementFlags moveFlags = unit->m_movementInfo.GetMovementFlags();
|
||||
if (!args.flags.Backward)
|
||||
moveFlags = (moveFlags & ~MOVEMENTFLAG_BACKWARD) | MOVEMENTFLAG_FORWARD;
|
||||
else
|
||||
@@ -129,7 +129,7 @@ namespace Movement
|
||||
{
|
||||
// If spline is initialized with SetWalk method it only means we need to select
|
||||
// walk move speed for it but not add walk flag to unit
|
||||
uint32 moveFlagsForSpeed = moveFlags;
|
||||
MovementFlags moveFlagsForSpeed = moveFlags;
|
||||
if (args.walk)
|
||||
moveFlagsForSpeed |= MOVEMENTFLAG_WALKING;
|
||||
else
|
||||
|
||||
@@ -20,9 +20,7 @@
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
enum MovementFlags : uint32;
|
||||
enum MovementFlags2 : uint32;
|
||||
enum MovementFlags3 : uint32;
|
||||
enum MovementFlags : uint64;
|
||||
|
||||
namespace G3D
|
||||
{
|
||||
@@ -83,8 +81,6 @@ namespace Movement
|
||||
float constexpr gravity = static_cast<float>(19.291103363037109375);
|
||||
TC_GAME_API extern UInt32Counter splineIdGen;
|
||||
TC_GAME_API extern std::string MovementFlags_ToString(MovementFlags flags);
|
||||
TC_GAME_API extern std::string MovementFlags_ToString(MovementFlags2 flags);
|
||||
TC_GAME_API extern std::string MovementFlags_ToString(MovementFlags3 flags);
|
||||
}
|
||||
|
||||
#endif // TRINITYSERVER_TYPEDEFS_H
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "MoveSplineFlag.h"
|
||||
#include "MovementInfo.h"
|
||||
#include "MovementTypedefs.h"
|
||||
#include "SmartEnum.h"
|
||||
#include <cmath>
|
||||
@@ -105,18 +106,4 @@ namespace Movement
|
||||
PrintFlags(flags, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
std::string MovementFlags_ToString(MovementFlags2 flags)
|
||||
{
|
||||
std::string str;
|
||||
PrintFlags(flags, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
std::string MovementFlags_ToString(MovementFlags3 flags)
|
||||
{
|
||||
std::string str;
|
||||
PrintFlags(flags, str);
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,9 +76,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
|
||||
bool hasFallData = hasFallDirection || movementInfo.jump.fallTime != 0;
|
||||
|
||||
data << movementInfo.guid;
|
||||
data << uint32(movementInfo.flags);
|
||||
data << uint32(movementInfo.flags2);
|
||||
data << uint32(movementInfo.flags3);
|
||||
data << WorldPackets::As<uint64>(movementInfo.flags);
|
||||
data << uint32(movementInfo.time);
|
||||
data << movementInfo.pos.PositionXYZOStream();
|
||||
data << float(movementInfo.pitch);
|
||||
@@ -158,9 +156,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo)
|
||||
ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo)
|
||||
{
|
||||
data >> movementInfo.guid;
|
||||
data >> movementInfo.flags;
|
||||
data >> movementInfo.flags2;
|
||||
data >> movementInfo.flags3;
|
||||
data >> WorldPackets::As<uint64>(movementInfo.flags);
|
||||
data >> movementInfo.time;
|
||||
data >> movementInfo.pos.PositionXYZOStream();
|
||||
data >> movementInfo.pitch;
|
||||
|
||||
@@ -1536,7 +1536,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn
|
||||
{
|
||||
angle = [&]()
|
||||
{
|
||||
switch (m_caster->m_movementInfo.GetMovementFlags() & (MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT))
|
||||
switch (uint64(m_caster->m_movementInfo.GetMovementFlags() & (MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT)))
|
||||
{
|
||||
case MOVEMENTFLAG_NONE:
|
||||
case MOVEMENTFLAG_FORWARD:
|
||||
|
||||
@@ -2416,9 +2416,8 @@ SpellCastResult SpellInfo::CheckTarget(WorldObject const* caster, WorldObject co
|
||||
if (unitTarget->GetSpellOtherImmunityMask().HasFlag(SpellOtherImmunity::AoETarget))
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
|
||||
if (HasAttribute(SPELL_ATTR9_TARGET_MUST_BE_GROUNDED) &&
|
||||
(unitTarget->HasUnitMovementFlag(MOVEMENTFLAG_FALLING | MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING | MOVEMENTFLAG_HOVER) ||
|
||||
unitTarget->HasExtraUnitMovementFlag2(MOVEMENTFLAG3_ADV_FLYING)))
|
||||
if (HasAttribute(SPELL_ATTR9_TARGET_MUST_BE_GROUNDED)
|
||||
&& unitTarget->HasUnitMovementFlag(MOVEMENTFLAG_FALLING | MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING | MOVEMENTFLAG_HOVER | MOVEMENTFLAG_ADV_FLYING))
|
||||
return SPELL_FAILED_TARGET_NOT_GROUNDED;
|
||||
}
|
||||
// corpse specific target checks
|
||||
|
||||
@@ -44,6 +44,7 @@ EndScriptData */
|
||||
#include "M2Stores.h"
|
||||
#include "MapManager.h"
|
||||
#include "MovementPackets.h"
|
||||
#include "MovementTypedefs.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "PhasingHandler.h"
|
||||
@@ -1197,7 +1198,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleDebugMoveflagsCommand(ChatHandler* handler, Optional<uint32> moveFlags, Optional<uint32> moveFlagsExtra, Optional<uint32> moveFlagsExtra2)
|
||||
static bool HandleDebugMoveflagsCommand(ChatHandler* handler, Optional<uint64> moveFlags)
|
||||
{
|
||||
Unit* target = handler->getSelectedUnit();
|
||||
if (!target)
|
||||
@@ -1206,17 +1207,11 @@ public:
|
||||
if (!moveFlags)
|
||||
{
|
||||
//! Display case
|
||||
handler->PSendSysMessage(LANG_MOVEFLAGS_GET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
|
||||
handler->PSendSysMessage(LANG_MOVEFLAGS_GET, target->GetUnitMovementFlags(), Movement::MovementFlags_ToString(target->GetUnitMovementFlags()));
|
||||
}
|
||||
else
|
||||
{
|
||||
target->SetUnitMovementFlags(*moveFlags);
|
||||
|
||||
if (moveFlagsExtra)
|
||||
target->SetExtraUnitMovementFlags(*moveFlagsExtra);
|
||||
|
||||
if (moveFlagsExtra2)
|
||||
target->SetExtraUnitMovementFlags2(*moveFlagsExtra2);
|
||||
target->SetUnitMovementFlags(MovementFlags(*moveFlags));
|
||||
|
||||
if (target->GetTypeId() != TYPEID_PLAYER)
|
||||
target->DestroyForNearbyPlayers(); // Force new SMSG_UPDATE_OBJECT:CreateObject
|
||||
@@ -1227,7 +1222,7 @@ public:
|
||||
target->SendMessageToSet(moveUpdate.Write(), true);
|
||||
}
|
||||
|
||||
handler->PSendSysMessage(LANG_MOVEFLAGS_SET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
|
||||
handler->PSendSysMessage(LANG_MOVEFLAGS_SET, target->GetUnitMovementFlags(), Movement::MovementFlags_ToString(target->GetUnitMovementFlags()));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user