diff options
| author | Spp <spp@jorge.gr> | 2013-11-08 10:29:51 +0100 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2013-11-08 10:29:51 +0100 |
| commit | 990e4c78514e3a3f8e8905cf22dfacbb0c4fba67 (patch) | |
| tree | aa9140f37cedf8a445608f3849bcc566c2cf0a51 /src/server/game/Entities | |
| parent | 184fe092c3a7d37eb3983ec11e3f5d3a9f6640fa (diff) | |
| parent | 16a51e328a12b8eafb7ff2c18806ca9aef6b23a2 (diff) | |
Merge branch 'master' into 4.3.4
Conflicts:
src/server/game/AI/EventAI/CreatureEventAI.h
src/server/game/AI/EventAI/CreatureEventAIMgr.h
src/server/game/Achievements/AchievementMgr.cpp
src/server/game/DungeonFinding/LFGMgr.h
src/server/game/Entities/Creature/Creature.h
src/server/game/Entities/Object/Updates/UpdateData.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Grids/Notifiers/GridNotifiers.h
src/server/game/Grids/ObjectGridLoader.h
src/server/game/Spells/SpellInfo.h
src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
src/server/scripts/EasternKingdoms/zone_burning_steppes.cpp
src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
src/server/scripts/Kalimdor/zone_azshara.cpp
src/server/scripts/Kalimdor/zone_darkshore.cpp
src/server/scripts/Kalimdor/zone_desolace.cpp
src/server/scripts/Kalimdor/zone_mulgore.cpp
src/server/scripts/Kalimdor/zone_orgrimmar.cpp
src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
src/server/scripts/Kalimdor/zone_tanaris.cpp
src/server/scripts/Kalimdor/zone_thousand_needles.cpp
src/tools/map_extractor/System.cpp
src/tools/map_extractor/mpq_libmpq.cpp
src/tools/map_extractor/mpq_libmpq04.h
src/tools/vmap4_extractor/loadlib/loadlib.h
src/tools/vmap4_extractor/mpq_libmpq.cpp
src/tools/vmap4_extractor/mpq_libmpq04.h
Diffstat (limited to 'src/server/game/Entities')
22 files changed, 155 insertions, 178 deletions
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index 759d84c2705..dff6e426793 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -41,9 +41,7 @@ Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type lootRecipient = NULL; } -Corpse::~Corpse() -{ -} +Corpse::~Corpse() { } void Corpse::AddToWorld() { diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 82e4ee2e7bc..a40d0646121 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -244,7 +244,7 @@ typedef UNORDERED_MAP<uint32, EquipmentInfoContainerInternal> EquipmentInfoConta // from `creature` table struct CreatureData { - CreatureData() : dbData(true) {} + CreatureData() : dbData(true) { } uint32 id; // entry in creature_template uint16 mapid; uint32 phaseMask; @@ -323,7 +323,7 @@ typedef UNORDERED_MAP<uint32, CreatureAddon> CreatureAddonContainer; struct VendorItem { VendorItem(uint32 _item, int32 _maxcount, uint32 _incrtime, uint32 _ExtendedCost, uint8 _Type) - : item(_item), maxcount(_maxcount), incrtime(_incrtime), ExtendedCost(_ExtendedCost), Type(_Type) {} + : item(_item), maxcount(_maxcount), incrtime(_incrtime), ExtendedCost(_ExtendedCost), Type(_Type) { } uint32 item; uint32 maxcount; // 0 for infinity item amount @@ -366,7 +366,7 @@ struct VendorItemData struct VendorItemCount { explicit VendorItemCount(uint32 _item, uint32 _count) - : itemId(_item), count(_count), lastIncrementTime(time(NULL)) {} + : itemId(_item), count(_count), lastIncrementTime(time(NULL)) { } uint32 itemId; uint32 count; @@ -398,7 +398,7 @@ typedef UNORDERED_MAP<uint32 /*spellid*/, TrainerSpell> TrainerSpellMap; struct TrainerSpellData { - TrainerSpellData() : trainerType(0) {} + TrainerSpellData() : trainerType(0) { } ~TrainerSpellData() { spellList.clear(); } TrainerSpellMap spellList; diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index 2a3829b7aeb..c060e11983c 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -80,7 +80,7 @@ void FormationMgr::LoadCreatureFormations() CreatureGroupMap.clear(); //Get group data - QueryResult result = WorldDatabase.Query("SELECT leaderGUID, memberGUID, dist, angle, groupAI FROM creature_formations ORDER BY leaderGUID"); + QueryResult result = WorldDatabase.Query("SELECT leaderGUID, memberGUID, dist, angle, groupAI, point_1, point_2 FROM creature_formations ORDER BY leaderGUID"); if (!result) { @@ -101,6 +101,8 @@ void FormationMgr::LoadCreatureFormations() group_member->leaderGUID = fields[0].GetUInt32(); uint32 memberGUID = fields[1].GetUInt32(); group_member->groupAI = fields[4].GetUInt32(); + group_member->point_1 = fields[5].GetUInt16(); + group_member->point_2 = fields[6].GetUInt16(); //If creature is group leader we may skip loading of dist/angle if (group_member->leaderGUID != memberGUID) { @@ -224,6 +226,14 @@ void CreatureGroup::LeaderMoveTo(float x, float y, float z) if (member == m_leader || !member->IsAlive() || member->GetVictim()) continue; + if (itr->second->point_1) + { + if (m_leader->GetCurrentWaypointID() == itr->second->point_1) + itr->second->follow_angle = (2 * M_PI) - itr->second->follow_angle; + if (m_leader->GetCurrentWaypointID() == itr->second->point_2) + itr->second->follow_angle = (2 * M_PI) + itr->second->follow_angle; + } + float angle = itr->second->follow_angle; float dist = itr->second->follow_dist; diff --git a/src/server/game/Entities/Creature/CreatureGroups.h b/src/server/game/Entities/Creature/CreatureGroups.h index fb5b823fbe9..ea115bd2efd 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.h +++ b/src/server/game/Entities/Creature/CreatureGroups.h @@ -32,6 +32,8 @@ struct FormationInfo float follow_dist; float follow_angle; uint8 groupAI; + uint16 point_1; + uint16 point_2; }; typedef UNORDERED_MAP<uint32/*memberDBGUID*/, FormationInfo*> CreatureGroupInfoType; @@ -60,8 +62,8 @@ class CreatureGroup public: //Group cannot be created empty - explicit CreatureGroup(uint32 id) : m_leader(NULL), m_groupID(id), m_Formed(false) {} - ~CreatureGroup() {} + explicit CreatureGroup(uint32 id) : m_leader(NULL), m_groupID(id), m_Formed(false) { } + ~CreatureGroup() { } Creature* getLeader() const { return m_leader; } uint32 GetId() const { return m_groupID; } diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h index 46f5c1300a4..03fcd4cd74d 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.h +++ b/src/server/game/Entities/Creature/TemporarySummon.h @@ -41,14 +41,14 @@ class TempSummon : public Creature { public: explicit TempSummon(SummonPropertiesEntry const* properties, Unit* owner, bool isWorldObject); - virtual ~TempSummon() {} + virtual ~TempSummon() { } void Update(uint32 time); virtual void InitStats(uint32 lifetime); virtual void InitSummon(); virtual void UnSummon(uint32 msTime = 0); void RemoveFromWorld(); void SetTempSummonType(TempSummonType type); - void SaveToDB(uint32 /*mapid*/, uint8 /*spawnMask*/, uint32 /*phaseMask*/) {} + void SaveToDB(uint32 /*mapid*/, uint8 /*spawnMask*/, uint32 /*phaseMask*/) { } Unit* GetSummoner() const; Creature* GetSummonerCreatureBase() const; uint64 GetSummonerGUID() const { return m_summonerGUID; } diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index acfb5f48100..e1265f688cc 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -590,7 +590,7 @@ enum GOState // from `gameobject` struct GameObjectData { - explicit GameObjectData() : dbData(true) {} + explicit GameObjectData() : dbData(true) { } uint32 id; // entry in gamobject_template uint16 mapid; uint32 phaseMask; diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp index ba9604fcd52..1d0b7b66d6d 100644 --- a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp +++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp @@ -33,10 +33,10 @@ struct EnchStoreItem float chance; EnchStoreItem() - : ench(0), chance(0) {} + : ench(0), chance(0) { } EnchStoreItem(uint32 _ench, float _chance) - : ench(_ench), chance(_chance) {} + : ench(_ench), chance(_chance) { } }; typedef std::vector<EnchStoreItem> EnchStoreList; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index c0a7ea02cbb..2ccaf755fd6 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2057,7 +2057,7 @@ namespace Trinity { public: MonsterChatBuilder(WorldObject const& obj, ChatMsg msgtype, int32 textId, uint32 language, uint64 targetGUID) - : i_object(obj), i_msgtype(msgtype), i_textId(textId), i_language(language), i_targetGUID(targetGUID) {} + : i_object(obj), i_msgtype(msgtype), i_textId(textId), i_language(language), i_targetGUID(targetGUID) { } void operator()(WorldPacket& data, LocaleConstant loc_idx) { char const* text = sObjectMgr->GetTrinityString(i_textId, loc_idx); @@ -2078,7 +2078,7 @@ namespace Trinity { public: MonsterCustomChatBuilder(WorldObject const& obj, ChatMsg msgtype, const char* text, uint32 language, uint64 targetGUID) - : i_object(obj), i_msgtype(msgtype), i_text(text), i_language(language), i_targetGUID(targetGUID) {} + : i_object(obj), i_msgtype(msgtype), i_text(text), i_language(language), i_targetGUID(targetGUID) { } void operator()(WorldPacket& data, LocaleConstant loc_idx) { /// @todo i_object.GetName() also must be localized? @@ -2600,10 +2600,10 @@ namespace Trinity { public: NearUsedPosDo(WorldObject const& obj, WorldObject const* searcher, float angle, ObjectPosSelector& selector) - : i_object(obj), i_searcher(searcher), i_angle(angle), i_selector(selector) {} + : i_object(obj), i_searcher(searcher), i_angle(angle), i_selector(selector) { } - void operator()(Corpse*) const {} - void operator()(DynamicObject*) const {} + void operator()(Corpse*) const { } + void operator()(DynamicObject*) const { } void operator()(Creature* c) const { @@ -3025,7 +3025,7 @@ struct WorldObjectChangeAccumulator UpdateDataMapType& i_updateDatas; WorldObject& i_object; std::set<uint64> plr_list; - WorldObjectChangeAccumulator(WorldObject &obj, UpdateDataMapType &d) : i_updateDatas(d), i_object(obj) {} + WorldObjectChangeAccumulator(WorldObject &obj, UpdateDataMapType &d) : i_updateDatas(d), i_object(obj) { } void Visit(PlayerMapType &m) { Player* source = NULL; @@ -3087,7 +3087,7 @@ struct WorldObjectChangeAccumulator } } - template<class SKIP> void Visit(GridRefManager<SKIP> &) {} + template<class SKIP> void Visit(GridRefManager<SKIP> &) { } }; void WorldObject::BuildUpdate(UpdateDataMapType& data_map) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index d74cc19b22a..9da5e1e034c 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -257,7 +257,7 @@ class Object virtual bool hasQuest(uint32 /* quest_id */) const { return false; } virtual bool hasInvolvedQuest(uint32 /* quest_id */) const { return false; } - virtual void BuildUpdate(UpdateDataMapType&) {} + virtual void BuildUpdate(UpdateDataMapType&) { } void BuildFieldsUpdate(Player*, UpdateDataMapType &) const; void SetFieldNotifyFlag(uint16 flag) { _fieldNotifyFlags |= flag; } @@ -335,13 +335,13 @@ struct Position { struct PositionXYZStreamer { - explicit PositionXYZStreamer(Position& pos) : m_pos(&pos) {} + explicit PositionXYZStreamer(Position& pos) : m_pos(&pos) { } Position* m_pos; }; struct PositionXYZOStreamer { - explicit PositionXYZOStreamer(Position& pos) : m_pos(&pos) {} + explicit PositionXYZOStreamer(Position& pos) : m_pos(&pos) { } Position* m_pos; }; @@ -610,7 +610,7 @@ class MapObject friend class ObjectGridLoader; //grid loader for loading creatures protected: - MapObject() : _moveState(MAP_OBJECT_CELL_MOVE_NONE) {} + MapObject() : _moveState(MAP_OBJECT_CELL_MOVE_NONE) { } private: Cell _currentCell; @@ -724,7 +724,7 @@ class WorldObject : public Object, public WorldLocation void SendObjectDeSpawnAnim(uint64 guid); - virtual void SaveRespawnTime() {} + virtual void SaveRespawnTime() { } void AddObjectToRemoveList(); float GetGridActivationRange() const; @@ -863,7 +863,7 @@ namespace Trinity class ObjectDistanceOrderPred { public: - ObjectDistanceOrderPred(WorldObject const* pRefObj, bool ascending = true) : m_refObj(pRefObj), m_ascending(ascending) {} + ObjectDistanceOrderPred(WorldObject const* pRefObj, bool ascending = true) : m_refObj(pRefObj), m_ascending(ascending) { } bool operator()(WorldObject const* pLeft, WorldObject const* pRight) const { return m_ascending ? m_refObj->GetDistanceOrder(pLeft, pRight) : !m_refObj->GetDistanceOrder(pLeft, pRight); diff --git a/src/server/game/Entities/Object/ObjectPosSelector.h b/src/server/game/Entities/Object/ObjectPosSelector.h index d381fb5627e..d3f43654969 100644 --- a/src/server/game/Entities/Object/ObjectPosSelector.h +++ b/src/server/game/Entities/Object/ObjectPosSelector.h @@ -34,7 +34,7 @@ struct ObjectPosSelector { struct UsedPos { - UsedPos(float sign_, float size_, float dist_) : sign(sign_), size(size_), dist(dist_) {} + UsedPos(float sign_, float size_, float dist_) : sign(sign_), size(size_), dist(dist_) { } float sign; diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp index 09a423350b7..fa694d2ce2a 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp @@ -25,9 +25,7 @@ #include "World.h" #include "zlib.h" -UpdateData::UpdateData(uint16 map) : m_map(map), m_blockCount(0) -{ -} +UpdateData::UpdateData(uint16 map) : m_map(map), m_blockCount(0) { } void UpdateData::AddOutOfRangeGUID(std::set<uint64>& guids) { diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 2a96b32fcdc..83cae25bb37 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2197,26 +2197,8 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if (!(options & TELE_TO_NOT_LEAVE_COMBAT)) CombatStop(); - // new final coordinates - float final_x = x; - float final_y = y; - float final_z = z; - float final_o = orientation; - - // Calculate final positions if on transport - if (m_transport) - { - float tx, ty, tz, to; - m_movementInfo.transport.pos.GetPosition(tx, ty, tz, to); - - final_x = x + tx * std::cos(orientation) - ty * std::sin(orientation); - final_y = y + ty * std::cos(orientation) + tx * std::sin(orientation); - final_z = z + tz; - final_o = Position::NormalizeOrientation(orientation + m_movementInfo.transport.pos.GetOrientation()); - } - // this will be used instead of the current location in SaveToDB - m_teleport_dest = WorldLocation(mapid, final_x, final_y, final_z, final_o); + m_teleport_dest = WorldLocation(mapid, x, y, z, orientation); SetFallInformation(0, z); // code for finish transfer called in WorldSession::HandleMovementOpcodes() @@ -2227,7 +2209,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati { Position oldPos; GetPosition(&oldPos); - Relocate(final_x, final_y, final_z, final_o); + Relocate(x, y, z, orientation); SendTeleportPacket(oldPos); // this automatically relocates to oldPos in order to broadcast the packet in the right place } } @@ -2328,25 +2310,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if (oldmap) oldmap->RemovePlayerFromMap(this, false); - // new final coordinates - float final_x = x; - float final_y = y; - float final_z = z; - float final_o = orientation; - - // Calculate final positions if on transport - if (m_transport) - { - float tx, ty, tz, to; - m_movementInfo.transport.pos.GetPosition(tx, ty, tz, to); - - final_x = x + tx * std::cos(orientation) - ty * std::sin(orientation); - final_y = y + ty * std::cos(orientation) + tx * std::sin(orientation); - final_z = z + tz; - final_o = Position::NormalizeOrientation(orientation + m_movementInfo.transport.pos.GetOrientation()); - } - - m_teleport_dest = WorldLocation(mapid, final_x, final_y, final_z, final_o); + m_teleport_dest = WorldLocation(mapid, x, y, z, orientation); SetFallInformation(0, z); // if the player is saved before worldportack (at logout for example) // this will be used instead of the current location in SaveToDB @@ -22802,9 +22766,7 @@ inline void UpdateVisibilityOf_helper(std::set<uint64>& s64, Player* target, std } template<class T> -inline void BeforeVisibilityDestroy(T* /*t*/, Player* /*p*/) -{ -} +inline void BeforeVisibilityDestroy(T* /*t*/, Player* /*p*/) { } template<> inline void BeforeVisibilityDestroy<Creature>(Creature* t, Player* p) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4804b4a1da2..62d7f1fc5a4 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -152,7 +152,7 @@ enum TalentTree // talent tabs // Spell modifier (used for modify other spells) struct SpellModifier { - SpellModifier(Aura* _ownerAura = NULL) : op(SPELLMOD_DAMAGE), type(SPELLMOD_FLAT), charges(0), value(0), mask(), spellId(0), ownerAura(_ownerAura) {} + SpellModifier(Aura* _ownerAura = NULL) : op(SPELLMOD_DAMAGE), type(SPELLMOD_FLAT), charges(0), value(0), mask(), spellId(0), ownerAura(_ownerAura) { } SpellModOp op : 8; SpellModType type : 8; int16 charges : 16; @@ -330,7 +330,7 @@ enum ReputationSource struct ActionButton { - ActionButton() : packedData(0), uState(ACTIONBUTTON_NEW) {} + ActionButton() : packedData(0), uState(ACTIONBUTTON_NEW) { } uint32 packedData; ActionButtonUpdateState uState; @@ -356,7 +356,7 @@ typedef std::map<uint8, ActionButton> ActionButtonList; struct PlayerCreateInfoItem { - PlayerCreateInfoItem(uint32 id, uint32 amount) : item_id(id), item_amount(amount) {} + PlayerCreateInfoItem(uint32 id, uint32 amount) : item_id(id), item_amount(amount) { } uint32 item_id; uint32 item_amount; @@ -375,8 +375,8 @@ typedef std::list<uint32> PlayerCreateInfoSpells; struct PlayerCreateInfoAction { - PlayerCreateInfoAction() : button(0), type(0), action(0) {} - PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type) : button(_button), type(_type), action(_action) {} + PlayerCreateInfoAction() : button(0), type(0), action(0) { } + PlayerCreateInfoAction(uint8 _button, uint32 _action, uint8 _type) : button(_button), type(_type), action(_action) { } uint8 button; uint8 type; @@ -407,7 +407,7 @@ struct PlayerInfo struct PvPInfo { - PvPInfo() : IsHostile(false), IsInHostileArea(false), IsInNoPvPArea(false), IsInFFAPvPArea(false), EndTimer(0) {} + PvPInfo() : IsHostile(false), IsInHostileArea(false), IsInNoPvPArea(false), IsInFFAPvPArea(false), EndTimer(0) { } bool IsHostile; bool IsInHostileArea; ///> Marks if player is in an area which forces PvP flag @@ -418,7 +418,7 @@ struct PvPInfo struct DuelInfo { - DuelInfo() : initiator(NULL), opponent(NULL), startTimer(0), startTime(0), outOfBound(0), isMounted(false) {} + DuelInfo() : initiator(NULL), opponent(NULL), startTimer(0), startTime(0), outOfBound(0), isMounted(false) { } Player* initiator; Player* opponent; @@ -480,7 +480,7 @@ struct Runes struct EnchantDuration { - EnchantDuration() : item(NULL), slot(MAX_ENCHANTMENT_SLOT), leftduration(0) {}; + EnchantDuration() : item(NULL), slot(MAX_ENCHANTMENT_SLOT), leftduration(0) { }; EnchantDuration(Item* _item, EnchantmentSlot _slot, uint32 _leftduration) : item(_item), slot(_slot), leftduration(_leftduration){ ASSERT(item); }; @@ -738,7 +738,7 @@ typedef std::map<uint32, EquipmentSet> EquipmentSets; struct ItemPosCount { - ItemPosCount(uint16 _pos, uint32 _count) : pos(_pos), count(_count) {} + ItemPosCount(uint16 _pos, uint32 _count) : pos(_pos), count(_count) { } bool isContainedIn(std::vector<ItemPosCount> const& vec) const; uint16 pos; uint32 count; @@ -909,7 +909,7 @@ struct InstancePlayerBind /* permanent PlayerInstanceBinds are created in Raid/Heroic instances for players that aren't already permanently bound when they are inside when a boss is killed or when they enter an instance that the group leader is permanently bound to. */ - InstancePlayerBind() : save(NULL), perm(false) {} + InstancePlayerBind() : save(NULL), perm(false) { } }; struct AccessRequirement @@ -970,7 +970,7 @@ class PlayerTaxi { public: PlayerTaxi(); - ~PlayerTaxi() {} + ~PlayerTaxi() { } // Nodes void InitTaxiNodesForLevel(uint32 race, uint32 chrClass, uint8 level); void LoadTaxiMask(std::string const& data); diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index c257065afa6..163bc719ce6 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -192,13 +192,9 @@ bool PlayerSocial::HasIgnore(uint32 ignore_guid) return false; } -SocialMgr::SocialMgr() -{ -} +SocialMgr::SocialMgr() { } -SocialMgr::~SocialMgr() -{ -} +SocialMgr::~SocialMgr() { } void SocialMgr::GetFriendInfo(Player* player, uint32 friendGUID, FriendInfo &friendInfo) { diff --git a/src/server/game/Entities/Totem/Totem.h b/src/server/game/Entities/Totem/Totem.h index 61bd504d55c..fc10c9caa7f 100644 --- a/src/server/game/Entities/Totem/Totem.h +++ b/src/server/game/Entities/Totem/Totem.h @@ -39,7 +39,7 @@ class Totem : public Minion { public: Totem(SummonPropertiesEntry const* properties, Unit* owner); - virtual ~Totem() {} + virtual ~Totem() { } void Update(uint32 time); void InitStats(uint32 duration); void InitSummon(); @@ -51,12 +51,12 @@ class Totem : public Minion bool UpdateStats(Stats /*stat*/) { return true; } bool UpdateAllStats() { return true; } - void UpdateResistances(uint32 /*school*/) {} - void UpdateArmor() {} - void UpdateMaxHealth() {} - void UpdateMaxPower(Powers /*power*/) {} - void UpdateAttackPowerAndDamage(bool /*ranged*/) {} - void UpdateDamagePhysical(WeaponAttackType /*attType*/) {} + void UpdateResistances(uint32 /*school*/) { } + void UpdateArmor() { } + void UpdateMaxHealth() { } + void UpdateMaxPower(Powers /*power*/) { } + void UpdateAttackPowerAndDamage(bool /*ranged*/) { } + void UpdateDamagePhysical(WeaponAttackType /*attType*/) { } bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) const; diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 50526136ab5..bd099280fc0 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -163,13 +163,14 @@ void Transport::Update(uint32 diff) if (GetGOInfo()->moTransport.canBeStopped) SetGoState(GO_STATE_ACTIVE); - // Departure event - if (_currentFrame->IsTeleportFrame()) - TeleportTransport(_nextFrame->Node->mapid, _nextFrame->Node->x, _nextFrame->Node->y, _nextFrame->Node->z); - sScriptMgr->OnRelocate(this, _currentFrame->Node->index, _currentFrame->Node->mapid, _currentFrame->Node->x, _currentFrame->Node->y, _currentFrame->Node->z); TC_LOG_DEBUG(LOG_FILTER_TRANSPORTS, "Transport %u (%s) moved to node %u %u %f %f %f", GetEntry(), GetName().c_str(), _currentFrame->Node->index, _currentFrame->Node->mapid, _currentFrame->Node->x, _currentFrame->Node->y, _currentFrame->Node->z); + + // Departure event + if (_currentFrame->IsTeleportFrame()) + if (TeleportTransport(_nextFrame->Node->mapid, _nextFrame->Node->x, _nextFrame->Node->y, _nextFrame->Node->z)) + return; // Update more in new map thread } // Set position @@ -236,6 +237,10 @@ Creature* Transport::CreateNPCPassenger(uint32 guid, CreatureData const* data) creature->SetHomePosition(creature->GetPositionX(), creature->GetPositionY(), creature->GetPositionZ(), creature->GetOrientation()); creature->SetTransportHomePosition(creature->m_movementInfo.transport.pos); + /// @HACK - transport models are not added to map's dynamic LoS calculations + /// because the current GameObjectModel cannot be moved without recreating + creature->AddUnitState(UNIT_STATE_IGNORE_PATHFINDING); + if (!creature->IsPositionValid()) { TC_LOG_ERROR(LOG_FILTER_TRANSPORTS, "Creature (guidlow %d, entry %d) not created. Suggested coordinates aren't valid (X: %f Y: %f)",creature->GetGUIDLow(),creature->GetEntry(),creature->GetPositionX(),creature->GetPositionY()); @@ -293,30 +298,6 @@ GameObject* Transport::CreateGOPassenger(uint32 guid, GameObjectData const* data return go; } -void Transport::CalculatePassengerPosition(float& x, float& y, float& z, float* o /*= NULL*/) const -{ - float inx = x, iny = y, inz = z; - if (o) - *o = Position::NormalizeOrientation(GetOrientation() + *o); - - x = GetPositionX() + inx * std::cos(GetOrientation()) - iny * std::sin(GetOrientation()); - y = GetPositionY() + iny * std::cos(GetOrientation()) + inx * std::sin(GetOrientation()); - z = GetPositionZ() + inz; -} - -void Transport::CalculatePassengerOffset(float& x, float& y, float& z, float* o /*= NULL*/) const -{ - if (o) - *o = Position::NormalizeOrientation(*o - GetOrientation()); - - z -= GetPositionZ(); - y -= GetPositionY(); // y = searchedY * std::cos(o) + searchedX * std::sin(o) - x -= GetPositionX(); // x = searchedX * std::cos(o) + searchedY * std::sin(o + pi) - float inx = x, iny = y; - y = (iny - inx * std::tan(GetOrientation())) / (std::cos(GetOrientation()) + std::sin(GetOrientation()) * std::tan(GetOrientation())); - x = (inx + iny * std::tan(GetOrientation())) / (std::cos(GetOrientation()) + std::sin(GetOrientation()) * std::tan(GetOrientation())); -} - void Transport::UpdatePosition(float x, float y, float z, float o) { bool newActive = GetMap()->IsGridLoaded(x, y); @@ -421,7 +402,7 @@ float Transport::CalculateSegmentPos(float now) return segmentPos / frame.NextDistFromPrev; } -void Transport::TeleportTransport(uint32 newMapid, float x, float y, float z) +bool Transport::TeleportTransport(uint32 newMapid, float x, float y, float z) { Map const* oldMap = GetMap(); @@ -464,23 +445,27 @@ void Transport::TeleportTransport(uint32 newMapid, float x, float y, float z) { WorldObject* obj = (*itr++); + float destX, destY, destZ, destO; + obj->m_movementInfo.transport.pos.GetPosition(destX, destY, destZ, destO); + TransportBase::CalculatePassengerPosition(destX, destY, destZ, &destO, x, y, z, GetOrientation()); + switch (obj->GetTypeId()) { case TYPEID_UNIT: if (!IS_PLAYER_GUID(obj->ToUnit()->GetOwnerGUID())) // pets should be teleported with player - obj->ToCreature()->FarTeleportTo(newMap, x, y, z, obj->GetOrientation()); + obj->ToCreature()->FarTeleportTo(newMap, destX, destY, destZ, destO); break; case TYPEID_GAMEOBJECT: { GameObject* go = obj->ToGameObject(); go->GetMap()->RemoveFromMap(go, false); - Relocate(x, y, z, go->GetOrientation()); - SetMap(newMap); + go->Relocate(destX, destY, destZ, destO); + go->SetMap(newMap); newMap->AddToMap(go); break; } case TYPEID_PLAYER: - if (!obj->ToPlayer()->TeleportTo(newMapid, x, y, z, GetOrientation(), TELE_TO_NOT_LEAVE_TRANSPORT)) + if (!obj->ToPlayer()->TeleportTo(newMapid, destX, destY, destZ, destO, TELE_TO_NOT_LEAVE_TRANSPORT)) _passengers.erase(obj); break; default: @@ -488,17 +473,28 @@ void Transport::TeleportTransport(uint32 newMapid, float x, float y, float z) } } + Relocate(x, y, z, GetOrientation()); GetMap()->AddToMap<Transport>(this); + return true; } else { // Teleport players, they need to know it for (std::set<WorldObject*>::iterator itr = _passengers.begin(); itr != _passengers.end(); ++itr) + { if ((*itr)->GetTypeId() == TYPEID_PLAYER) - (*itr)->ToUnit()->NearTeleportTo(x, y, z, GetOrientation()); - } + { + float destX, destY, destZ, destO; + (*itr)->m_movementInfo.transport.pos.GetPosition(destX, destY, destZ, destO); + TransportBase::CalculatePassengerPosition(destX, destY, destZ, &destO, x, y, z, GetOrientation()); - UpdatePosition(x, y, z, GetOrientation()); + (*itr)->ToUnit()->NearTeleportTo(destX, destY, destZ, destO); + } + } + + UpdatePosition(x, y, z, GetOrientation()); + return false; + } } void Transport::UpdatePassengerPositions(std::set<WorldObject*>& passengers) diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h index 0d020fe2c34..0145ec608ae 100644 --- a/src/server/game/Entities/Transport/Transport.h +++ b/src/server/game/Entities/Transport/Transport.h @@ -46,10 +46,16 @@ class Transport : public GameObject, public TransportBase GameObject* CreateGOPassenger(uint32 guid, GameObjectData const* data); /// This method transforms supplied transport offsets into global coordinates - void CalculatePassengerPosition(float& x, float& y, float& z, float* o = NULL) const; + void CalculatePassengerPosition(float& x, float& y, float& z, float* o /*= NULL*/) const + { + TransportBase::CalculatePassengerPosition(x, y, z, o, GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); + } /// This method transforms supplied global coordinates into local offsets - void CalculatePassengerOffset(float& x, float& y, float& z, float* o = NULL) const; + void CalculatePassengerOffset(float& x, float& y, float& z, float* o /*= NULL*/) const + { + TransportBase::CalculatePassengerOffset(x, y, z, o, GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); + } uint32 GetPeriod() const { return GetUInt32Value(GAMEOBJECT_LEVEL); } void SetPeriod(uint32 period) { SetUInt32Value(GAMEOBJECT_LEVEL, period); } @@ -72,7 +78,7 @@ class Transport : public GameObject, public TransportBase private: void MoveToNextWaypoint(); float CalculateSegmentPos(float perc); - void TeleportTransport(uint32 newMapid, float x, float y, float z); + bool TeleportTransport(uint32 newMapid, float x, float y, float z); void UpdatePassengerPositions(std::set<WorldObject*>& passengers); void DoEventIfAny(KeyFrame const& node, bool departure); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 247c845e289..7d112c23f11 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11853,9 +11853,7 @@ CharmInfo::CharmInfo(Unit* unit) } } -CharmInfo::~CharmInfo() -{ -} +CharmInfo::~CharmInfo() { } void CharmInfo::RestoreState() { diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 922efb59ed8..9ba93c38569 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -802,7 +802,7 @@ struct DiminishingReturn { DiminishingReturn(DiminishingGroup group, uint32 t, uint32 count) : DRGroup(group), stack(0), hitTime(t), hitCount(count) - {} + { } DiminishingGroup DRGroup:16; uint16 stack:16; @@ -820,7 +820,7 @@ class DispelInfo { public: explicit DispelInfo(Unit* dispeller, uint32 dispellerSpellId, uint8 chargesRemoved) : - _dispellerUnit(dispeller), _dispellerSpell(dispellerSpellId), _chargesRemoved(chargesRemoved) {} + _dispellerUnit(dispeller), _dispellerSpell(dispellerSpellId), _chargesRemoved(chargesRemoved) { } Unit* GetDispeller() const { return _dispellerUnit; } uint32 GetDispellerSpellId() const { return _dispellerSpell; } @@ -838,7 +838,7 @@ private: struct CleanDamage { CleanDamage(uint32 mitigated, uint32 absorbed, WeaponAttackType _attackType, MeleeHitOutcome _hitOutCome) : - absorbed_damage(absorbed), mitigated_damage(mitigated), attackType(_attackType), hitOutCome(_hitOutCome) {} + absorbed_damage(absorbed), mitigated_damage(mitigated), attackType(_attackType), hitOutCome(_hitOutCome) { } uint32 absorbed_damage; uint32 mitigated_damage; @@ -967,7 +967,7 @@ struct SpellNonMeleeDamage SpellNonMeleeDamage(Unit* _attacker, Unit* _target, uint32 _SpellID, uint32 _schoolMask) : target(_target), attacker(_attacker), SpellID(_SpellID), damage(0), overkill(0), schoolMask(_schoolMask), absorb(0), resist(0), physicalLog(false), unused(false), blocked(0), HitInfo(0), cleanDamage(0) - {} + { } Unit *target; Unit *attacker; @@ -988,7 +988,7 @@ struct SpellNonMeleeDamage struct SpellPeriodicAuraLogInfo { SpellPeriodicAuraLogInfo(AuraEffect const* _auraEff, uint32 _damage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical) - : auraEff(_auraEff), damage(_damage), overDamage(_overDamage), absorb(_absorb), resist(_resist), multiplier(_multiplier), critical(_critical){} + : auraEff(_auraEff), damage(_damage), overDamage(_overDamage), absorb(_absorb), resist(_resist), multiplier(_multiplier), critical(_critical){ } AuraEffect const* auraEff; uint32 damage; @@ -1043,7 +1043,7 @@ enum CurrentSpellTypes struct GlobalCooldown { - explicit GlobalCooldown(uint32 _dur = 0, uint32 _time = 0) : duration(_dur), cast_time(_time) {} + explicit GlobalCooldown(uint32 _dur = 0, uint32 _time = 0) : duration(_dur), cast_time(_time) { } uint32 duration; uint32 cast_time; @@ -1054,7 +1054,7 @@ typedef UNORDERED_MAP<uint32 /*category*/, GlobalCooldown> GlobalCooldownList; class GlobalCooldownMgr // Shared by Player and CharmInfo { public: - GlobalCooldownMgr() {} + GlobalCooldownMgr() { } public: bool HasGlobalCooldown(SpellInfo const* spellInfo) const; @@ -1097,7 +1097,7 @@ enum CommandStates struct UnitActionBarEntry { - UnitActionBarEntry() : packedData(uint32(ACT_DISABLED) << 24) {} + UnitActionBarEntry() : packedData(uint32(ACT_DISABLED) << 24) { } uint32 packedData; @@ -2269,7 +2269,7 @@ namespace Trinity class PowerPctOrderPred { public: - PowerPctOrderPred(Powers power, bool ascending = true) : m_power(power), m_ascending(ascending) {} + PowerPctOrderPred(Powers power, bool ascending = true) : m_power(power), m_ascending(ascending) { } bool operator() (const Unit* a, const Unit* b) const { float rA = a->GetMaxPower(m_power) ? float(a->GetPower(m_power)) / float(a->GetMaxPower(m_power)) : 0.0f; @@ -2285,7 +2285,7 @@ namespace Trinity class HealthPctOrderPred { public: - HealthPctOrderPred(bool ascending = true) : m_ascending(ascending) {} + HealthPctOrderPred(bool ascending = true) : m_ascending(ascending) { } bool operator() (const Unit* a, const Unit* b) const { float rA = a->GetMaxHealth() ? float(a->GetHealth()) / float(a->GetMaxHealth()) : 0.0f; diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 8dbe08990c5..86614da38fa 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -677,30 +677,6 @@ uint8 Vehicle::GetAvailableSeatCount() const return ret; } -void Vehicle::CalculatePassengerPosition(float& x, float& y, float& z, float* o /*= NULL*/) const -{ - float inx = x, iny = y, inz = z; - if (o) - *o = Position::NormalizeOrientation(GetBase()->GetOrientation() + *o); - - x = GetBase()->GetPositionX() + inx * std::cos(GetBase()->GetOrientation()) - iny * std::sin(GetBase()->GetOrientation()); - y = GetBase()->GetPositionY() + iny * std::cos(GetBase()->GetOrientation()) + inx * std::sin(GetBase()->GetOrientation()); - z = GetBase()->GetPositionZ() + inz; -} - -void Vehicle::CalculatePassengerOffset(float& x, float& y, float& z, float* o /*= NULL*/) const -{ - if (o) - *o = Position::NormalizeOrientation(*o - GetBase()->GetOrientation()); - - z -= GetBase()->GetPositionZ(); - y -= GetBase()->GetPositionY(); // y = searchedY * std::cos(o) + searchedX * std::sin(o) - x -= GetBase()->GetPositionX(); // x = searchedX * std::cos(o) + searchedY * std::sin(o + pi) - float inx = x, iny = y; - y = (iny - inx * std::tan(GetBase()->GetOrientation())) / (std::cos(GetBase()->GetOrientation()) + std::sin(GetBase()->GetOrientation()) * std::tan(GetBase()->GetOrientation())); - x = (inx + iny * std::tan(GetBase()->GetOrientation())) / (std::cos(GetBase()->GetOrientation()) + std::sin(GetBase()->GetOrientation()) * std::tan(GetBase()->GetOrientation())); -} - /** * @fn void Vehicle::RemovePendingEvent(VehicleJoinEvent* e) * diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h index 9fb1b6614b5..7dc9c36ecef 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.h +++ b/src/server/game/Entities/Vehicle/Vehicle.h @@ -89,10 +89,20 @@ class Vehicle : public TransportBase void InitMovementInfoForBase(); /// This method transforms supplied transport offsets into global coordinates - void CalculatePassengerPosition(float& x, float& y, float& z, float* o = NULL) const; + void CalculatePassengerPosition(float& x, float& y, float& z, float* o /*= NULL*/) const + { + TransportBase::CalculatePassengerPosition(x, y, z, o, + GetBase()->GetPositionX(), GetBase()->GetPositionY(), + GetBase()->GetPositionZ(), GetBase()->GetOrientation()); + } /// This method transforms supplied global coordinates into local offsets - void CalculatePassengerOffset(float& x, float& y, float& z, float* o = NULL) const; + void CalculatePassengerOffset(float& x, float& y, float& z, float* o /*= NULL*/) const + { + TransportBase::CalculatePassengerOffset(x, y, z, o, + GetBase()->GetPositionX(), GetBase()->GetPositionY(), + GetBase()->GetPositionZ(), GetBase()->GetOrientation()); + } void RemovePendingEvent(VehicleJoinEvent* e); void RemovePendingEventsForSeat(int8 seatId); @@ -114,7 +124,7 @@ class VehicleJoinEvent : public BasicEvent { friend class Vehicle; protected: - VehicleJoinEvent(Vehicle* v, Unit* u) : Target(v), Passenger(u), Seat(Target->Seats.end()) {} + VehicleJoinEvent(Vehicle* v, Unit* u) : Target(v), Passenger(u), Seat(Target->Seats.end()) { } ~VehicleJoinEvent(); bool Execute(uint64, uint32); void Abort(uint64); diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index 802e63346c1..77a50ef2f7e 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -103,7 +103,7 @@ struct VehicleSeat struct VehicleAccessory { VehicleAccessory(uint32 entry, int8 seatId, bool isMinion, uint8 summonType, uint32 summonTime) : - AccessoryEntry(entry), IsMinion(isMinion), SummonTime(summonTime), SeatId(seatId), SummonedType(summonType) {} + AccessoryEntry(entry), IsMinion(isMinion), SummonTime(summonTime), SeatId(seatId), SummonedType(summonType) { } uint32 AccessoryEntry; uint32 IsMinion; uint32 SummonTime; @@ -127,6 +127,31 @@ public: /// This method transforms supplied global coordinates into local offsets virtual void CalculatePassengerOffset(float& x, float& y, float& z, float* o = NULL) const = 0; + +protected: + static void CalculatePassengerPosition(float& x, float& y, float& z, float* o, float transX, float transY, float transZ, float transO) + { + float inx = x, iny = y, inz = z; + if (o) + *o = Position::NormalizeOrientation(transO + *o); + + x = transX + inx * std::cos(transO) - iny * std::sin(transO); + y = transY + iny * std::cos(transO) + inx * std::sin(transO); + z = transZ + inz; + } + + static void CalculatePassengerOffset(float& x, float& y, float& z, float* o, float transX, float transY, float transZ, float transO) + { + if (o) + *o = Position::NormalizeOrientation(*o - transO); + + z -= transZ; + y -= transY; // y = searchedY * std::cos(o) + searchedX * std::sin(o) + x -= transX; // x = searchedX * std::cos(o) + searchedY * std::sin(o + pi) + float inx = x, iny = y; + y = (iny - inx * std::tan(transO)) / (std::cos(transO) + std::sin(transO) * std::tan(transO)); + x = (inx + iny * std::tan(transO)) / (std::cos(transO) + std::sin(transO) * std::tan(transO)); + } }; #endif |
