mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-20 23:01:36 -04:00
*Update movement enums - thanks to Zor for info.
*Add functions for position data streaming. --HG-- branch : trunk
This commit is contained in:
@@ -318,10 +318,10 @@ void npc_escortAI::MovementInform(uint32 uiMoveType, uint32 uiPointId)
|
||||
{
|
||||
sLog.outDebug("TSCR: EscortAI has returned to original position before combat");
|
||||
|
||||
if (m_bIsRunning && me->HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE))
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
else if (!m_bIsRunning && !me->HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE))
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
if (m_bIsRunning && me->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
else if (!m_bIsRunning && !me->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
RemoveEscortState(STATE_ESCORT_RETURNING);
|
||||
|
||||
@@ -413,14 +413,14 @@ void npc_escortAI::SetRun(bool bRun)
|
||||
if (bRun)
|
||||
{
|
||||
if (!m_bIsRunning)
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
else
|
||||
sLog.outDebug("TSCR: EscortAI attempt to set run mode, but is already running.");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_bIsRunning)
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
else
|
||||
sLog.outDebug("TSCR: EscortAI attempt to set walk mode, but is already walking.");
|
||||
}
|
||||
@@ -487,9 +487,9 @@ void npc_escortAI::Start(bool bIsActiveAttacker, bool bRun, uint64 uiPlayerGUID,
|
||||
|
||||
//Set initial speed
|
||||
if (m_bIsRunning)
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
else
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
AddEscortState(STATE_ESCORT_ESCORTING);
|
||||
}
|
||||
|
||||
@@ -420,7 +420,7 @@ bool Creature::UpdateEntry(uint32 Entry, uint32 team, const CreatureData *data)
|
||||
|
||||
// TODO: In fact monster move flags should be set - not movement flags.
|
||||
if (cInfo->InhabitType & INHABIT_AIR)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FLY_MODE | MOVEMENTFLAG_FLYING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING);
|
||||
|
||||
if (cInfo->InhabitType & INHABIT_WATER)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
||||
@@ -784,7 +784,7 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry,
|
||||
if (GetCreatureInfo()->InhabitType & INHABIT_AIR)
|
||||
{
|
||||
if (GetDefaultMovementType() == IDLE_MOTION_TYPE)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FLY_MODE);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY);
|
||||
else
|
||||
SetFlying(true);
|
||||
}
|
||||
@@ -1515,9 +1515,9 @@ void Creature::setDeathState(DeathState s)
|
||||
SetLootRecipient(NULL);
|
||||
ResetPlayerDamageReq();
|
||||
CreatureInfo const *cinfo = GetCreatureInfo();
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
if (GetCreatureInfo()->InhabitType & INHABIT_AIR)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FLY_MODE | MOVEMENTFLAG_FLYING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING);
|
||||
if (GetCreatureInfo()->InhabitType & INHABIT_WATER)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
||||
SetUInt32Value(UNIT_NPC_FLAGS, cinfo->npcflag);
|
||||
|
||||
@@ -246,7 +246,7 @@ void CreatureGroup::LeaderMoveTo(float x, float y, float z)
|
||||
if (member->IsWithinDist(m_leader, dist + MAX_DESYNC))
|
||||
member->SetUnitMovementFlags(m_leader->GetUnitMovementFlags());
|
||||
else
|
||||
member->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
member->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
member->GetMotionMaster()->MovePoint(0, dx, dy, dz);
|
||||
member->SetHomePosition(dx, dy, dz, pathangle);
|
||||
|
||||
@@ -301,7 +301,7 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
|
||||
|
||||
FlightPathMovementGenerator *fmg = (FlightPathMovementGenerator*)(player->GetMotionMaster()->top());
|
||||
|
||||
uint32 flags3 = MOVEFLAG_GLIDE;
|
||||
uint32 flags3 = SPLINEFLAG_GLIDE;
|
||||
|
||||
*data << uint32(flags3); // splines flag?
|
||||
|
||||
@@ -1144,6 +1144,37 @@ bool Position::HasInLine(const Unit * const target, float distance, float width)
|
||||
return abs(sin(angle)) * GetExactDist2d(target->GetPositionX(), target->GetPositionY()) < width;
|
||||
}
|
||||
|
||||
ByteBuffer &operator>>(ByteBuffer& buf, Position::PositionXYZOStreamer const & streamer)
|
||||
{
|
||||
float x, y, z, o;
|
||||
buf >> x >> y >> z >> o;
|
||||
streamer.m_pos->Relocate(x, y, z, o);
|
||||
return buf;
|
||||
}
|
||||
ByteBuffer & operator<<(ByteBuffer& buf, Position::PositionXYZStreamer const & streamer)
|
||||
{
|
||||
float x, y, z;
|
||||
streamer.m_pos->GetPosition(x, y, z);
|
||||
buf << x << y << z;
|
||||
return buf;
|
||||
}
|
||||
|
||||
ByteBuffer &operator>>(ByteBuffer& buf, Position::PositionXYZStreamer const & streamer)
|
||||
{
|
||||
float x, y, z;
|
||||
buf >> x >> y >> z;
|
||||
streamer.m_pos->Relocate(x, y, z);
|
||||
return buf;
|
||||
}
|
||||
|
||||
ByteBuffer & operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const & streamer)
|
||||
{
|
||||
float x, y, z, o;
|
||||
streamer.m_pos->GetPosition(x, y, z, o);
|
||||
buf << x << y << z << o;
|
||||
return buf;
|
||||
}
|
||||
|
||||
WorldObject::WorldObject()
|
||||
: WorldLocation(), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_currMap(NULL)
|
||||
, m_zoneScript(NULL)
|
||||
@@ -1241,12 +1272,12 @@ bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool
|
||||
|
||||
if (m_transport && obj->GetTransport() && obj->GetTransport()->GetGUIDLow() == m_transport->GetGUIDLow())
|
||||
{
|
||||
float dtx = m_movementInfo.t_x - obj->m_movementInfo.t_x;
|
||||
float dty = m_movementInfo.t_y - obj->m_movementInfo.t_y;
|
||||
float dtx = m_movementInfo.t_pos.m_positionX - obj->m_movementInfo.t_pos.m_positionX;
|
||||
float dty = m_movementInfo.t_pos.m_positionY - obj->m_movementInfo.t_pos.m_positionY;
|
||||
float disttsq = dtx * dtx + dty * dty;
|
||||
if (is3D)
|
||||
{
|
||||
float dtz = m_movementInfo.t_z - obj->m_movementInfo.t_z;
|
||||
float dtz = m_movementInfo.t_pos.m_positionZ - obj->m_movementInfo.t_pos.m_positionZ;
|
||||
disttsq += dtz * dtz;
|
||||
}
|
||||
return disttsq < (maxdist * maxdist);
|
||||
|
||||
@@ -117,44 +117,9 @@ class ZoneScript;
|
||||
class Unit;
|
||||
class Transport;
|
||||
|
||||
|
||||
typedef UNORDERED_MAP<Player*, UpdateData> UpdateDataMapType;
|
||||
|
||||
struct MovementInfo
|
||||
{
|
||||
// common
|
||||
uint64 guid;
|
||||
uint32 flags;
|
||||
uint16 unk1;
|
||||
uint32 time;
|
||||
float x, y, z, o;
|
||||
// transport
|
||||
uint64 t_guid;
|
||||
float t_x, t_y, t_z, t_o;
|
||||
uint32 t_time;
|
||||
int8 t_seat;
|
||||
// swimming and unknown
|
||||
float s_pitch;
|
||||
// last fall time
|
||||
uint32 fallTime;
|
||||
// jumping
|
||||
float j_zspeed, j_sinAngle, j_cosAngle, j_xyspeed;
|
||||
// spline
|
||||
float u_unk1;
|
||||
|
||||
MovementInfo()
|
||||
{
|
||||
flags = 0;
|
||||
time = t_time = fallTime = 0;
|
||||
unk1 = 0;
|
||||
x = y = z = o = t_x = t_y = t_z = t_o = s_pitch = j_zspeed = j_sinAngle = j_cosAngle = j_xyspeed = u_unk1 = 0.0f;
|
||||
t_guid = 0;
|
||||
}
|
||||
|
||||
uint32 GetMovementFlags() { return flags; }
|
||||
void AddMovementFlag(uint32 flag) { flags |= flag; }
|
||||
bool HasMovementFlag(uint32 flag) const { return flags & flag; }
|
||||
};
|
||||
|
||||
class Object
|
||||
{
|
||||
public:
|
||||
@@ -405,6 +370,18 @@ class Object
|
||||
|
||||
struct Position
|
||||
{
|
||||
struct PositionXYZStreamer
|
||||
{
|
||||
explicit PositionXYZStreamer(Position& pos) : m_pos(&pos) {}
|
||||
Position* m_pos;
|
||||
};
|
||||
|
||||
struct PositionXYZOStreamer
|
||||
{
|
||||
explicit PositionXYZOStreamer(Position& pos) : m_pos(&pos) {}
|
||||
Position* m_pos;
|
||||
};
|
||||
|
||||
float m_positionX;
|
||||
float m_positionY;
|
||||
float m_positionZ;
|
||||
@@ -440,6 +417,15 @@ struct Position
|
||||
pos->Relocate(m_positionX, m_positionY, m_positionZ, m_orientation);
|
||||
}
|
||||
|
||||
Position::PositionXYZStreamer PositionXYZStream()
|
||||
{
|
||||
return Position::PositionXYZStreamer(*this);
|
||||
}
|
||||
Position::PositionXYZOStreamer PositionXYZOStream()
|
||||
{
|
||||
return Position::PositionXYZOStreamer(*this);
|
||||
}
|
||||
|
||||
bool IsPositionValid() const;
|
||||
|
||||
float GetExactDist2dSq(float x, float y) const
|
||||
@@ -477,6 +463,50 @@ struct Position
|
||||
bool HasInArc(float arcangle, const Position *pos) const;
|
||||
bool HasInLine(const Unit *target, float distance, float width) const;
|
||||
};
|
||||
ByteBuffer &operator>>(ByteBuffer& buf, Position::PositionXYZOStreamer const & streamer);
|
||||
ByteBuffer & operator<<(ByteBuffer& buf, Position::PositionXYZStreamer const & streamer);
|
||||
ByteBuffer &operator>>(ByteBuffer& buf, Position::PositionXYZStreamer const & streamer);
|
||||
ByteBuffer & operator<<(ByteBuffer& buf, Position::PositionXYZOStreamer const & streamer);
|
||||
|
||||
struct MovementInfo
|
||||
{
|
||||
// common
|
||||
uint64 guid;
|
||||
uint32 flags;
|
||||
uint16 flags2;
|
||||
Position pos;
|
||||
uint32 time;
|
||||
// transport
|
||||
uint64 t_guid;
|
||||
Position t_pos;
|
||||
uint32 t_time;
|
||||
uint32 t_time2;
|
||||
int8 t_seat;
|
||||
// swimming/flying
|
||||
float pitch;
|
||||
// falling
|
||||
uint32 fallTime;
|
||||
// jumping
|
||||
float j_zspeed, j_sinAngle, j_cosAngle, j_xyspeed;
|
||||
// spline
|
||||
float splineElevation;
|
||||
|
||||
MovementInfo()
|
||||
{
|
||||
guid = 0;
|
||||
flags = 0;
|
||||
flags2 = 0;
|
||||
time = t_time = fallTime = 0;
|
||||
splineElevation = 0;
|
||||
pitch = j_zspeed = j_sinAngle = j_cosAngle = j_xyspeed = 0.0f;
|
||||
t_guid = 0;
|
||||
t_seat = -1;
|
||||
}
|
||||
|
||||
uint32 GetMovementFlags() { return flags; }
|
||||
void AddMovementFlag(uint32 flag) { flags |= flag; }
|
||||
bool HasMovementFlag(uint32 flag) const { return flags & flag; }
|
||||
};
|
||||
|
||||
#define MAPID_INVALID 0xFFFFFFFF
|
||||
|
||||
|
||||
@@ -1851,10 +1851,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
||||
{
|
||||
m_transport->RemovePassenger(this);
|
||||
m_transport = NULL;
|
||||
m_movementInfo.t_x = 0.0f;
|
||||
m_movementInfo.t_y = 0.0f;
|
||||
m_movementInfo.t_z = 0.0f;
|
||||
m_movementInfo.t_o = 0.0f;
|
||||
m_movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
m_movementInfo.t_time = 0;
|
||||
m_movementInfo.t_seat = -1;
|
||||
}
|
||||
@@ -1990,7 +1987,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
||||
|
||||
data.Initialize(SMSG_NEW_WORLD, (20));
|
||||
if (m_transport)
|
||||
data << (uint32)mapid << m_movementInfo.t_x << m_movementInfo.t_y << m_movementInfo.t_z << m_movementInfo.t_o;
|
||||
data << (uint32)mapid << m_movementInfo.t_pos.PositionXYZOStream();
|
||||
else
|
||||
data << (uint32)mapid << (float)x << (float)y << (float)z << (float)orientation;
|
||||
|
||||
@@ -2010,10 +2007,10 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
||||
|
||||
if (m_transport)
|
||||
{
|
||||
final_x += m_movementInfo.t_x;
|
||||
final_y += m_movementInfo.t_y;
|
||||
final_z += m_movementInfo.t_z;
|
||||
final_o += m_movementInfo.t_o;
|
||||
final_x += m_movementInfo.t_pos.GetPositionX();
|
||||
final_y += m_movementInfo.t_pos.GetPositionY();
|
||||
final_z += m_movementInfo.t_pos.GetPositionZ();
|
||||
final_o += m_movementInfo.t_pos.GetOrientation();
|
||||
}
|
||||
|
||||
m_teleport_dest = WorldLocation(mapid, final_x, final_y, final_z, final_o);
|
||||
@@ -16057,20 +16054,17 @@ bool Player::LoadFromDB(uint32 guid, SqlQueryHolder *holder)
|
||||
instanceId = 0;
|
||||
|
||||
m_movementInfo.t_guid = MAKE_NEW_GUID(transGUID, 0, HIGHGUID_TRANSPORT);
|
||||
m_movementInfo.t_x = fields[26].GetFloat();
|
||||
m_movementInfo.t_y = fields[27].GetFloat();
|
||||
m_movementInfo.t_z = fields[28].GetFloat();
|
||||
m_movementInfo.t_o = fields[29].GetFloat();
|
||||
m_movementInfo.t_pos.Relocate(fields[26].GetFloat(), fields[27].GetFloat(), fields[28].GetFloat(), fields[29].GetFloat());
|
||||
|
||||
if (!Trinity::IsValidMapCoord(
|
||||
GetPositionX()+m_movementInfo.t_x,GetPositionY()+m_movementInfo.t_y,
|
||||
GetPositionZ()+m_movementInfo.t_z,GetOrientation()+m_movementInfo.t_o) ||
|
||||
GetPositionX()+m_movementInfo.t_pos.m_positionX,GetPositionY()+m_movementInfo.t_pos.m_positionY,
|
||||
GetPositionZ()+m_movementInfo.t_pos.m_positionZ,GetOrientation()+m_movementInfo.t_pos.m_orientation) ||
|
||||
// transport size limited
|
||||
m_movementInfo.t_x > 250 || m_movementInfo.t_y > 250 || m_movementInfo.t_z > 250)
|
||||
m_movementInfo.t_pos.m_positionX > 250 || m_movementInfo.t_pos.m_positionY > 250 || m_movementInfo.t_pos.m_positionZ > 250)
|
||||
{
|
||||
sLog.outError("Player (guidlow %d) have invalid transport coordinates (X: %f Y: %f Z: %f O: %f). Teleport to default race/class locations.",
|
||||
guid,GetPositionX()+m_movementInfo.t_x,GetPositionY()+m_movementInfo.t_y,
|
||||
GetPositionZ()+m_movementInfo.t_z,GetOrientation()+m_movementInfo.t_o);
|
||||
guid,GetPositionX()+m_movementInfo.t_pos.m_positionX,GetPositionY()+m_movementInfo.t_pos.m_positionY,
|
||||
GetPositionZ()+m_movementInfo.t_pos.m_positionZ,GetOrientation()+m_movementInfo.t_pos.m_orientation);
|
||||
|
||||
RelocateToHomebind();
|
||||
}
|
||||
@@ -17675,10 +17669,10 @@ void Player::SaveToDB()
|
||||
ss << m_resetTalentsCost << ", ";
|
||||
ss << (uint64)m_resetTalentsTime << ", ";
|
||||
|
||||
ss << finiteAlways(m_movementInfo.t_x) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_y) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_z) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_o) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_pos.GetPositionX()) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_pos.GetPositionY()) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_pos.GetPositionZ()) << ", ";
|
||||
ss << finiteAlways(m_movementInfo.t_pos.GetOrientation()) << ", ";
|
||||
if (m_transport)
|
||||
ss << m_transport->GetGUIDLow();
|
||||
else
|
||||
@@ -22845,7 +22839,7 @@ uint8 Player::CanEquipUniqueItem(ItemPrototype const* itemProto, uint8 except_sl
|
||||
void Player::HandleFall(MovementInfo const& movementInfo)
|
||||
{
|
||||
// calculate total z distance of the fall
|
||||
float z_diff = m_lastFallZ - movementInfo.z;
|
||||
float z_diff = m_lastFallZ - movementInfo.pos.GetPositionZ();
|
||||
//sLog.outDebug("zDiff = %f", z_diff);
|
||||
|
||||
//Players with low fall distance, Feather Fall or physical immunity (charges used) are ignored
|
||||
@@ -22863,8 +22857,8 @@ void Player::HandleFall(MovementInfo const& movementInfo)
|
||||
{
|
||||
uint32 damage = (uint32)(damageperc * GetMaxHealth()*sWorld.getRate(RATE_DAMAGE_FALL));
|
||||
|
||||
float height = movementInfo.z;
|
||||
UpdateGroundPositionZ(movementInfo.x,movementInfo.y,height);
|
||||
float height = movementInfo.t_pos.m_positionZ;
|
||||
UpdateGroundPositionZ(movementInfo.pos.m_positionX,movementInfo.pos.m_positionY,height);
|
||||
|
||||
if (damage > 0)
|
||||
{
|
||||
@@ -22885,7 +22879,7 @@ void Player::HandleFall(MovementInfo const& movementInfo)
|
||||
}
|
||||
|
||||
//Z given by moveinfo, LastZ, FallTime, WaterZ, MapZ, Damage, Safefall reduction
|
||||
DEBUG_LOG("FALLDAMAGE z=%f sz=%f pZ=%f FallTime=%d mZ=%f damage=%d SF=%d" , movementInfo.z, height, GetPositionZ(), movementInfo.fallTime, height, damage, safe_fall);
|
||||
DEBUG_LOG("FALLDAMAGE z=%f sz=%f pZ=%f FallTime=%d mZ=%f damage=%d SF=%d" , movementInfo.pos.GetPositionZ(), height, GetPositionZ(), movementInfo.fallTime, height, damage, safe_fall);
|
||||
}
|
||||
}
|
||||
RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LANDING); // No fly zone - Parachute
|
||||
@@ -23165,8 +23159,8 @@ void Player::UpdateKnownCurrencies(uint32 itemId, bool apply)
|
||||
|
||||
void Player::UpdateFallInformationIfNeed(MovementInfo const& minfo,uint16 opcode)
|
||||
{
|
||||
if (m_lastFallTime >= minfo.fallTime || m_lastFallZ <= minfo.z || opcode == MSG_MOVE_FALL_LAND)
|
||||
SetFallInformation(minfo.fallTime, minfo.z);
|
||||
if (m_lastFallTime >= minfo.fallTime || m_lastFallZ <= minfo.pos.GetPositionZ() || opcode == MSG_MOVE_FALL_LAND)
|
||||
SetFallInformation(minfo.fallTime, minfo.pos.GetPositionZ());
|
||||
}
|
||||
|
||||
void Player::UnsummonPetTemporaryIfAny()
|
||||
|
||||
@@ -644,17 +644,14 @@ uint32 Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y,
|
||||
pCreature->SetTransport(this);
|
||||
pCreature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
|
||||
pCreature->m_movementInfo.guid = GetGUID();
|
||||
pCreature->m_movementInfo.t_x = x;
|
||||
pCreature->m_movementInfo.t_y = y;
|
||||
pCreature->m_movementInfo.t_z = z;
|
||||
pCreature->m_movementInfo.t_o = o;
|
||||
pCreature->m_movementInfo.t_pos.Relocate(x, y, z, o);
|
||||
pCreature->setActive(true);
|
||||
|
||||
if (anim > 0)
|
||||
pCreature->SetUInt32Value(UNIT_NPC_EMOTESTATE,anim);
|
||||
|
||||
pCreature->Relocate(
|
||||
GetPositionX() + (x * cos(GetOrientation()) + y * sin(GetOrientation() + 3.14159f)),
|
||||
GetPositionX() + (x * cos(GetOrientation()) + y * sin(GetOrientation() + M_PI)),
|
||||
GetPositionY() + (y * cos(GetOrientation()) + x * sin(GetOrientation())),
|
||||
z + GetPositionZ() ,
|
||||
o + GetOrientation());
|
||||
@@ -684,10 +681,10 @@ uint32 Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y,
|
||||
|
||||
void Transport::UpdatePosition(MovementInfo* mi)
|
||||
{
|
||||
float transport_o = mi->o - mi->t_o;
|
||||
float transport_x = mi->x - (mi->t_x*cos(transport_o) - mi->t_y*sin(transport_o));
|
||||
float transport_y = mi->y - (mi->t_y*cos(transport_o) + mi->t_x*sin(transport_o));
|
||||
float transport_z = mi->z - mi->t_z;
|
||||
float transport_o = mi->pos.m_orientation - mi->t_pos.m_orientation;
|
||||
float transport_x = mi->pos.m_positionX - (mi->t_pos.m_positionX * cos(transport_o) - mi->t_pos.m_positionY*sin(transport_o));
|
||||
float transport_y = mi->pos.m_positionY - (mi->t_pos.m_positionY * cos(transport_o) + mi->t_pos.m_positionX*sin(transport_o));
|
||||
float transport_z = mi->pos.m_positionZ - mi->t_pos.m_positionZ;
|
||||
|
||||
Relocate(transport_x,transport_y,transport_z,transport_o);
|
||||
UpdateNPCPositions();
|
||||
@@ -707,10 +704,10 @@ void Transport::UpdateNPCPositions()
|
||||
if (Creature* npc = Creature::GetCreature(*this, guid))
|
||||
{
|
||||
float x, y, z, o;
|
||||
o = GetOrientation() + npc->m_movementInfo.t_o;
|
||||
x = GetPositionX() + (npc->m_movementInfo.t_x * cos(GetOrientation()) + npc->m_movementInfo.t_y * sin(GetOrientation() + 3.14159f));
|
||||
y = GetPositionY() + (npc->m_movementInfo.t_y * cos(GetOrientation()) + npc->m_movementInfo.t_x * sin(GetOrientation()));
|
||||
z = GetPositionZ() + npc->m_movementInfo.t_z;
|
||||
o = GetOrientation() + npc->m_movementInfo.t_pos.m_orientation;
|
||||
x = GetPositionX() + (npc->m_movementInfo.t_pos.m_positionX * cos(GetOrientation()) + npc->m_movementInfo.t_pos.m_positionY * sin(GetOrientation() + M_PI));
|
||||
y = GetPositionY() + (npc->m_movementInfo.t_pos.m_positionY * cos(GetOrientation()) + npc->m_movementInfo.t_pos.m_positionX * sin(GetOrientation()));
|
||||
z = GetPositionZ() + npc->m_movementInfo.t_pos.m_positionZ;
|
||||
npc->SetPosition(x, y, z,o);
|
||||
npc->SetHomePosition(x,y,z,o);
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@ void Unit::SendMonsterStop(bool on_death)
|
||||
if (on_death == true)
|
||||
{
|
||||
data << uint8(0);
|
||||
data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? MOVEFLAG_FLY : MOVEFLAG_WALK);
|
||||
data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? SPLINEFLAG_FLYING : SPLINEFLAG_WALKING);
|
||||
data << uint32(0); // Time in between points
|
||||
data << uint32(1); // 1 single waypoint
|
||||
data << GetPositionX() << GetPositionY() << GetPositionZ();
|
||||
@@ -349,7 +349,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 T
|
||||
data << getMSTime();
|
||||
|
||||
data << uint8(0);
|
||||
data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? MOVEFLAG_FLY : MOVEFLAG_WALK);
|
||||
data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? SPLINEFLAG_FLYING : SPLINEFLAG_WALKING);
|
||||
data << Time; // Time in between points
|
||||
data << uint32(1); // 1 single waypoint
|
||||
data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B
|
||||
@@ -374,7 +374,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 M
|
||||
data << uint8(0);
|
||||
data << MoveFlags;
|
||||
|
||||
if (MoveFlags & MOVEFLAG_JUMP)
|
||||
if (MoveFlags & SPLINEFLAG_TRAJECTORY)
|
||||
{
|
||||
data << time;
|
||||
data << speedZ;
|
||||
@@ -452,7 +452,7 @@ void Unit::SendMonsterMoveTransport(Unit *vehicleOwner)
|
||||
data << uint32(getMSTime());
|
||||
data << uint8(4);
|
||||
data << GetTransOffsetO();
|
||||
data << uint32(MOVEFLAG_ENTER_TRANSPORT);
|
||||
data << uint32(SPLINEFLAG_TRANSPORT);
|
||||
data << uint32(0);// move time
|
||||
data << uint32(0);//GetTransOffsetX();
|
||||
data << uint32(0);//GetTransOffsetY();
|
||||
@@ -9752,9 +9752,9 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
||||
if (!charm->AddUInt64Value(UNIT_FIELD_CHARMEDBY, GetGUID()))
|
||||
sLog.outCrash("Unit %u is being charmed, but it already has a charmer %u", charm->GetEntry(), charm->GetCharmerGUID());
|
||||
|
||||
if (charm->HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE))
|
||||
if (charm->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
|
||||
{
|
||||
charm->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
charm->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
charm->SendMovementFlagUpdate();
|
||||
}
|
||||
|
||||
@@ -16411,10 +16411,7 @@ void Unit::ExitVehicle()
|
||||
SetControlled(false, UNIT_STAT_ROOT);
|
||||
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
|
||||
m_movementInfo.t_x = 0;
|
||||
m_movementInfo.t_y = 0;
|
||||
m_movementInfo.t_z = 0;
|
||||
m_movementInfo.t_o = 0;
|
||||
m_movementInfo.t_pos.Relocate(0, 0, 0, 0);
|
||||
m_movementInfo.t_time = 0;
|
||||
m_movementInfo.t_seat = 0;
|
||||
|
||||
@@ -16446,17 +16443,17 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
|
||||
break;
|
||||
case TYPEID_PLAYER:
|
||||
// remove unknown, unused etc flags for now
|
||||
const_cast<Unit*>(this)->RemoveUnitMovementFlag(MOVEMENTFLAG_SPLINE2);
|
||||
const_cast<Unit*>(this)->RemoveUnitMovementFlag(MOVEMENTFLAG_SPLINE_ENABLED);
|
||||
if (isInFlight())
|
||||
{
|
||||
WPAssert(const_cast<Unit*>(this)->GetMotionMaster()->GetCurrentMovementGeneratorType() == FLIGHT_MOTION_TYPE);
|
||||
const_cast<Unit*>(this)->AddUnitMovementFlag(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_SPLINE2);
|
||||
const_cast<Unit*>(this)->AddUnitMovementFlag(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_SPLINE_ENABLED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
*data << uint32(GetUnitMovementFlags()); // movement flags
|
||||
*data << uint16(m_movementInfo.unk1); // 2.3.0
|
||||
*data << uint16(m_movementInfo.flags2); // 2.3.0
|
||||
*data << uint32(getMSTime()); // time
|
||||
*data << GetPositionX();
|
||||
*data << GetPositionY();
|
||||
@@ -16485,8 +16482,8 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
|
||||
|
||||
// 0x02200000
|
||||
if ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))
|
||||
|| (m_movementInfo.unk1 & 0x20))
|
||||
*data << (float)m_movementInfo.s_pitch;
|
||||
|| (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
*data << (float)m_movementInfo.pitch;
|
||||
|
||||
*data << (uint32)m_movementInfo.fallTime;
|
||||
|
||||
@@ -16500,8 +16497,8 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
|
||||
}
|
||||
|
||||
// 0x04000000
|
||||
if (GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE)
|
||||
*data << (float)m_movementInfo.u_unk1;
|
||||
if (GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE_ELEVATION)
|
||||
*data << (float)m_movementInfo.splineElevation;
|
||||
|
||||
/*if (GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
@@ -16510,30 +16507,17 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
|
||||
}*/
|
||||
}
|
||||
|
||||
void Unit::OutMovementInfo() const
|
||||
{
|
||||
sLog.outString("MovementInfo for %u: Flag %u, Unk1 %u, Time %u, Pos %f %f %f %f, Fall %u", GetEntry(), m_movementInfo.flags, (uint32)m_movementInfo.unk1, m_movementInfo.time, GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation(), m_movementInfo.fallTime);
|
||||
if (m_movementInfo.flags & MOVEMENTFLAG_ONTRANSPORT)
|
||||
sLog.outString("Transport: GUID " UI64FMTD ", Pos %f %f %f %f, Time %u, Seat %d", m_movementInfo.t_guid, m_movementInfo.t_x, m_movementInfo.t_y, m_movementInfo.t_z, m_movementInfo.t_o, m_movementInfo.t_time, (int32)m_movementInfo.t_seat);
|
||||
if ((m_movementInfo.flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (m_movementInfo.unk1 & 0x20))
|
||||
sLog.outString("Pitch: %f", m_movementInfo.s_pitch);
|
||||
if (m_movementInfo.flags & MOVEMENTFLAG_JUMPING)
|
||||
sLog.outString("Jump: speedz %f, sin %f, cos %f, speedxy %f", m_movementInfo.j_zspeed, m_movementInfo.j_sinAngle, m_movementInfo.j_cosAngle, m_movementInfo.j_xyspeed);
|
||||
if (m_movementInfo.flags & MOVEMENTFLAG_SPLINE)
|
||||
sLog.outString("Spline: %f", m_movementInfo.u_unk1);
|
||||
}
|
||||
|
||||
void Unit::SetFlying(bool apply)
|
||||
{
|
||||
if (apply)
|
||||
{
|
||||
SetByteFlag(UNIT_FIELD_BYTES_1, 3, 0x02);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FLY_MODE | MOVEMENTFLAG_FLYING);
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, 0x02);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FLY_MODE | MOVEMENTFLAG_FLYING);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -636,91 +636,128 @@ enum NPCFlags
|
||||
UNIT_NPC_FLAG_OUTDOORPVP = 0x20000000, // custom flag for outdoor pvp creatures
|
||||
};
|
||||
|
||||
enum MoveFlags
|
||||
{
|
||||
MOVEFLAG_JUMP = 0x00000800,
|
||||
MOVEFLAG_WALK = 0x00001000,
|
||||
MOVEFLAG_FLY = 0x00002000,
|
||||
MOVEFLAG_GLIDE = 0x00003000, // dragon
|
||||
MOVEFLAG_ENTER_TRANSPORT = 0x00800000,
|
||||
};
|
||||
|
||||
enum MovementFlags
|
||||
{
|
||||
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_WALK_MODE = 0x00000100, // Walking
|
||||
MOVEMENTFLAG_ONTRANSPORT = 0x00000200, // Used for flying on some creatures
|
||||
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
||||
MOVEMENTFLAG_ROOT = 0x00000800,
|
||||
MOVEMENTFLAG_JUMPING = 0x00001000,
|
||||
MOVEMENTFLAG_FALL_DAMAGE = 0x00002000, // newZ < oldZ
|
||||
MOVEMENTFLAG_FALLING = 0x00004000,
|
||||
// 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
|
||||
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
||||
MOVEMENTFLAG_ASCEND = 0x00400000, // press "space" when flying
|
||||
MOVEMENTFLAG_CAN_FLY = 0x00800000,
|
||||
MOVEMENTFLAG_FLY_MODE = 0x01000000, // can fly
|
||||
MOVEMENTFLAG_FLYING = 0x02000000, // hover
|
||||
MOVEMENTFLAG_SPLINE = 0x04000000, // used for flight paths
|
||||
MOVEMENTFLAG_SPLINE2 = 0x08000000, // used for flight paths
|
||||
MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water
|
||||
MOVEMENTFLAG_SAFE_FALL = 0x20000000, // active rogue safe fall spell (passive)
|
||||
MOVEMENTFLAG_HOVER = 0x40000000, // hover, cannot jump
|
||||
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_ONTRANSPORT = 0x00000200, // Used for flying on some creatures
|
||||
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
||||
MOVEMENTFLAG_ROOT = 0x00000800,
|
||||
MOVEMENTFLAG_JUMPING = 0x00001000,
|
||||
MOVEMENTFLAG_FALLING = 0x00002000, // damage dealt on that type of falling
|
||||
MOVEMENTFLAG_PENDING_STOP = 0x00004000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_STOP = 0x00008000,
|
||||
MOVEMENTFLAG_PENDING_FORWARD = 0x00010000,
|
||||
MOVEMENTFLAG_PENDING_BACKWARD = 0x00020000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_LEFT = 0x00040000,
|
||||
MOVEMENTFLAG_PENDING_STRAFE_RIGHT = 0x00080000,
|
||||
MOVEMENTFLAG_PENDING_ROOT = 0x00100000,
|
||||
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
||||
MOVEMENTFLAG_ASCENDING = 0x00400000, // press "space" when flying
|
||||
MOVEMENTFLAG_DESCENDING = 0x00800000,
|
||||
MOVEMENTFLAG_CAN_FLY = 0x01000000, // can fly
|
||||
MOVEMENTFLAG_FLYING = 0x02000000, // hover
|
||||
MOVEMENTFLAG_SPLINE_ELEVATION = 0x04000000, // used for flight paths
|
||||
MOVEMENTFLAG_SPLINE_ENABLED = 0x08000000, // used for flight paths
|
||||
MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water
|
||||
MOVEMENTFLAG_FALLING_SLOW = 0x20000000, // active rogue safe fall spell (passive)
|
||||
MOVEMENTFLAG_HOVER = 0x40000000, // hover, cannot jump
|
||||
|
||||
MOVEMENTFLAG_MOVING =
|
||||
MOVEMENTFLAG_FORWARD |MOVEMENTFLAG_BACKWARD |MOVEMENTFLAG_STRAFE_LEFT|MOVEMENTFLAG_STRAFE_RIGHT|
|
||||
MOVEMENTFLAG_PITCH_UP|MOVEMENTFLAG_PITCH_DOWN|MOVEMENTFLAG_FALL_DAMAGE|
|
||||
MOVEMENTFLAG_JUMPING |MOVEMENTFLAG_FALLING |MOVEMENTFLAG_ASCEND |
|
||||
MOVEMENTFLAG_SPLINE,
|
||||
MOVEMENTFLAG_PITCH_UP|MOVEMENTFLAG_PITCH_DOWN|MOVEMENTFLAG_JUMPING
|
||||
|MOVEMENTFLAG_FALLING|MOVEMENTFLAG_ASCENDING| MOVEMENTFLAG_SPLINE_ELEVATION,
|
||||
MOVEMENTFLAG_TURNING =
|
||||
MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT,
|
||||
};
|
||||
|
||||
/*
|
||||
enum MonsterMovementFlags
|
||||
enum MovementFlags2
|
||||
{
|
||||
MONSTER_MOVE_NONE = 0x00000000,
|
||||
MONSTER_MOVE_FORWARD = 0x00000001,
|
||||
MONSTER_MOVE_BACKWARD = 0x00000002,
|
||||
MONSTER_MOVE_STRAFE_LEFT = 0x00000004,
|
||||
MONSTER_MOVE_STRAFE_RIGHT = 0x00000008,
|
||||
MONSTER_MOVE_LEFT = 0x00000010, // turn
|
||||
MONSTER_MOVE_RIGHT = 0x00000020, // turn
|
||||
MONSTER_MOVE_PITCH_UP = 0x00000040,
|
||||
MONSTER_MOVE_PITCH_DOWN = 0x00000080,
|
||||
MONSTER_MOVE_TELEPORT = 0x00000100,
|
||||
MONSTER_MOVE_TELEPORT2 = 0x00000200,
|
||||
MONSTER_MOVE_LEVITATING = 0x00000400,
|
||||
MONSTER_MOVE_UNK1 = 0x00000800, // float+uint32
|
||||
MONSTER_MOVE_WALK = 0x00001000, // run2?
|
||||
MONSTER_MOVE_SPLINE = 0x00002000, // spline n*(float x,y,z)
|
||||
// 0x4000, 0x8000, 0x10000, 0x20000 run
|
||||
MONSTER_MOVE_SPLINE2 = 0x00040000, // spline n*(float x,y,z)
|
||||
MONSTER_MOVE_UNK2 = 0x00080000, // used for flying mobs
|
||||
MONSTER_MOVE_UNK3 = 0x00100000, // used for flying mobs
|
||||
MONSTER_MOVE_UNK4 = 0x00200000, // uint8+uint32
|
||||
MONSTER_MOVE_UNK5 = 0x00400000, // run in place, then teleport to final point
|
||||
MONSTER_MOVE_UNK6 = 0x00800000, // teleport
|
||||
MONSTER_MOVE_UNK7 = 0x01000000, // run
|
||||
MONSTER_MOVE_FLY = 0x02000000, // swimming/flying (depends on mob?)
|
||||
MONSTER_MOVE_UNK9 = 0x04000000, // run
|
||||
MONSTER_MOVE_UNK10 = 0x08000000, // run
|
||||
MONSTER_MOVE_UNK11 = 0x10000000, // run
|
||||
MONSTER_MOVE_UNK12 = 0x20000000, // run
|
||||
MONSTER_MOVE_UNK13 = 0x40000000, // levitating
|
||||
MOVEMENTFLAG2_NONE = 0x00000000,
|
||||
MOVEMENTFLAG2_UNK1 = 0x00000001,
|
||||
MOVEMENTFLAG2_UNK2 = 0x00000002,
|
||||
MOVEMENTFLAG2_UNK3 = 0x00000004,
|
||||
MOVEMENTFLAG2_FULL_SPEED_TURNING = 0x00000008,
|
||||
MOVEMENTFLAG2_FULL_SPEED_PITCHING = 0x00000010,
|
||||
MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING = 0x00000020,
|
||||
MOVEMENTFLAG2_UNK7 = 0x00000040,
|
||||
MOVEMENTFLAG2_UNK8 = 0x00000080,
|
||||
MOVEMENTFLAG2_UNK9 = 0x00000100,
|
||||
MOVEMENTFLAG2_UNK10 = 0x00000200,
|
||||
MOVEMENTFLAG2_INTERPOLATED_MOVEMENT = 0x00000400,
|
||||
MOVEMENTFLAG2_INTERPOLATED_TURNING = 0x00000800,
|
||||
MOVEMENTFLAG2_INTERPOLATED_PITCHING = 0x00001000,
|
||||
MOVEMENTFLAG2_UNK14 = 0x00002000,
|
||||
MOVEMENTFLAG2_UNK15 = 0x00004000,
|
||||
MOVEMENTFLAG2_UNK16 = 0x00008000,
|
||||
|
||||
// masks
|
||||
MONSTER_MOVE_SPLINE_FLY = 0x00003000, // fly by points
|
||||
// player only?
|
||||
MOVEMENTFLAG2_INTERPOLATED =
|
||||
MOVEMENTFLAG2_INTERPOLATED_MOVEMENT |
|
||||
MOVEMENTFLAG2_INTERPOLATED_TURNING |
|
||||
MOVEMENTFLAG2_INTERPOLATED_PITCHING
|
||||
};
|
||||
enum SplineFlags
|
||||
{
|
||||
SPLINEFLAG_NONE = 0x00000000,
|
||||
SPLINEFLAG_FORWARD = 0x00000001,
|
||||
SPLINEFLAG_BACKWARD = 0x00000002,
|
||||
SPLINEFLAG_STRAFE_LEFT = 0x00000004,
|
||||
SPLINEFLAG_STRAFE_RIGHT = 0x00000008,
|
||||
SPLINEFLAG_LEFT = 0x00000010,
|
||||
SPLINEFLAG_RIGHT = 0x00000020,
|
||||
SPLINEFLAG_PITCH_UP = 0x00000040,
|
||||
SPLINEFLAG_PITCH_DOWN = 0x00000080,
|
||||
SPLINEFLAG_DONE = 0x00000100,
|
||||
SPLINEFLAG_FALLING = 0x00000200,
|
||||
SPLINEFLAG_NO_SPLINE = 0x00000400,
|
||||
SPLINEFLAG_TRAJECTORY = 0x00000800,
|
||||
SPLINEFLAG_WALKING = 0x00001000,
|
||||
SPLINEFLAG_FLYING = 0x00002000,
|
||||
SPLINEFLAG_KNOCKBACK = 0x00004000,
|
||||
SPLINEFLAG_FINAL_POINT = 0x00008000,
|
||||
SPLINEFLAG_FINAL_TARGET = 0x00010000,
|
||||
SPLINEFLAG_FINAL_FACING = 0x00020000,
|
||||
SPLINEFLAG_CATMULL_ROM = 0x00040000,
|
||||
SPLINEFLAG_UNKNOWN20 = 0x00080000,
|
||||
SPLINEFLAG_UNKNOWN21 = 0x00100000,
|
||||
SPLINEFLAG_UNKNOWN22 = 0x00200000,
|
||||
SPLINEFLAG_UNKNOWN23 = 0x00400000,
|
||||
SPLINEFLAG_TRANSPORT = 0x00800000,
|
||||
SPLINEFLAG_UNKNOWN25 = 0x01000000,
|
||||
SPLINEFLAG_UNKNOWN26 = 0x02000000,
|
||||
SPLINEFLAG_UNKNOWN27 = 0x04000000,
|
||||
SPLINEFLAG_UNKNOWN28 = 0x08000000,
|
||||
SPLINEFLAG_UNKNOWN29 = 0x10000000,
|
||||
SPLINEFLAG_ANIMATION = 0x20000000,
|
||||
SPLINEFLAG_UNKNOWN31 = 0x40000000,
|
||||
SPLINEFLAG_UNKNOWN32 = 0x80000000,
|
||||
|
||||
SPLINEFLAG_GLIDE = SPLINEFLAG_WALKING | SPLINEFLAG_FLYING,
|
||||
};
|
||||
|
||||
enum SplineMode
|
||||
{
|
||||
SPLINEMODE_LINEAR = 0,
|
||||
SPLINEMODE_CATMULL_ROM = 1,
|
||||
SPLINEMODE_BEZIER3 = 2
|
||||
};
|
||||
|
||||
enum SplineType
|
||||
{
|
||||
SPLINETYPE_NORMAL = 0,
|
||||
SPLINETYPE_STOP = 1,
|
||||
SPLINETYPE_FACING_SPOT = 2,
|
||||
SPLINETYPE_FACING_TARGET = 3,
|
||||
SPLINETYPE_FACING_ANGLE = 4
|
||||
};
|
||||
*/
|
||||
|
||||
enum UnitTypeMask
|
||||
{
|
||||
@@ -1424,7 +1461,6 @@ class Unit : public WorldObject
|
||||
void SendThreatListUpdate();
|
||||
|
||||
void BuildHeartBeatMsg(WorldPacket *data) const;
|
||||
void OutMovementInfo() const;
|
||||
|
||||
bool isAlive() const { return (m_deathState == ALIVE); };
|
||||
bool isDead() const { return (m_deathState == DEAD || m_deathState == CORPSE); };
|
||||
@@ -1913,10 +1949,10 @@ class Unit : public WorldObject
|
||||
bool IsOnVehicle(const Unit *vehicle) const { return m_vehicle && m_vehicle == vehicle->GetVehicleKit(); }
|
||||
Unit *GetVehicleBase() const;
|
||||
Creature *GetVehicleCreatureBase() const;
|
||||
float GetTransOffsetX() const { return m_movementInfo.t_x; }
|
||||
float GetTransOffsetY() const { return m_movementInfo.t_y; }
|
||||
float GetTransOffsetZ() const { return m_movementInfo.t_z; }
|
||||
float GetTransOffsetO() const { return m_movementInfo.t_o; }
|
||||
float GetTransOffsetX() const { return m_movementInfo.t_pos.GetPositionX(); }
|
||||
float GetTransOffsetY() const { return m_movementInfo.t_pos.GetPositionY(); }
|
||||
float GetTransOffsetZ() const { return m_movementInfo.t_pos.GetPositionZ(); }
|
||||
float GetTransOffsetO() const { return m_movementInfo.t_pos.GetOrientation(); }
|
||||
uint32 GetTransTime() const { return m_movementInfo.t_time; }
|
||||
int8 GetTransSeat() const { return m_movementInfo.t_seat; }
|
||||
|
||||
@@ -1932,7 +1968,7 @@ class Unit : public WorldObject
|
||||
|
||||
bool isMoving() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_MOVING); }
|
||||
bool isTurning() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_TURNING); }
|
||||
bool canFly() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_FLY_MODE); }
|
||||
bool canFly() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); }
|
||||
bool IsFlying() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_FLYING); }
|
||||
void SetFlying(bool apply);
|
||||
|
||||
@@ -2111,7 +2147,7 @@ inline void Unit::SendMonsterMoveByPath(Path<Elem,Node> const& path, uint32 star
|
||||
data << GetPositionZ();
|
||||
data << uint32(getMSTime());
|
||||
data << uint8(0);
|
||||
data << uint32(((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) || isInFlight()) ? (MOVEFLAG_FLY|MOVEFLAG_WALK) : MOVEFLAG_WALK);
|
||||
data << uint32(((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) || isInFlight()) ? (SPLINEFLAG_FLYING|SPLINEFLAG_WALKING) : SPLINEFLAG_WALKING);
|
||||
data << uint32(traveltime);
|
||||
data << uint32(pathSize);
|
||||
|
||||
|
||||
@@ -291,10 +291,10 @@ bool Vehicle::AddPassenger(Unit *unit, int8 seatId)
|
||||
|
||||
unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
|
||||
VehicleSeatEntry const *veSeat = seat->second.seatInfo;
|
||||
unit->m_movementInfo.t_x = veSeat->m_attachmentOffsetX;
|
||||
unit->m_movementInfo.t_y = veSeat->m_attachmentOffsetY;
|
||||
unit->m_movementInfo.t_z = veSeat->m_attachmentOffsetZ;
|
||||
unit->m_movementInfo.t_o = 0;
|
||||
unit->m_movementInfo.t_pos.m_positionX = veSeat->m_attachmentOffsetX;
|
||||
unit->m_movementInfo.t_pos.m_positionY = veSeat->m_attachmentOffsetY;
|
||||
unit->m_movementInfo.t_pos.m_positionZ = veSeat->m_attachmentOffsetZ;
|
||||
unit->m_movementInfo.t_pos.m_orientation = 0;
|
||||
unit->m_movementInfo.t_time = 0; // 1 for player
|
||||
unit->m_movementInfo.t_seat = seat->first;
|
||||
|
||||
@@ -378,10 +378,10 @@ void Vehicle::RelocatePassengers(float x, float y, float z, float ang)
|
||||
for (SeatMap::const_iterator itr = m_Seats.begin(); itr != m_Seats.end(); ++itr)
|
||||
if (Unit *passenger = itr->second.passenger)
|
||||
{
|
||||
float px = x + passenger->m_movementInfo.t_x;
|
||||
float py = y + passenger->m_movementInfo.t_y;
|
||||
float pz = z + passenger->m_movementInfo.t_z;
|
||||
float po = ang + passenger->m_movementInfo.t_o;
|
||||
float px = x + passenger->m_movementInfo.t_pos.m_positionX;
|
||||
float py = y + passenger->m_movementInfo.t_pos.m_positionY;
|
||||
float pz = z + passenger->m_movementInfo.t_pos.m_positionZ;
|
||||
float po = ang + passenger->m_movementInfo.t_pos.m_orientation;
|
||||
|
||||
passenger->SetPosition(px, py, pz, po);
|
||||
}
|
||||
|
||||
@@ -324,7 +324,7 @@ void MotionMaster::MoveJumpTo(float angle, float speedXY, float speedZ)
|
||||
|
||||
void MotionMaster::MoveJump(float x, float y, float z, float speedXY, float speedZ)
|
||||
{
|
||||
uint32 moveFlag = MOVEFLAG_JUMP | MOVEFLAG_WALK;
|
||||
uint32 moveFlag = SPLINEFLAG_TRAJECTORY | SPLINEFLAG_WALKING;
|
||||
uint32 time = speedZ * 100;
|
||||
|
||||
i_owner->addUnitState(UNIT_STAT_CHARGING | UNIT_STAT_JUMPING);
|
||||
|
||||
@@ -91,7 +91,7 @@ ConfusedMovementGenerator<T>::Initialize(T &unit)
|
||||
unit.SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CONFUSED);
|
||||
unit.CastStop();
|
||||
unit.StopMoving();
|
||||
unit.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
unit.RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
unit.addUnitState(UNIT_STAT_CONFUSED);
|
||||
}
|
||||
|
||||
|
||||
@@ -307,7 +307,7 @@ FleeingMovementGenerator<T>::Initialize(T &owner)
|
||||
owner.addUnitState(UNIT_STAT_FLEEING | UNIT_STAT_ROAMING);
|
||||
owner.SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
|
||||
owner.SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
if (Unit * fright = ObjectAccessor::GetUnit(owner, i_frightGUID))
|
||||
{
|
||||
|
||||
@@ -30,7 +30,7 @@ HomeMovementGenerator<Creature>::Initialize(Creature & owner)
|
||||
{
|
||||
float x, y, z;
|
||||
owner.GetHomePosition(x, y, z, ori);
|
||||
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
owner.addUnitState(UNIT_STAT_EVADE);
|
||||
_setTargetLocation(owner);
|
||||
}
|
||||
@@ -67,7 +67,7 @@ HomeMovementGenerator<Creature>::Update(Creature &owner, const uint32& time_diff
|
||||
|
||||
if (time_diff > i_travel_timer)
|
||||
{
|
||||
owner.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
owner.AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
// restore orientation of not moving creature at returning to home
|
||||
if (owner.GetDefaultMovementType() == IDLE_MOTION_TYPE)
|
||||
|
||||
@@ -128,7 +128,7 @@ RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature)
|
||||
else
|
||||
{
|
||||
i_nextMoveTime.Reset(urand(500+i_destinationHolder.GetTotalTravelTime(),5000+i_destinationHolder.GetTotalTravelTime()));
|
||||
creature.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
creature.AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
}
|
||||
|
||||
//Call for creature group update
|
||||
@@ -149,7 +149,7 @@ RandomMovementGenerator<Creature>::Initialize(Creature &creature)
|
||||
wander_distance = creature.GetRespawnRadius();
|
||||
|
||||
if (irand(0,RUNNING_CHANCE_RANDOMMV) > 0)
|
||||
creature.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
creature.AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
_setRandomLocation(creature);
|
||||
}
|
||||
|
||||
@@ -190,12 +190,12 @@ RandomMovementGenerator<Creature>::Update(Creature &creature, const uint32 &diff
|
||||
if (i_nextMoveTime.Passed())
|
||||
{
|
||||
if (irand(0,RUNNING_CHANCE_RANDOMMV) > 0)
|
||||
creature.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
creature.AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
_setRandomLocation(creature);
|
||||
}
|
||||
else if (creature.isPet() && creature.GetOwner() && !creature.IsWithinDist(creature.GetOwner(),PET_FOLLOW_DIST+2.5f))
|
||||
{
|
||||
creature.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
creature.RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
_setRandomLocation(creature);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ void
|
||||
TargetedMovementGenerator<T>::Initialize(T &owner)
|
||||
{
|
||||
if (owner.isInCombat())
|
||||
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
_setTargetLocation(owner);
|
||||
}
|
||||
|
||||
@@ -80,8 +80,8 @@ void WaypointMovementGenerator<Player>::Reset(Player & /*unit*/){}
|
||||
template<>
|
||||
void WaypointMovementGenerator<Creature>::InitTraveller(Creature &unit, const WaypointData &node)
|
||||
{
|
||||
node.run ? unit.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE):
|
||||
unit.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
node.run ? unit.RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING):
|
||||
unit.AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
unit.SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||
unit.SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||
|
||||
@@ -77,7 +77,7 @@ inline float Traveller<Creature>::Speed()
|
||||
{
|
||||
if (i_traveller.hasUnitState(UNIT_STAT_CHARGING))
|
||||
return i_traveller.m_TempSpeed;
|
||||
else if (i_traveller.HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE))
|
||||
else if (i_traveller.HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
|
||||
return i_traveller.GetSpeed(MOVE_WALK);
|
||||
else if (i_traveller.HasUnitMovementFlag(MOVEMENTFLAG_FLYING))
|
||||
return i_traveller.GetSpeed(MOVE_FLIGHT);
|
||||
@@ -120,7 +120,7 @@ inline float Traveller<Player>::Speed()
|
||||
else if (i_traveller.isInFlight())
|
||||
return PLAYER_FLIGHT_SPEED;
|
||||
else
|
||||
return i_traveller.GetSpeed(i_traveller.m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALK_MODE) ? MOVE_WALK : MOVE_RUN);
|
||||
return i_traveller.GetSpeed(i_traveller.m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING) ? MOVE_WALK : MOVE_RUN);
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -145,7 +145,7 @@ inline void Traveller<Player>::Relocation(float x, float y, float z, float orien
|
||||
template<>
|
||||
inline void Traveller<Player>::MoveTo(float x, float y, float z, uint32 t)
|
||||
{
|
||||
//Only send MOVEMENTFLAG_WALK_MODE, client has strange issues with other move flags
|
||||
//Only send MOVEMENTFLAG_WALKING, client has strange issues with other move flags
|
||||
i_traveller.SendMonsterMove(x, y, z, t);
|
||||
}
|
||||
|
||||
|
||||
@@ -280,7 +280,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data)
|
||||
/* return;
|
||||
}*/
|
||||
|
||||
if (!Trinity::IsValidMapCoord(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o))
|
||||
if (!movementInfo.pos.IsPositionValid())
|
||||
{
|
||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
||||
return;
|
||||
@@ -291,14 +291,14 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data)
|
||||
{
|
||||
// transports size limited
|
||||
// (also received at zeppelin leave by some reason with t_* as absolute in continent coordinates, can be safely skipped)
|
||||
if (movementInfo.t_x > 50 || movementInfo.t_y > 50 || movementInfo.t_z > 50)
|
||||
if (movementInfo.t_pos.GetPositionX() > 50 || movementInfo.t_pos.GetPositionY() > 50 || movementInfo.t_pos.GetPositionZ() > 50)
|
||||
{
|
||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Trinity::IsValidMapCoord(movementInfo.x+movementInfo.t_x, movementInfo.y + movementInfo.t_y,
|
||||
movementInfo.z + movementInfo.t_z, movementInfo.o + movementInfo.t_o))
|
||||
if (!Trinity::IsValidMapCoord(movementInfo.pos.GetPositionX() + movementInfo.t_pos.GetPositionX(), movementInfo.pos.GetPositionY() + movementInfo.t_pos.GetPositionY(),
|
||||
movementInfo.pos.GetPositionZ() + movementInfo.t_pos.GetPositionZ(), movementInfo.pos.GetOrientation() + movementInfo.t_pos.GetOrientation()))
|
||||
{
|
||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
||||
return;
|
||||
@@ -330,10 +330,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data)
|
||||
{
|
||||
plMover->m_transport->RemovePassenger(plMover);
|
||||
plMover->m_transport = NULL;
|
||||
movementInfo.t_x = 0.0f;
|
||||
movementInfo.t_y = 0.0f;
|
||||
movementInfo.t_z = 0.0f;
|
||||
movementInfo.t_o = 0.0f;
|
||||
movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
movementInfo.t_time = 0;
|
||||
movementInfo.t_seat = -1;
|
||||
}
|
||||
@@ -345,7 +342,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data)
|
||||
if (plMover && ((movementInfo.flags & MOVEMENTFLAG_SWIMMING) != 0) != plMover->IsInWater())
|
||||
{
|
||||
// now client not include swimming flag in case jumping under water
|
||||
plMover->SetInWater(!plMover->IsInWater() || plMover->GetBaseMap()->IsUnderWater(movementInfo.x, movementInfo.y, movementInfo.z));
|
||||
plMover->SetInWater(!plMover->IsInWater() || plMover->GetBaseMap()->IsUnderWater(movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY(), movementInfo.pos.GetPositionZ()));
|
||||
}
|
||||
|
||||
/*----------------------*/
|
||||
@@ -362,17 +359,17 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data)
|
||||
// this is almost never true (not sure why it is sometimes, but it is), normally use mover->IsVehicle()
|
||||
if (mover->GetVehicle())
|
||||
{
|
||||
mover->SetOrientation(movementInfo.o);
|
||||
mover->SetOrientation(movementInfo.pos.GetOrientation());
|
||||
return;
|
||||
}
|
||||
|
||||
mover->SetPosition(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o);
|
||||
mover->Relocate(movementInfo.pos);
|
||||
|
||||
if (plMover) // nothing is charmed, or player charmed
|
||||
{
|
||||
plMover->UpdateFallInformationIfNeed(movementInfo, opcode);
|
||||
|
||||
if (movementInfo.z < -500.0f)
|
||||
if (movementInfo.pos.GetPositionZ() < -500.0f)
|
||||
{
|
||||
if (plMover->InBattleGround()
|
||||
&& plMover->GetBattleGround()
|
||||
|
||||
@@ -712,33 +712,32 @@ void WorldSession::SaveTutorialsData()
|
||||
void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
|
||||
{
|
||||
data >> mi->flags;
|
||||
data >> mi->unk1;
|
||||
data >> mi->flags2;
|
||||
data >> mi->time;
|
||||
data >> mi->x;
|
||||
data >> mi->y;
|
||||
data >> mi->z;
|
||||
data >> mi->o;
|
||||
data >> mi->pos.PositionXYZOStream();
|
||||
|
||||
if (mi->flags & MOVEMENTFLAG_ONTRANSPORT)
|
||||
{
|
||||
if (!data.readPackGUID(mi->t_guid))
|
||||
return;
|
||||
|
||||
data >> mi->t_x;
|
||||
data >> mi->t_y;
|
||||
data >> mi->t_z;
|
||||
data >> mi->t_o;
|
||||
data >> mi->t_pos.PositionXYZOStream();
|
||||
data >> mi->t_time;
|
||||
data >> mi->t_seat;
|
||||
|
||||
if(mi->x != mi->t_x)
|
||||
if (mi->flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT)
|
||||
{
|
||||
data >> mi->t_time2;
|
||||
}
|
||||
|
||||
if(mi->pos.m_positionX != mi->t_pos.m_positionX)
|
||||
if(GetPlayer()->GetTransport())
|
||||
GetPlayer()->GetTransport()->UpdatePosition(mi);
|
||||
}
|
||||
|
||||
if ((mi->flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (mi->unk1 & 0x20))
|
||||
if ((mi->flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (mi->flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
{
|
||||
data >> mi->s_pitch;
|
||||
data >> mi->pitch;
|
||||
}
|
||||
|
||||
data >> mi->fallTime;
|
||||
@@ -751,9 +750,9 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
|
||||
data >> mi->j_xyspeed;
|
||||
}
|
||||
|
||||
if (mi->flags & MOVEMENTFLAG_SPLINE)
|
||||
if (mi->flags & MOVEMENTFLAG_SPLINE_ELEVATION)
|
||||
{
|
||||
data >> mi->u_unk1;
|
||||
data >> mi->splineElevation;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -762,28 +761,22 @@ void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi)
|
||||
data->appendPackGUID(mi->guid);
|
||||
|
||||
*data << mi->flags;
|
||||
*data << mi->unk1;
|
||||
*data << mi->flags2;
|
||||
*data << mi->time;
|
||||
*data << mi->x;
|
||||
*data << mi->y;
|
||||
*data << mi->z;
|
||||
*data << mi->o;
|
||||
*data << mi->pos.PositionXYZOStream();
|
||||
|
||||
if (mi->HasMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
{
|
||||
data->appendPackGUID(mi->t_guid);
|
||||
|
||||
*data << mi->t_x;
|
||||
*data << mi->t_y;
|
||||
*data << mi->t_z;
|
||||
*data << mi->t_o;
|
||||
*data << mi->t_time;
|
||||
*data << mi->t_seat;
|
||||
*data << mi->t_pos.PositionXYZOStream();
|
||||
*data << mi->t_time;
|
||||
*data << mi->t_seat;
|
||||
}
|
||||
|
||||
if ((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) || (mi->unk1 & 0x20))
|
||||
if ((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) || (mi->flags & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
{
|
||||
*data << mi->s_pitch;
|
||||
*data << mi->pitch;
|
||||
}
|
||||
|
||||
*data << mi->fallTime;
|
||||
@@ -796,9 +789,9 @@ void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi)
|
||||
*data << mi->j_xyspeed;
|
||||
}
|
||||
|
||||
if (mi->HasMovementFlag(MOVEMENTFLAG_SPLINE))
|
||||
if (mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION))
|
||||
{
|
||||
*data << mi->u_unk1;
|
||||
*data << mi->splineElevation;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ struct instance_deadmines : public ScriptedInstance
|
||||
|
||||
void MoveCreatureInside(Creature* pCreature)
|
||||
{
|
||||
pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pCreature->GetMotionMaster()->MovePoint(0, -102.7,-655.9, pCreature->GetPositionZ());
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ struct boss_nightbaneAI : public ScriptedAI
|
||||
|
||||
me->SetSpeed(MOVE_RUN, 2.0f);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->setActive(true);
|
||||
|
||||
if (pInstance)
|
||||
|
||||
@@ -159,7 +159,7 @@ struct boss_selin_fireheartAI : public ScriptedAI
|
||||
float x, y, z; // coords that we move to, close to the crystal.
|
||||
CrystalChosen->GetClosePoint(x, y, z, me->GetObjectSize(), CONTACT_DISTANCE);
|
||||
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->GetMotionMaster()->MovePoint(1, x, y, z);
|
||||
DrainingCrystal = true;
|
||||
}
|
||||
|
||||
@@ -549,7 +549,7 @@ struct npc_dark_rider_of_acherusAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
TargetGUID = who->GetGUID();
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->SetSpeed(MOVE_RUN, 0.4f);
|
||||
me->GetMotionMaster()->MoveChase(who);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, TargetGUID);
|
||||
@@ -819,7 +819,7 @@ struct npc_scarlet_miner_cartAI : public PassiveAI
|
||||
if (Creature *miner = Unit::GetCreature(*me, minerGUID))
|
||||
{
|
||||
// very bad visual effect
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
//me->SetSpeed(MOVE_WALK, miner->GetSpeed(MOVE_WALK));
|
||||
me->SetSpeed(MOVE_RUN, miner->GetSpeed(MOVE_RUN));
|
||||
me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0);
|
||||
|
||||
@@ -376,7 +376,7 @@ struct mob_scarlet_courierAI : public ScriptedAI
|
||||
switch(uiStage)
|
||||
{
|
||||
case 1:
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
if (GameObject* tree = me->FindNearestGameObject(GO_INCONSPICUOUS_TREE, 40.0f))
|
||||
{
|
||||
DoScriptText(SAY_TREE1, me);
|
||||
|
||||
@@ -466,7 +466,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
SetHoldState(true);
|
||||
break;
|
||||
case 1:
|
||||
@@ -501,7 +501,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
bIsBattle = true;
|
||||
break;
|
||||
case 2:
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
DoCast(me, SPELL_THE_LIGHT_OF_DAWN);
|
||||
break;
|
||||
case 3:
|
||||
@@ -515,30 +515,30 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
{
|
||||
if (pTemp->HasAura(SPELL_THE_LIGHT_OF_DAWN, 0))
|
||||
pTemp->RemoveAurasDueToSpell(SPELL_THE_LIGHT_OF_DAWN);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[19].x, LightofDawnLoc[19].y, LightofDawnLoc[19].z);
|
||||
}
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiThassarianGUID))
|
||||
{
|
||||
if (pTemp->HasAura(SPELL_THE_LIGHT_OF_DAWN, 0))
|
||||
pTemp->RemoveAurasDueToSpell(SPELL_THE_LIGHT_OF_DAWN);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[21].x, LightofDawnLoc[21].y, LightofDawnLoc[21].z);
|
||||
}
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiKorfaxGUID))
|
||||
{
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[10].x, LightofDawnLoc[10].y, LightofDawnLoc[10].z);
|
||||
}
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiMaxwellGUID))
|
||||
{
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[13].x, LightofDawnLoc[13].y, LightofDawnLoc[13].z);
|
||||
}
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiEligorGUID))
|
||||
{
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[16].x, LightofDawnLoc[16].y, LightofDawnLoc[16].z);
|
||||
}
|
||||
JumpToNextStep(10000);
|
||||
@@ -628,7 +628,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (uiSummon_counter < ENCOUNTER_GHOUL_NUMBER)
|
||||
{
|
||||
Unit* pTemp = me->SummonCreature(NPC_ACHERUS_GHOUL, (me->GetPositionX()-20)+rand()%40, (me->GetPositionY()-20)+rand()%40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->setFaction(2084);
|
||||
uiGhoulGUID[uiSummon_counter] = pTemp->GetGUID();
|
||||
++uiSummon_counter;
|
||||
@@ -646,7 +646,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (uiSummon_counter < ENCOUNTER_ABOMINATION_NUMBER)
|
||||
{
|
||||
Unit* pTemp = me->SummonCreature(NPC_RAMPAGING_ABOMINATION, (me->GetPositionX()-20)+rand()%40, (me->GetPositionY()-20)+rand()%40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->setFaction(2084);
|
||||
uiAbominationGUID[uiSummon_counter] = pTemp->GetGUID();
|
||||
++uiSummon_counter;
|
||||
@@ -664,7 +664,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (uiSummon_counter < ENCOUNTER_WARRIOR_NUMBER)
|
||||
{
|
||||
Unit* pTemp = me->SummonCreature(NPC_WARRIOR_OF_THE_FROZEN_WASTES, (me->GetPositionX()-20)+rand()%40, (me->GetPositionY()-20)+rand()%40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->setFaction(2084);
|
||||
uiWarriorGUID[uiSummon_counter] = pTemp->GetGUID();
|
||||
++uiSummon_counter;
|
||||
@@ -682,7 +682,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (uiSummon_counter < ENCOUNTER_BEHEMOTH_NUMBER)
|
||||
{
|
||||
Unit* pTemp = me->SummonCreature(NPC_FLESH_BEHEMOTH, (me->GetPositionX()-20)+rand()%40, (me->GetPositionY()-20)+rand()%40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->setFaction(2084);
|
||||
uiBehemothGUID[uiSummon_counter] = pTemp->GetGUID();
|
||||
++uiSummon_counter;
|
||||
@@ -703,17 +703,17 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
SetHoldState(false);
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiKoltiraGUID))
|
||||
{
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].x+rand()%30, LightofDawnLoc[0].y+rand()%30, LightofDawnLoc[0].z);
|
||||
}
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiOrbazGUID))
|
||||
{
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].x+rand()%30, LightofDawnLoc[0].y+rand()%30, LightofDawnLoc[0].z);
|
||||
}
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiThassarianGUID))
|
||||
{
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].x+rand()%30, LightofDawnLoc[0].y+rand()%30, LightofDawnLoc[0].z);
|
||||
}
|
||||
for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
|
||||
@@ -788,7 +788,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (Unit* pTemp = me->SummonCreature(NPC_DARION_MOGRAINE, LightofDawnLoc[24].x, LightofDawnLoc[24].y, LightofDawnLoc[24].z, LightofDawnLoc[24].o, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000))
|
||||
{
|
||||
DoScriptText(SAY_LIGHT_OF_DAWN35, pTemp);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
uiDarionGUID = pTemp->GetGUID();
|
||||
}
|
||||
JumpToNextStep(4000);
|
||||
@@ -904,7 +904,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
DoCast(me, SPELL_MOGRAINE_CHARGE); // jumping charge
|
||||
// doesn't make it looks well, so workarounds, Darion charges, looks better
|
||||
me->SetSpeed(MOVE_RUN, 3.0f);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
SetHoldState(false);
|
||||
JumpToNextStep(0);
|
||||
break;
|
||||
@@ -977,7 +977,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
Unit* pTemp;
|
||||
pTemp = me->SummonCreature(NPC_DEFENDER_OF_THE_LIGHT, LightofDawnLoc[0].x+rand()%10, LightofDawnLoc[0].y+rand()%10, LightofDawnLoc[0].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_ATTACK_UNARMED);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->SetSpeed(MOVE_RUN, 2.0f);
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
|
||||
@@ -985,7 +985,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
|
||||
pTemp = me->SummonCreature(NPC_RIMBLAT_EARTHSHATTER, LightofDawnLoc[0].x+rand()%10, LightofDawnLoc[0].y+rand()%10, LightofDawnLoc[0].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_ATTACK_UNARMED);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->SetSpeed(MOVE_RUN, 2.0f);
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
|
||||
@@ -994,7 +994,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiMaxwellGUID))
|
||||
{
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_ATTACK_UNARMED);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->SetSpeed(MOVE_RUN, 2.0f);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
|
||||
DoScriptText(SAY_LIGHT_OF_DAWN50, pTemp);
|
||||
@@ -1002,7 +1002,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiKorfaxGUID))
|
||||
{
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_ATTACK_UNARMED);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->SetSpeed(MOVE_RUN, 2.0f);
|
||||
pTemp->HandleEmoteCommand(EMOTE_STATE_ATTACK_UNARMED);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
|
||||
@@ -1010,7 +1010,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiEligorGUID))
|
||||
{
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_ATTACK_UNARMED);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->SetSpeed(MOVE_RUN, 2.0f);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
|
||||
}
|
||||
@@ -1075,7 +1075,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
|
||||
case 46: // Darion stand up, "not today"
|
||||
me->SetSpeed(MOVE_RUN, 1.0f);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoScriptText(SAY_LIGHT_OF_DAWN53, me);
|
||||
SetHoldState(false); // Darion throws sword
|
||||
@@ -1135,7 +1135,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
pTemp->CastSpell(pTemp, SPELL_TIRION_CHARGE, false); // jumping charge
|
||||
pTemp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||
pTemp->SetSpeed(MOVE_RUN, 3.0f); // workarounds, make Tirion still running
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[2].x, LightofDawnLoc[2].y, LightofDawnLoc[2].z);
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiLichKingGUID))
|
||||
pTemp->Relocate(LightofDawnLoc[28].x, LightofDawnLoc[28].y, LightofDawnLoc[28].z); // workarounds, he should kick back by Tirion, but here we relocate him
|
||||
@@ -1153,7 +1153,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiLichKingGUID))
|
||||
{
|
||||
pTemp->SetSpeed(MOVE_RUN, 1.0f);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[29].x, LightofDawnLoc[29].y, LightofDawnLoc[29].z); // 26
|
||||
}
|
||||
JumpToNextStep(4000);
|
||||
@@ -1213,7 +1213,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
case 62:
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiTirionGUID))
|
||||
{
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[7].x, LightofDawnLoc[7].y, LightofDawnLoc[7].z);
|
||||
}
|
||||
JumpToNextStep(5500);
|
||||
@@ -1394,7 +1394,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
me->DeleteThreatList();
|
||||
me->CombatStop(true);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
for (uint8 i = 0; i < ENCOUNTER_DEFENDER_NUMBER; ++i)
|
||||
DespawnNPC(uiDefenderGUID[i]);
|
||||
@@ -1416,7 +1416,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
pTemp->CombatStop(true);
|
||||
pTemp->AttackStop();
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[9].x, LightofDawnLoc[9].y, LightofDawnLoc[9].z);
|
||||
}
|
||||
|
||||
@@ -1427,7 +1427,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
pTemp->CombatStop(true);
|
||||
pTemp->AttackStop();
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[12].x, LightofDawnLoc[12].y, LightofDawnLoc[12].z);
|
||||
}
|
||||
|
||||
@@ -1438,7 +1438,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
pTemp->CombatStop(true);
|
||||
pTemp->AttackStop();
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[15].x, LightofDawnLoc[15].y, LightofDawnLoc[15].z);
|
||||
}
|
||||
DespawnNPC(uiRayneGUID);
|
||||
@@ -1450,7 +1450,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
pTemp->CombatStop(true);
|
||||
pTemp->AttackStop();
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[18].x, LightofDawnLoc[18].y, LightofDawnLoc[18].z);
|
||||
pTemp->CastSpell(pTemp, SPELL_THE_LIGHT_OF_DAWN, false);
|
||||
}
|
||||
@@ -1465,7 +1465,7 @@ struct npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
pTemp->CombatStop(true);
|
||||
pTemp->AttackStop();
|
||||
pTemp->setFaction(me->getFaction());
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTemp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[20].x, LightofDawnLoc[20].y, LightofDawnLoc[20].z);
|
||||
pTemp->CastSpell(pTemp, SPELL_THE_LIGHT_OF_DAWN, false);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ struct npc_valkyr_battle_maidenAI : public PassiveAI
|
||||
switch(phase)
|
||||
{
|
||||
case 0:
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->HandleEmoteCommand(EMOTE_STATE_FLYGRABCLOSED);
|
||||
FlyBackTimer = 500;
|
||||
break;
|
||||
|
||||
@@ -481,7 +481,7 @@ struct mob_amanishi_hatcherAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
side =(me->GetPositionY() < 1150);
|
||||
waypoint = 0;
|
||||
isHatching = false;
|
||||
|
||||
@@ -127,7 +127,7 @@ struct boss_nalorakkAI : public ScriptedAI
|
||||
inMove = false;
|
||||
waitTimer = 0;
|
||||
me->SetSpeed(MOVE_RUN,2);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
}else
|
||||
{
|
||||
(*me).GetMotionMaster()->MovePoint(0,NalorakkWay[7][0],NalorakkWay[7][1],NalorakkWay[7][2]);
|
||||
|
||||
@@ -178,8 +178,8 @@ struct npc_ranger_lilathaAI : public npc_escortAI
|
||||
me->AI()->AttackStart(Summ1);
|
||||
break;
|
||||
}
|
||||
case 19: me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); break;
|
||||
case 25: me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); break;
|
||||
case 19: me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); break;
|
||||
case 25: me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING); break;
|
||||
case 30:
|
||||
if (pPlayer && pPlayer->GetTypeId() == TYPEID_PLAYER)
|
||||
CAST_PLR(pPlayer)->GroupEventHappens(QUEST_ESCAPE_FROM_THE_CATACOMBS,me);
|
||||
|
||||
@@ -243,7 +243,7 @@ struct npc_rinjiAI : public npc_escortAI
|
||||
|
||||
void JustSummoned(Creature* pSummoned)
|
||||
{
|
||||
pSummoned->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pSummoned->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pSummoned->GetMotionMaster()->MovePoint(0, m_afAmbushMoveTo[m_iSpawnId].m_fX, m_afAmbushMoveTo[m_iSpawnId].m_fY, m_afAmbushMoveTo[m_iSpawnId].m_fZ);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@ struct npc_corporal_keeshanAI : public npc_escortAI
|
||||
if (!pPlayer)
|
||||
return;
|
||||
|
||||
if (uiI >= 65 && me->GetUnitMovementFlags() == MOVEMENTFLAG_WALK_MODE)
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
if (uiI >= 65 && me->GetUnitMovementFlags() == MOVEMENTFLAG_WALKING)
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
switch(uiI)
|
||||
{
|
||||
@@ -73,7 +73,7 @@ struct npc_corporal_keeshanAI : public npc_escortAI
|
||||
uiPhase = 1;
|
||||
break;
|
||||
case 65:
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
break;
|
||||
case 115:
|
||||
pPlayer->AreaExploredOrEventHappens(QUEST_MISSING_IN_ACTION);
|
||||
|
||||
@@ -417,7 +417,7 @@ struct npc_marzon_silent_bladeAI : public ScriptedAI
|
||||
{
|
||||
npc_marzon_silent_bladeAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
|
||||
@@ -490,7 +490,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
|
||||
// Increment Enemy Count to be used in World States and instance script
|
||||
++EnemyCount;
|
||||
|
||||
pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pCreature->setActive(true);
|
||||
switch(entry)
|
||||
{
|
||||
@@ -1014,7 +1014,7 @@ void hyjalAI::WaypointReached(uint32 i)
|
||||
if ((*itr) && (*itr)->isAlive() && (*itr) != me && (*itr)->GetEntry() != JAINA)
|
||||
{
|
||||
if (!(*itr)->IsWithinDist(me, 60))
|
||||
(*itr)->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
(*itr)->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
float x, y, z;
|
||||
(*itr)->SetDefaultMovementType(IDLE_MOTION_TYPE);
|
||||
(*itr)->GetMotionMaster()->Initialize();
|
||||
|
||||
+6
-6
@@ -485,11 +485,11 @@ struct npc_arthasAI : public npc_escortAI
|
||||
break;
|
||||
//After waypoint 0
|
||||
case 1:
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
if (Unit* pUther = me->SummonCreature(NPC_UTHER,1794.357f,1272.183f,140.558f,1.37f,TEMPSUMMON_DEAD_DESPAWN,180000))
|
||||
{
|
||||
uiUtherGUID = pUther->GetGUID();
|
||||
pUther->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pUther->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pUther->GetMotionMaster()->MovePoint(0, 1897.018f, 1287.487f, 143.481f);
|
||||
pUther->SetUInt64Value(UNIT_FIELD_TARGET, me->GetGUID());
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, uiUtherGUID);
|
||||
@@ -574,7 +574,7 @@ struct npc_arthasAI : public npc_escortAI
|
||||
case 17:
|
||||
if (Creature* pUther = Unit::GetCreature(*me, uiUtherGUID))
|
||||
{
|
||||
pUther->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pUther->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pUther->GetMotionMaster()->MovePoint(0, 1794.357f,1272.183f,140.558f);
|
||||
}
|
||||
JumpToNextStep(1000);
|
||||
@@ -583,7 +583,7 @@ struct npc_arthasAI : public npc_escortAI
|
||||
if (Creature* pJaina = Unit::GetCreature(*me, uiJainaGUID))
|
||||
{
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, uiJainaGUID);
|
||||
pJaina->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pJaina->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pJaina->GetMotionMaster()->MovePoint(0, 1794.357f,1272.183f,140.558f);
|
||||
}
|
||||
JumpToNextStep(1000);
|
||||
@@ -649,7 +649,7 @@ struct npc_arthasAI : public npc_escortAI
|
||||
if (Creature* pCityman = Unit::GetCreature(*me, uiCitymenGUID[0]))
|
||||
{
|
||||
pCityman->SetUInt64Value(UNIT_FIELD_TARGET, me->GetGUID());
|
||||
pCityman->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pCityman->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pCityman->GetMotionMaster()->MovePoint(0, 2088.625f,1279.191f,140.743f);
|
||||
}
|
||||
JumpToNextStep(2000);
|
||||
@@ -822,7 +822,7 @@ struct npc_arthasAI : public npc_escortAI
|
||||
if (Unit* pBoss = me->SummonCreature(uiBossID,2232.19f,1331.933f,126.662f,3.15f,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,900000))
|
||||
{
|
||||
uiBossGUID = pBoss->GetGUID();
|
||||
pBoss->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pBoss->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pBoss->GetMotionMaster()->MovePoint(0, 2194.110f,1332.00f,130.00f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,7 +301,7 @@ struct npc_thrall_old_hillsbradAI : public npc_escortAI
|
||||
SetRun();
|
||||
break;
|
||||
case 91:
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
SetRun(false);
|
||||
break;
|
||||
case 93:
|
||||
|
||||
@@ -291,7 +291,7 @@ struct instance_zulfarrak : public ScriptedInstance
|
||||
{
|
||||
if (npc->isAlive())
|
||||
{
|
||||
npc->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
npc->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
npc->GetMotionMaster()->MovePoint(1,x,y,z);
|
||||
npc->SetHomePosition(x,y,z,o);
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ void initBlyCrewMember(ScriptedInstance* pInstance, uint32 entry,float x,float y
|
||||
if (Creature* crew = pInstance->instance->GetCreature(pInstance->GetData64(entry)))
|
||||
{
|
||||
crew->SetReactState(REACT_AGGRESSIVE);
|
||||
crew->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
crew->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
crew->SetHomePosition(x,y,z,0);
|
||||
crew->GetMotionMaster()->MovePoint(1,x,y,z);
|
||||
crew->setFaction(FACTION_FREED);
|
||||
|
||||
@@ -192,7 +192,7 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
/* me->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
me->SendMonsterMove(JedogaPosition[1], MOVEFLAG_JUMP, 0);
|
||||
me->Relocate(JedogaPosition[1][0], JedogaPosition[1][1], JedogaPosition[1][2], JedogaPosition[1][3]);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
*/
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
|
||||
@@ -312,7 +312,7 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), DATA_GROUND_POSITION_Z, me->GetOrientation());
|
||||
uint64 prison_GUID = pInstance->GetData64(DATA_PRINCE_TALDARAM_PLATFORM);
|
||||
pInstance->HandleGameObject(prison_GUID,true);
|
||||
|
||||
@@ -184,7 +184,7 @@ struct boss_four_horsemenAI : public BossAI
|
||||
{
|
||||
movementStarted = true;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->SetSpeed(MOVE_RUN, me->GetSpeedRate(MOVE_RUN), true);
|
||||
|
||||
switch(id)
|
||||
|
||||
@@ -269,7 +269,7 @@ struct boss_uromAI : public ScriptedAI
|
||||
|
||||
me->NearTeleportTo(pPos.GetPositionX(),pPos.GetPositionY(),pPos.GetPositionZ(),pPos.GetOrientation());
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim(),0,0);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
|
||||
bCanCast = false;
|
||||
bCanGoBack = false;
|
||||
@@ -332,7 +332,7 @@ struct boss_uromAI : public ScriptedAI
|
||||
LeaveCombat();
|
||||
break;
|
||||
case SPELL_TELEPORT:
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_FLY_MODE); // with out it the npc will fall down while is casting
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY); // with out it the npc will fall down while is casting
|
||||
bCanCast = true;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -480,8 +480,8 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
{
|
||||
if (pTemp->isAlive() && !pTemp->getVictim())
|
||||
{
|
||||
if (pTemp->HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE))
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
if (pTemp->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
|
||||
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
if (pTemp->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
pTemp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
@@ -199,7 +199,7 @@ struct boss_kelesethAI : public ScriptedAI
|
||||
Skeleton = me->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000);
|
||||
if (Skeleton)
|
||||
{
|
||||
Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
Skeleton->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY() , me->GetPositionZ());
|
||||
Skeleton->AddThreat(me->getVictim(), 0.0f);
|
||||
DoZoneInCombat(Skeleton);
|
||||
|
||||
@@ -230,7 +230,7 @@ struct boss_skadiAI : public ScriptedAI
|
||||
m_pInstance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, IN_PROGRESS);
|
||||
m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
me->GetMotionMaster()->MoveJump(Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 5.0f, 10.0f);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
m_uiMountTimer = 1000;
|
||||
Summons.DespawnEntry(CREATURE_GRAUF);
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
Phase = NORMAL;
|
||||
|
||||
DoTeleportTo(296.632, -346.075, 90.6307);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
|
||||
summons.DespawnAll();
|
||||
|
||||
@@ -315,7 +315,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
DoCast(pSacrificeTarget, SPELL_RITUAL_OF_THE_SWORD);
|
||||
//Spell doesn't teleport
|
||||
DoTeleportPlayer(pSacrificeTarget, 296.632, -346.075, 90.63, 4.6);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_FLY_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_CAN_FLY);
|
||||
DoTeleportTo(296.632, -346.075, 120.85);
|
||||
Phase = SACRIFICING;
|
||||
if (pInstance)
|
||||
@@ -344,7 +344,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
//go down
|
||||
Phase = NORMAL;
|
||||
pSacrificeTarget = NULL;
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
me->GetMotionMaster()->MoveChase(pTarget);
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ struct npc_sinclariAI : public ScriptedAI
|
||||
{
|
||||
if (Creature* pGuard = *itr)
|
||||
{
|
||||
pGuard->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pGuard->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pGuard->GetMotionMaster()->MovePoint(0, MovePosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -945,16 +945,16 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
uiArthas = pArthas->GetGUID();
|
||||
pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pArthas->SetReactState(REACT_PASSIVE);
|
||||
pArthas->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pArthas->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pArthas->GetMotionMaster()->MovePoint(0, 3737.374756,3564.841309,477.433014);
|
||||
}
|
||||
if (Creature *pTalbot = me->SummonCreature(NPC_COUNSELOR_TALBOT, 3747.23, 3614.936, 473.321, 4.462012, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
{
|
||||
uiTalbot = pTalbot->GetGUID();
|
||||
pTalbot->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTalbot->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pTalbot->GetMotionMaster()->MovePoint(0, 3738.000977,3568.882080,477.433014);
|
||||
}
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
@@ -1033,13 +1033,13 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
if (Creature* pArlos = me->SummonCreature(NPC_GENERAL_ARLOS, 3745.527100, 3615.655029, 473.321533, 4.447805, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
{
|
||||
uiArlos = pArlos->GetGUID();
|
||||
pArlos->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pArlos->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pArlos->GetMotionMaster()->MovePoint(0, 3735.570068, 3572.419922, 477.441010);
|
||||
}
|
||||
if (Creature *pLeryssa = me->SummonCreature(NPC_LERYSSA, 3749.654541, 3614.959717, 473.323486, 4.524959, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
{
|
||||
uiLeryssa = pLeryssa->GetGUID();
|
||||
pLeryssa->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pLeryssa->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pLeryssa->SetReactState(REACT_PASSIVE);
|
||||
pLeryssa->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pLeryssa->GetMotionMaster()->MovePoint(0, 3741.969971, 3571.439941, 477.441010);
|
||||
@@ -1342,7 +1342,7 @@ struct npc_counselor_talbotAI : public ScriptedAI
|
||||
pArlos->Kill(pArlos, false);
|
||||
pLeryssa->RemoveAura(SPELL_STUN);
|
||||
pLeryssa->clearUnitState(UNIT_STAT_STUNNED);
|
||||
pLeryssa->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pLeryssa->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pLeryssa->GetMotionMaster()->MovePoint(0,3722.114502, 3564.201660, 477.441437);
|
||||
|
||||
if (pKiller->GetTypeId() == TYPEID_PLAYER)
|
||||
|
||||
@@ -256,7 +256,7 @@ struct npc_emilyAI : public npc_escortAI
|
||||
pPlayer->GroupEventHappens(QUEST_PERILOUS_ADVENTURE, me);
|
||||
DoScriptText(SAY_QUEST_COMPLETE, me, pPlayer);
|
||||
}
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
break;
|
||||
case 25:
|
||||
DoScriptText(SAY_VICTORY4, me);
|
||||
|
||||
@@ -174,7 +174,7 @@ struct npc_plaguehound_trackerAI : public npc_escortAI
|
||||
if (!pPlayer)
|
||||
return;
|
||||
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
Start(false, false, pPlayer->GetGUID());
|
||||
}
|
||||
|
||||
|
||||
@@ -1249,7 +1249,7 @@ struct npc_crusade_recruitAI : public ScriptedAI
|
||||
break;
|
||||
case 2:
|
||||
// walk forward
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->GetMotionMaster()->MovePoint(0,me->GetPositionX() + (cos(m_heading) * 10), me->GetPositionY() + (sin(m_heading) * 10), me->GetPositionZ());
|
||||
m_uiTimer = 5000;
|
||||
m_uiPhase = 3;
|
||||
|
||||
@@ -1134,7 +1134,7 @@ struct npc_akama_illidanAI : public ScriptedAI
|
||||
|
||||
void BeginWalk()
|
||||
{
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->SetSpeed(MOVE_RUN, 1.0f);
|
||||
me->GetMotionMaster()->MovePoint(0, AkamaWP[WalkCount].x, AkamaWP[WalkCount].y, AkamaWP[WalkCount].z);
|
||||
}
|
||||
@@ -1925,7 +1925,7 @@ void boss_illidan_stormrageAI::HandleTalkSequence()
|
||||
// Equip our warglaives!
|
||||
SetEquipmentSlots(false, EQUIP_ID_MAIN_HAND, EQUIP_ID_OFF_HAND, EQUIP_NO_CHANGE);
|
||||
me->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
break;
|
||||
case 9:
|
||||
if (GETCRE(Akama, AkamaGUID))
|
||||
@@ -2029,7 +2029,7 @@ void boss_illidan_stormrageAI::CastEyeBlast()
|
||||
if (!Trigger) return;
|
||||
|
||||
Trigger->SetSpeed(MOVE_WALK, 3);
|
||||
Trigger->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
Trigger->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
Trigger->GetMotionMaster()->MovePoint(0, final.x, final.y, final.z);
|
||||
|
||||
//Trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
@@ -318,7 +318,7 @@ struct boss_shade_of_akamaAI : public ScriptedAI
|
||||
if (Sorcerer)
|
||||
{
|
||||
CAST_AI(mob_ashtongue_sorcererAI, Sorcerer->AI())->ShadeGUID = me->GetGUID();
|
||||
Sorcerer->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
Sorcerer->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
Sorcerer->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
Sorcerer->SetUInt64Value(UNIT_FIELD_TARGET, me->GetGUID());
|
||||
Sorcerers.push_back(Sorcerer->GetGUID());
|
||||
@@ -333,7 +333,7 @@ struct boss_shade_of_akamaAI : public ScriptedAI
|
||||
Creature* Spawn = me->SummonCreature(spawnEntries[i], X, Y, Z_SPAWN, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 25000);
|
||||
if (Spawn)
|
||||
{
|
||||
Spawn->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
Spawn->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
Spawn->GetMotionMaster()->MovePoint(0, AGGRO_X, AGGRO_Y, AGGRO_Z);
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
|
||||
Spawn->AI()->AttackStart(pTarget);
|
||||
@@ -394,7 +394,7 @@ struct boss_shade_of_akamaAI : public ScriptedAI
|
||||
Creature* Defender = me->SummonCreature(CREATURE_DEFENDER, SpawnLocations[ran].x, SpawnLocations[ran].y, Z_SPAWN, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 25000);
|
||||
if (Defender)
|
||||
{
|
||||
Defender->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
Defender->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
bool move = true;
|
||||
if (AkamaGUID)
|
||||
{
|
||||
@@ -686,7 +686,7 @@ struct npc_akamaAI : public ScriptedAI
|
||||
{
|
||||
ShadeHasDied = true;
|
||||
WayPointId = 0;
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->GetMotionMaster()->MovePoint(WayPointId, AkamaWP[0].x, AkamaWP[0].y, AkamaWP[0].z);
|
||||
}
|
||||
if (Shade && Shade->isAlive())
|
||||
|
||||
@@ -624,7 +624,7 @@ struct mob_enchanted_elementalAI : public ScriptedAI
|
||||
|
||||
if (move <= diff)
|
||||
{
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
if (phase == 1)
|
||||
me->GetMotionMaster()->MovePoint(0, x, y, z);
|
||||
if (phase == 1 && me->IsWithinDist3d(x,y,z, 0.1))
|
||||
|
||||
+1
-1
@@ -134,7 +134,7 @@ struct boss_nazanAI : public ScriptedAI
|
||||
BellowingRoar_Timer = 6000;
|
||||
ConeOfFire_Timer = 12000;
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->GetMotionMaster()->Clear();
|
||||
if (Unit* pVictim = SelectUnit(SELECT_TARGET_NEAREST,0))
|
||||
me->AI()->AttackStart(pVictim);
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
removeAdds();
|
||||
|
||||
me->SetSpeed(MOVE_RUN,2);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
summoned = 2;
|
||||
InBlade = false;
|
||||
|
||||
@@ -605,7 +605,7 @@ struct npc_maghar_captiveAI : public npc_escortAI
|
||||
if (pSummoned->isTotem())
|
||||
return;
|
||||
|
||||
pSummoned->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pSummoned->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
pSummoned->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
pSummoned->AI()->AttackStart(me);
|
||||
|
||||
|
||||
@@ -340,7 +340,7 @@ struct mob_dragonmaw_peonAI : public ScriptedAI
|
||||
float x, y, z;
|
||||
caster->GetClosePoint(x, y, z, me->GetObjectSize());
|
||||
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->GetMotionMaster()->MovePoint(1, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,7 +443,7 @@ struct npc_isla_starmaneAI : public npc_escortAI
|
||||
me->SetInFront(pPlayer); break;
|
||||
case 30: me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE); break;
|
||||
case 31: DoCast(me, SPELL_CAT);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); break;
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -628,7 +628,7 @@ struct npc_injured_patientAI : public ScriptedAI
|
||||
DoScriptText(RAND(SAY_DOC1,SAY_DOC2,SAY_DOC3), me);
|
||||
|
||||
uint32 mobId = me->GetEntry();
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
|
||||
switch (mobId)
|
||||
{
|
||||
@@ -1840,7 +1840,7 @@ struct npc_ebon_gargoyleAI : CasterAI
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
// Fly Away
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_FLY_MODE|MOVEMENTFLAG_ASCEND|MOVEMENTFLAG_FLYING);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY|MOVEMENTFLAG_ASCENDING|MOVEMENTFLAG_FLYING);
|
||||
me->SetSpeed(MOVE_FLIGHT, 0.75f, true);
|
||||
me->SetSpeed(MOVE_RUN, 0.75f, true);
|
||||
float x = me->GetPositionX() + 20 * cos(me->GetOrientation());
|
||||
|
||||
Reference in New Issue
Block a user