diff options
| author | megamage <none@none> | 2009-02-04 17:22:43 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-02-04 17:22:43 -0600 |
| commit | d69198732e65002b53bab3a85779107490fe4dd2 (patch) | |
| tree | e1f4b11f1964cc42ac05c79bdc43eedc1db16866 /src/game | |
| parent | 5d4d9530556eb66940775f12c3cc5f3c115447ca (diff) | |
| parent | c745eba4a1d122b4184b27a982674c86ff193c23 (diff) | |
*Merge.
--HG--
branch : trunk
Diffstat (limited to 'src/game')
77 files changed, 579 insertions, 481 deletions
diff --git a/src/game/AccountMgr.cpp b/src/game/AccountMgr.cpp index af014b2cf2c..d5d7ee1a59a 100644 --- a/src/game/AccountMgr.cpp +++ b/src/game/AccountMgr.cpp @@ -95,7 +95,7 @@ AccountOpResult AccountMgr::DeleteAccount(uint32 accid) LoginDatabase.BeginTransaction(); - bool res = + bool res = LoginDatabase.PExecute("DELETE FROM account WHERE id='%d'", accid) && LoginDatabase.PExecute("DELETE FROM realmcharacters WHERE acctid='%d'", accid); diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index 795d83a0300..4d438f31d52 100644 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -76,7 +76,7 @@ SET(game_STAT_SRCS Creature.h CreatureGroups.cpp CreatureGroups.h - debugcmds.cpp + Debugcmds.cpp DestinationHolder.cpp DestinationHolder.h DestinationHolderImp.h @@ -236,7 +236,7 @@ SET(game_STAT_SRCS TicketHandler.cpp TicketMgr.cpp TicketMgr.h - tools.cpp + Tools.cpp Tools.h TotemAI.cpp TotemAI.h diff --git a/src/game/CellImpl.h b/src/game/CellImpl.h index 76e3f4aaa04..0aea067b32b 100644 --- a/src/game/CellImpl.h +++ b/src/game/CellImpl.h @@ -154,7 +154,7 @@ Cell::Visit(const CellLock<LOCK_TYPE> &l, TypeContainerVisitor<T, CONTAINER> &vi { m.Visit(l, visitor); return; - } + } CellPair begin_cell = standing_cell; CellPair end_cell = standing_cell; diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index e51eb1cc3bb..497c8fd3c2d 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -164,7 +164,7 @@ ChatCommand * ChatHandler::getCommandTable() { "modify", SEC_GAMEMASTER, false, &ChatHandler::HandleWpModifyCommand, "", NULL }, { "event", SEC_GAMEMASTER, false, &ChatHandler::HandleWpEventCommand, "", NULL }, { "unload", SEC_GAMEMASTER, false, &ChatHandler::HandleWpUnLoadPathCommand, "", NULL }, - + { NULL, 0, false, NULL, "", NULL } }; @@ -560,11 +560,11 @@ ChatCommand * ChatHandler::getCommandTable() { "event", SEC_GAMEMASTER, false, NULL, "", eventCommandTable }, { "gobject", SEC_GAMEMASTER, false, NULL, "", gobjectCommandTable }, { "honor", SEC_GAMEMASTER, false, NULL, "", honorCommandTable }, - + //wp commands { "path", SEC_GAMEMASTER, false, NULL, "", wpCommandTable }, { "loadpath", SEC_ADMINISTRATOR, false, &ChatHandler::HandleReloadAllPaths, "", NULL }, - + { "quest", SEC_ADMINISTRATOR, false, NULL, "", questCommandTable }, { "reload", SEC_ADMINISTRATOR, true, NULL, "", reloadCommandTable }, { "list", SEC_ADMINISTRATOR, true, NULL, "", listCommandTable }, @@ -579,7 +579,7 @@ ChatCommand * ChatHandler::getCommandTable() { "aura", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAuraCommand, "", NULL }, { "unaura", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnAuraCommand, "", NULL }, - { "nameannounce", SEC_MODERATOR, false, &ChatHandler::HandleNameAnnounceCommand, "", NULL }, + { "nameannounce", SEC_MODERATOR, false, &ChatHandler::HandleNameAnnounceCommand, "", NULL }, { "gmnameannounce", SEC_MODERATOR, false, &ChatHandler::HandleGMNameAnnounceCommand, "", NULL }, { "announce", SEC_MODERATOR, true, &ChatHandler::HandleAnnounceCommand, "", NULL }, { "gmannounce", SEC_MODERATOR, true, &ChatHandler::HandleGMAnnounceCommand, "", NULL }, @@ -649,10 +649,10 @@ ChatCommand * ChatHandler::getCommandTable() { "sendmessage", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendMessageCommand, "", NULL }, { "playall", SEC_ADMINISTRATOR, false, &ChatHandler::HandlePlayAllCommand, "", NULL }, { "repairitems", SEC_GAMEMASTER, false, &ChatHandler::HandleRepairitemsCommand, "", NULL }, - { "freeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleFreezeCommand, "", NULL }, - { "unfreeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnFreezeCommand, "", NULL }, - { "listfreeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleListFreezeCommand, "", NULL }, - { "flusharenapoints", SEC_ADMINISTRATOR, false, &ChatHandler::HandleFlushArenaPointsCommand, "", NULL }, + { "freeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleFreezeCommand, "", NULL }, + { "unfreeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnFreezeCommand, "", NULL }, + { "listfreeze", SEC_ADMINISTRATOR, false, &ChatHandler::HandleListFreezeCommand, "", NULL }, + { "flusharenapoints", SEC_ADMINISTRATOR, false, &ChatHandler::HandleFlushArenaPointsCommand, "", NULL }, { "possess", SEC_ADMINISTRATOR, false, &ChatHandler::HandlePossessCommand, "", NULL }, { "unpossess", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnPossessCommand, "", NULL }, { "bindsight", SEC_ADMINISTRATOR, false, &ChatHandler::HandleBindSightCommand, "", NULL }, diff --git a/src/game/Chat.h b/src/game/Chat.h index dd7f811d692..8f75ae9ec9b 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -71,6 +71,7 @@ class ChatHandler std::string PGetParseString(int32 entry, ...); int ParseCommands(const char* text); + protected: explicit ChatHandler() : m_session(NULL) {} // for CLI subclass @@ -415,7 +416,7 @@ class ChatHandler bool HandleResetAllCommand(const char * args); - + // GM ticket command handlers bool HandleGMTicketListCommand(const char* args); bool HandleGMTicketListOnlineCommand(const char* args); @@ -438,7 +439,7 @@ class ChatHandler bool HandlePasswordCommand(const char* args); bool HandleLockAccountCommand(const char* args); bool HandleRespawnCommand(const char* args); - + //New Wp Commands bool HandleWpAddCommand(const char* args); bool HandleWpLoadPathCommand(const char* args); @@ -527,7 +528,7 @@ class ChatHandler void SetSentErrorMessage(bool val){ sentErrorMessage = val;}; private: WorldSession * m_session; // != NULL for chat command call and NULL for CLI command - + // common global flag static bool load_command_table; bool sentErrorMessage; diff --git a/src/game/ChatHandler.cpp b/src/game/ChatHandler.cpp index 3dc5c0dae51..8a79dc42397 100644 --- a/src/game/ChatHandler.cpp +++ b/src/game/ChatHandler.cpp @@ -318,7 +318,7 @@ void WorldSession::HandleMessagechatOpcode( WorldPacket & recv_data ) Group *group = GetPlayer()->GetGroup(); if(!group || !group->isRaidGroup() || group->isBGGroup()) return; - + WorldPacket data; ChatHandler::FillMessageData(&data, this, CHAT_MSG_RAID, lang, "", 0, msg.c_str(),NULL); group->BroadcastPacket(&data); diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 83a4a45f5f5..ca8fd942e76 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -199,10 +199,10 @@ void Creature::RemoveFromWorld() void Creature::SearchFormation() { uint32 lowguid = GetDBTableGUIDLow(); - + if(CreatureGroupMap.find(lowguid) != CreatureGroupMap.end()) { - m_formationID = CreatureGroupMap[lowguid]->leaderGUID; + m_formationID = CreatureGroupMap[lowguid]->leaderGUID; formation_mgr.UpdateCreatureGroup(m_formationID, this); } } @@ -415,7 +415,7 @@ void Creature::Update(uint32 diff) CreatureInfo const *cinfo = GetCreatureInfo(); SelectLevel(cinfo); - + if (m_isDeadByDefault) { setDeathState(JUST_DIED); @@ -1425,7 +1425,7 @@ bool Creature::LoadFromDB(uint32 guid, Map *map) } //We should set first home position, because then AI calls home movement SetHomePosition(data->posX,data->posY,data->posZ,data->orientation); - + m_respawnradius = data->spawndist; m_respawnDelay = data->spawntimesecs; diff --git a/src/game/Creature.h b/src/game/Creature.h index a4ad51b2cdc..8d2adeb687a 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -625,10 +625,10 @@ class TRINITY_DLL_SPEC Creature : public Unit void GetHomePosition(float &x, float &y, float &z, float &ori) { x = mHome_X; y = mHome_Y; z = mHome_Z; ori = mHome_O; } uint32 GetGlobalCooldown() const { return m_GlobalCooldown; } - + uint32 GetWaypointPath(){return m_path_id;} void LoadPath(uint32 pathid) { m_path_id = pathid; } - + uint32 GetCurrentWaypointID(){return m_waypointID;} void UpdateWaypointID(uint32 wpID){m_waypointID = wpID;} @@ -677,7 +677,6 @@ class TRINITY_DLL_SPEC Creature : public Unit bool m_AlreadyCallAssistance; bool m_regenHealth; bool m_AI_locked; - bool m_AI_enabled; bool m_isDeadByDefault; SpellSchoolMask m_meleeDamageSchoolMask; @@ -692,7 +691,7 @@ class TRINITY_DLL_SPEC Creature : public Unit //WaypointMovementGenerator vars uint32 m_waypointID; uint32 m_path_id; - + //Formation var uint32 m_formationID; diff --git a/src/game/CreatureAI.h b/src/game/CreatureAI.h index d8be71c830b..4e0051c3d0c 100644 --- a/src/game/CreatureAI.h +++ b/src/game/CreatureAI.h @@ -129,7 +129,7 @@ class TRINITY_DLL_SPEC CreatureAI : public UnitAI virtual void SpellHit(Unit*, const SpellEntry*) {} // Called when spell hits a target - virtual void SpellHitTarget(Unit* target, const SpellEntry*) {} + virtual void SpellHitTarget(Unit* target, const SpellEntry*) {} // Called when vitim entered water and creature can not enter water virtual bool canReachByRangeAttack(Unit*) { return false; } diff --git a/src/game/CreatureAISelector.cpp b/src/game/CreatureAISelector.cpp index ab19f61537d..8b4205980be 100644 --- a/src/game/CreatureAISelector.cpp +++ b/src/game/CreatureAISelector.cpp @@ -58,7 +58,7 @@ namespace FactorySelector if(!ai_factory) { if( creature->isGuard() ) - ai_factory = ai_registry.GetRegistryItem("GuardAI"); + ai_factory = ai_registry.GetRegistryItem("GuardAI"); else if(creature->isPet() || (creature->isCharmed() && !creature->isPossessed())) ai_factory = ai_registry.GetRegistryItem("PetAI"); else if(creature->isTotem()) diff --git a/src/game/CreatureGroups.cpp b/src/game/CreatureGroups.cpp index c96c1c0e98a..9c6ffeea57f 100644 --- a/src/game/CreatureGroups.cpp +++ b/src/game/CreatureGroups.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> @@ -34,7 +34,7 @@ UNORDERED_MAP<uint32, FormationMember*> CreatureGroupMap; void CreatureGroupManager::UpdateCreatureGroup(uint32 group_id, Creature *member) { if(CreatureGroupHolder.find(group_id) != CreatureGroupHolder.end()) - { + { sLog.outDebug("Group found: %u, inserting creature GUID: %u", group_id, member->GetGUIDLow()); CreatureGroupHolder[group_id]->AddMember(member); } @@ -67,10 +67,10 @@ void CreatureGroupManager::LoadCreatureFormations() { //Clear existing map CreatureGroupMap.clear(); - + //Check Integrity of the table QueryResult *result = WorldDatabase.PQuery("SELECT MAX(`leaderGUID`) FROM `creature_formations`"); - + if(!result) { sLog.outErrorDb(" an error occured while loading the table `creature_formations` ( maybe it doesn't exist ?)\n"); @@ -80,7 +80,7 @@ void CreatureGroupManager::LoadCreatureFormations() //Get group data result = WorldDatabase.PQuery("SELECT `leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI` FROM `creature_formations` ORDER BY `leaderGUID`"); - + if(!result) { sLog.outErrorDb("The table `creature_formations` is empty or corrupted"); @@ -90,13 +90,13 @@ void CreatureGroupManager::LoadCreatureFormations() uint32 total_records = result->GetRowCount(), lastLeaderGUID = 0; barGoLink bar( total_records); Field *fields; - + FormationMember *group_member; //Loading data... do { fields = result->Fetch(); - + bar.step(); //Load group member data group_member = new FormationMember; @@ -109,14 +109,14 @@ void CreatureGroupManager::LoadCreatureFormations() group_member->follow_dist = fields[2].GetUInt32(); group_member->follow_angle = fields[3].GetUInt32(); } - + CreatureGroupMap[group_member->memberGUID] = group_member; - + if(lastLeaderGUID != group_member->leaderGUID) lastLeaderGUID = group_member->leaderGUID; - } + } while(result->NextRow()) ; - + sLog.outString(); sLog.outString( ">> Loaded %u creatures in formations", total_records ); sLog.outString(); @@ -127,14 +127,14 @@ void CreatureGroupManager::LoadCreatureFormations() void CreatureGroup::AddMember(Creature *member) { sLog.outDebug("Adding unit GUID: %u.", member->GetGUIDLow()); - + uint64 guid = member->GetGUID(); //We first search creature member if exist if(CreatureGroupMembers.find(guid) != CreatureGroupMembers.end()) return; //Check is that shit is a leader if(member->IsFormationLeader()) - { + { sLog.outDebug("Unit GUID: %u is formation leader. Adding group.", member->GetGUIDLow()); m_leader = member; } @@ -146,7 +146,7 @@ void CreatureGroup::AddMember(Creature *member) void CreatureGroup::RemoveMember(uint64 guid) { if(CreatureGroupMembers.find(guid) != CreatureGroupMembers.end()) - CreatureGroupMembers.erase(guid); + CreatureGroupMembers.erase(guid); } void CreatureGroup::MemberHasAttacked(Creature *member) @@ -165,9 +165,9 @@ void CreatureGroup::MemberHasAttacked(Creature *member) case 1: if(!member->IsFormationLeader()) return; - } + } //Attack if everything is OK - itr->second->AI()->AttackStart(member->getVictim()); + itr->second->AI()->AttackStart(member->getVictim()); } } } @@ -177,31 +177,31 @@ void CreatureGroup::LeaderMovedInEvade() for(UNORDERED_MAP<uint64, Creature*>::iterator itr = CreatureGroupMembers.begin(); itr != CreatureGroupMembers.end(); itr++) { if(itr->second && itr->second->isAlive() && !itr->second->isInCombat() && !itr->second->getVictim()) - SetMemberDestination(itr->second); + SetMemberDestination(itr->second); } } - + void CreatureGroup::SetMemberDestination(Creature *member) { if(!member || !m_leader || member->IsFormationLeader()) return; - + float x,y,z; uint32 lowguid = member->GetGUIDLow(); - + UNORDERED_MAP<uint32, FormationMember*>::iterator itr2 = CreatureGroupMap.find(lowguid); - + if(m_leader->GetMotionMaster()->GetDestination(x,y,z) && itr2 != CreatureGroupMap.end()) - { + { float dist, angle, pathangle; - - angle = CreatureGroupMap[lowguid]->follow_angle; - dist = CreatureGroupMap[lowguid]->follow_dist; + + angle = CreatureGroupMap[lowguid]->follow_angle; + dist = CreatureGroupMap[lowguid]->follow_dist; pathangle = atan2(m_leader->GetPositionY()-y, m_leader->GetPositionX()-x); - + x = x+cos(angle+pathangle)*dist; y = y+sin(angle+pathangle)*dist; - + member->GetMotionMaster()->Clear(); if(member->GetDistance(m_leader) < dist+MAX_DESYNC) diff --git a/src/game/CreatureGroups.h b/src/game/CreatureGroups.h index 48bd4916817..0aaf8fd562b 100644 --- a/src/game/CreatureGroups.h +++ b/src/game/CreatureGroups.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> @@ -27,9 +27,9 @@ struct FormationMember { - float follow_dist; - float follow_angle; - uint32 memberGUID; + float follow_dist; + float follow_angle; + uint32 memberGUID; uint32 leaderGUID; uint8 groupAI; }; @@ -46,7 +46,7 @@ class CreatureGroup { UNORDERED_MAP<uint64, Creature*>CreatureGroupMembers; Creature *m_leader; //Important do not forget sometimes to work with pointers instead synonims :D:D - + public: CreatureGroup() : m_leader(NULL) {} ~CreatureGroup(){sLog.outDebug("Destroying group");} diff --git a/src/game/DestinationHolderImp.h b/src/game/DestinationHolderImp.h index de89297ef99..963e074fff9 100644 --- a/src/game/DestinationHolderImp.h +++ b/src/game/DestinationHolderImp.h @@ -160,13 +160,13 @@ DestinationHolder<TRAVELLER>::UpdateTraveller(TRAVELLER &traveller, uint32 diff, } // Change movement computation to micro movement based on last tick coords, this makes system work // even on multiple floors zones without hugh vmaps usage ;) - + // Take care of underrun of uint32 if (i_totalTravelTime >= i_timeElapsed) i_totalTravelTime -= i_timeElapsed; // Consider only the remaining part else i_totalTravelTime = 0; - + i_timeElapsed = 0; i_fromX = x; // and change origine i_fromY = y; // then I take into account only micro movement diff --git a/src/game/DynamicObject.cpp b/src/game/DynamicObject.cpp index 1e356cd95d3..09856f1233e 100644 --- a/src/game/DynamicObject.cpp +++ b/src/game/DynamicObject.cpp @@ -156,7 +156,7 @@ void DynamicObject::Delay(int32 delaytime) bool DynamicObject::isVisibleForInState(Player const* u, bool inVisibleList) const { - return IsInWorld() && u->IsInWorld() + return IsInWorld() && u->IsInWorld() && (IsWithinDistInMap(u,World::GetMaxVisibleDistanceForObject()+(inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f), false) || GetCasterGUID() == u->GetGUID()); } diff --git a/src/game/FleeingMovementGenerator.cpp b/src/game/FleeingMovementGenerator.cpp index 72d7ab1c3eb..c64b653d5e9 100644 --- a/src/game/FleeingMovementGenerator.cpp +++ b/src/game/FleeingMovementGenerator.cpp @@ -53,14 +53,14 @@ template<> bool FleeingMovementGenerator<Creature>::GetDestination(float &x, float &y, float &z) const { if(i_destinationHolder.HasArrived()) - return false; - - i_destinationHolder.GetDestination(x, y, z); + return false; + + i_destinationHolder.GetDestination(x, y, z); return true; } template<> -bool FleeingMovementGenerator<Player>::GetDestination(float &x, float &y, float &z) const +bool FleeingMovementGenerator<Player>::GetDestination(float &x, float &y, float &z) const { return false; } diff --git a/src/game/GameEvent.cpp b/src/game/GameEvent.cpp index eea76896053..62f285e25ac 100644 --- a/src/game/GameEvent.cpp +++ b/src/game/GameEvent.cpp @@ -238,7 +238,7 @@ void GameEvent::LoadFromDB() } // load game event saves - // 0 1 2 + // 0 1 2 result = CharacterDatabase.Query("SELECT event_id, state, UNIX_TIMESTAMP(next_start) FROM game_event_save"); count = 0; @@ -624,7 +624,7 @@ void GameEvent::LoadFromDB() } // load conditions of the events - // 0 1 2 3 4 + // 0 1 2 3 4 result = WorldDatabase.Query("SELECT event_id, condition_id, req_num, max_world_state_field, done_world_state_field FROM game_event_condition"); count = 0; @@ -669,7 +669,7 @@ void GameEvent::LoadFromDB() } // load condition saves - // 0 1 2 + // 0 1 2 result = CharacterDatabase.Query("SELECT event_id, condition_id, done FROM game_event_condition_save"); count = 0; @@ -1388,7 +1388,7 @@ void GameEvent::UpdateEventQuests(uint16 event_id, bool Activate) if (Activate) // Add the pair(id,quest) to the multimap CreatureQuestMap.insert(QuestRelations::value_type(itr->first, itr->second)); else - { + { if(!hasCreatureQuestActiveEventExcept(itr->second,event_id)) { // Remove the pair(id,quest) from the multimap @@ -1413,7 +1413,7 @@ void GameEvent::UpdateEventQuests(uint16 event_id, bool Activate) if (Activate) // Add the pair(id,quest) to the multimap GameObjectQuestMap.insert(QuestRelations::value_type(itr->first, itr->second)); else - { + { if(!hasGameObjectQuestActiveEventExcept(itr->second,event_id)) { // Remove the pair(id,quest) from the multimap diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp index d935db70fa4..638de03fe45 100644 --- a/src/game/GridNotifiers.cpp +++ b/src/game/GridNotifiers.cpp @@ -149,7 +149,7 @@ VisibleNotifier::Notify() i_player.SendAurasForTarget((Unit*)(*vItr)); } -void +void Deliverer::Visit(PlayerMapType &m) { for (PlayerMapType::iterator iter = m.begin(); iter != m.end(); ++iter) @@ -174,7 +174,7 @@ Deliverer::Visit(PlayerMapType &m) } } -void +void Deliverer::Visit(CreatureMapType &m) { for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index 887855593b1..302312e721a 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -107,7 +107,7 @@ namespace Trinity void SendPacket(Player* plr); template<class SKIP> void Visit(GridRefManager<SKIP> &) {} }; - + struct TRINITY_DLL_DECL MessageDeliverer : public Deliverer { MessageDeliverer(Player &pl, WorldPacket *msg, bool to_possessor, bool to_self) : Deliverer(pl, msg, to_possessor, to_self) {} @@ -631,7 +631,7 @@ namespace Trinity Unit const* i_funit; float i_range; }; - + class CreatureWithDbGUIDCheck { public: @@ -750,7 +750,7 @@ namespace Trinity class NearestHostileUnitInAttackDistanceCheck { public: - explicit NearestHostileUnitInAttackDistanceCheck(Creature const* creature, float dist = 0) : m_creature(creature) + explicit NearestHostileUnitInAttackDistanceCheck(Creature const* creature, float dist = 0) : m_creature(creature) { m_range = (dist == 0 ? 9999 : dist); m_force = (dist == 0 ? false : true); @@ -926,7 +926,7 @@ namespace Trinity FriendlyMissingBuffInRange(Unit const* obj, float range, uint32 spellid) : i_obj(obj), i_range(range), i_spell(spellid) {} bool operator()(Unit* u) { - if(u->isAlive() && u->isInCombat() && /*!i_obj->IsHostileTo(u)*/ i_obj->IsFriendlyTo(u) && i_obj->IsWithinDistInMap(u, i_range) && + if(u->isAlive() && u->isInCombat() && /*!i_obj->IsHostileTo(u)*/ i_obj->IsFriendlyTo(u) && i_obj->IsWithinDistInMap(u, i_range) && !(u->HasAura(i_spell, 0) || u->HasAura(i_spell, 1) || u->HasAura(i_spell, 2))) { return true; diff --git a/src/game/Group.h b/src/game/Group.h index 1e98cd2905e..d42f6305ee9 100644 --- a/src/game/Group.h +++ b/src/game/Group.h @@ -225,7 +225,7 @@ class TRINITY_DLL_SPEC Group return (mslot1->group==slot2->group); } - + bool HasFreeSlotSubGroup(uint8 subgroup) const { return (m_subGroupsCounts && m_subGroupsCounts[subgroup] < MAXGROUPSIZE); @@ -348,15 +348,15 @@ class TRINITY_DLL_SPEC Group bool _setMainAssistant(const uint64 &guid); void _homebindIfInstance(Player *player); - + void _initRaidSubGroupsCounter() { // Sub group counters initialization if (!m_subGroupsCounts) m_subGroupsCounts = new uint8[MAXRAIDSIZE / MAXGROUPSIZE]; - + memset((void*)m_subGroupsCounts, 0, (MAXRAIDSIZE / MAXGROUPSIZE)*sizeof(uint8)); - + for (member_citerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr) ++m_subGroupsCounts[itr->group]; } @@ -380,13 +380,13 @@ class TRINITY_DLL_SPEC Group } return m_memberSlots.end(); } - + void SubGroupCounterIncrease(uint8 subgroup) { if (m_subGroupsCounts) ++m_subGroupsCounts[subgroup]; } - + void SubGroupCounterDecrease(uint8 subgroup) { if (m_subGroupsCounts) diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index 115c1195a83..6bcc4a4d8cc 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -550,7 +550,7 @@ void WorldSession::HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data ) /** error handling **/ if(!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID())) return; - + if (!group->HasFreeSlotSubGroup(groupNr)) return; /********************/ diff --git a/src/game/GuildHandler.cpp b/src/game/GuildHandler.cpp index c2884b56d24..f1a59814d57 100644 --- a/src/game/GuildHandler.cpp +++ b/src/game/GuildHandler.cpp @@ -166,13 +166,13 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); return; } - + if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE)) { SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); return; } - + uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); if(!slot) @@ -282,7 +282,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) if(!normalizePlayerName(plName)) return; - + Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); if(!guild) { @@ -294,7 +294,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); return; } - + uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); @@ -309,7 +309,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_NAME_INVALID); return; } - + if(slot->RankId < 2 || (slot->RankId-1) < GetPlayer()->GetRank()) return; @@ -348,13 +348,13 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); return; } - + if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_DEMOTE)) { SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); return; } - + uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); @@ -466,15 +466,15 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket) if(!normalizePlayerName(name)) return; - + guild = objmgr.GetGuildById(oldLeader->GetGuildId()); - + if (!guild) { SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); return; } - + if( oldLeader->GetGUID() != guild->GetLeader()) { SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); @@ -557,13 +557,13 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket) SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); return; } - + if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EPNOTE)) { SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); return; } - + uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(name, plGuid); @@ -603,10 +603,10 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket) SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); return; } - + uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); - + if (!slot) { SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S); diff --git a/src/game/Item.cpp b/src/game/Item.cpp index fbc39e7acf5..e8280711143 100644 --- a/src/game/Item.cpp +++ b/src/game/Item.cpp @@ -288,7 +288,7 @@ void Item::UpdateDuration(Player* owner, uint32 diff) } SetUInt32Value(ITEM_FIELD_DURATION, GetUInt32Value(ITEM_FIELD_DURATION) - diff); - SetState(ITEM_CHANGED); // save new time in database + SetState(ITEM_CHANGED, owner); // save new time in database } void Item::SaveToDB() diff --git a/src/game/Item.h b/src/game/Item.h index 5b06e24b9aa..8869f2ac013 100644 --- a/src/game/Item.h +++ b/src/game/Item.h @@ -167,6 +167,8 @@ enum EnchantmentSlot #define MAX_VISIBLE_ITEM_OFFSET 18 // 18 fields per visible item (creator(2) + enchantments(13) + properties(1) + seed(1) + pad(1)) +#define MAX_GEM_SOCKETS 3 // (BONUS_ENCHANTMENT_SLOT-SOCK_ENCHANTMENT_SLOT) + enum EnchantmentOffset { ENCHANTMENT_ID_OFFSET = 0, diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index 50110c3562d..814cfc674c3 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -1111,55 +1111,80 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recv_data) { sLog.outDebug("WORLD: CMSG_SOCKET_GEMS"); - CHECK_PACKET_SIZE(recv_data,8*4); + CHECK_PACKET_SIZE(recv_data,8+8*MAX_GEM_SOCKETS); - uint64 guids[4]; - for(int i = 0; i < 4; i++) - recv_data >> guids[i]; + uint64 item_guid; + uint64 gem_guids[MAX_GEM_SOCKETS]; - if(!guids[0]) + recv_data >> item_guid; + if(!item_guid) return; + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) + recv_data >> gem_guids[i]; + //cheat -> tried to socket same gem multiple times - if((guids[1] && (guids[1] == guids[2] || guids[1] == guids[3])) || (guids[2] && (guids[2] == guids[3]))) + if ((gem_guids[0] && (gem_guids[0] == gem_guids[1] || gem_guids[0] == gem_guids[2])) || + (gem_guids[1] && (gem_guids[1] == gem_guids[2]))) return; - Item *itemTarget = _player->GetItemByGuid(guids[0]); + Item *itemTarget = _player->GetItemByGuid(item_guid); if(!itemTarget) //missing item to socket return; + ItemPrototype const* itemProto = itemTarget->GetProto(); + if(!itemProto) + return; + //this slot is excepted when applying / removing meta gem bonus uint8 slot = itemTarget->IsEquipped() ? itemTarget->GetSlot() : NULL_SLOT; - Item *Gems[3]; - for(int i = 0; i < 3; i++) - Gems[i] = guids[i + 1] ? _player->GetItemByGuid(guids[i + 1]) : NULL; + Item *Gems[MAX_GEM_SOCKETS]; + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) + Gems[i] = gem_guids[i] ? _player->GetItemByGuid(gem_guids[i]) : NULL; - GemPropertiesEntry const *GemProps[3]; - for(int i = 0; i < 3; ++i) //get geminfo from dbc storage - { + GemPropertiesEntry const *GemProps[MAX_GEM_SOCKETS]; + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) //get geminfo from dbc storage GemProps[i] = (Gems[i]) ? sGemPropertiesStore.LookupEntry(Gems[i]->GetProto()->GemProperties) : NULL; - } - for(int i = 0; i < 3; ++i) //check for hack maybe + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) //check for hack maybe { - // tried to put gem in socket where no socket exists / tried to put normal gem in meta socket + if (!GemProps[i]) + continue; + + // tried to put gem in socket where no socket exists (take care about prismatic sockets) + if (!itemProto->Socket[i].Color) + { + // no prismatic socket + if(!itemTarget->GetEnchantmentId(PRISMATIC_ENCHANTMENT_SLOT)) + return; + + // not first not-colored (not normaly used) socket + if(i!=0 && !itemProto->Socket[i-1].Color && (i+1 >= MAX_GEM_SOCKETS || itemProto->Socket[i+1].Color)) + return; + + // ok, this is first not colored socket for item with prismatic socket + } + + // tried to put normal gem in meta socket + if (itemProto->Socket[i].Color == SOCKET_COLOR_META && GemProps[i]->color != SOCKET_COLOR_META) + return; + // tried to put meta gem in normal socket - if( GemProps[i] && ( !itemTarget->GetProto()->Socket[i].Color || - itemTarget->GetProto()->Socket[i].Color == SOCKET_COLOR_META && GemProps[i]->color != SOCKET_COLOR_META || - itemTarget->GetProto()->Socket[i].Color != SOCKET_COLOR_META && GemProps[i]->color == SOCKET_COLOR_META ) ) + if (itemProto->Socket[i].Color != SOCKET_COLOR_META && GemProps[i]->color == SOCKET_COLOR_META) return; } - uint32 GemEnchants[3], OldEnchants[3]; - for(int i = 0; i < 3; ++i) //get new and old enchantments + uint32 GemEnchants[MAX_GEM_SOCKETS]; + uint32 OldEnchants[MAX_GEM_SOCKETS]; + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) //get new and old enchantments { GemEnchants[i] = (GemProps[i]) ? GemProps[i]->spellitemenchantement : 0; OldEnchants[i] = itemTarget->GetEnchantmentId(EnchantmentSlot(SOCK_ENCHANTMENT_SLOT+i)); } // check unique-equipped conditions - for(int i = 0; i < 3; ++i) + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) { if (Gems[i] && (Gems[i]->GetProto()->Flags & ITEM_FLAGS_UNIQUE_EQUIPPED)) { @@ -1174,7 +1199,7 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recv_data) } // continue check for case when attempt add 2 similar unique equipped gems in one item. - for (int j = 0; j < 3; ++j) + for (int j = 0; j < MAX_GEM_SOCKETS; ++j) { if ((i != j) && (Gems[j]) && (Gems[i]->GetProto()->ItemId == Gems[j]->GetProto()->ItemId)) { @@ -1182,7 +1207,7 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recv_data) return; } } - for (int j = 0; j < 3; ++j) + for (int j = 0; j < MAX_GEM_SOCKETS; ++j) { if (OldEnchants[j]) { @@ -1206,20 +1231,20 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recv_data) //if a meta gem is being equipped, all information has to be written to the item before testing if the conditions for the gem are met //remove ALL enchants - for(uint32 enchant_slot = SOCK_ENCHANTMENT_SLOT; enchant_slot < SOCK_ENCHANTMENT_SLOT+3; ++enchant_slot) + for(uint32 enchant_slot = SOCK_ENCHANTMENT_SLOT; enchant_slot < SOCK_ENCHANTMENT_SLOT+MAX_GEM_SOCKETS; ++enchant_slot) _player->ApplyEnchantment(itemTarget,EnchantmentSlot(enchant_slot),false); - for(int i = 0; i < 3; ++i) + for(int i = 0; i < MAX_GEM_SOCKETS; ++i) { if(GemEnchants[i]) { itemTarget->SetEnchantment(EnchantmentSlot(SOCK_ENCHANTMENT_SLOT+i), GemEnchants[i],0,0); - if(Item* guidItem = _player->GetItemByGuid(guids[i + 1])) + if(Item* guidItem = _player->GetItemByGuid(gem_guids[i])) _player->DestroyItem(guidItem->GetBagSlot(), guidItem->GetSlot(), true ); } } - for(uint32 enchant_slot = SOCK_ENCHANTMENT_SLOT; enchant_slot < SOCK_ENCHANTMENT_SLOT+3; ++enchant_slot) + for(uint32 enchant_slot = SOCK_ENCHANTMENT_SLOT; enchant_slot < SOCK_ENCHANTMENT_SLOT+MAX_GEM_SOCKETS; ++enchant_slot) _player->ApplyEnchantment(itemTarget,EnchantmentSlot(enchant_slot),true); bool SocketBonusToBeActivated = itemTarget->GemsFitSockets();//current socketbonus state diff --git a/src/game/Language.h b/src/game/Language.h index f38db2e3853..0e97036fb36 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -272,7 +272,7 @@ enum TrinityStrings LANG_COMMAND_WHISPEROFF = 286, LANG_COMMAND_CREATGUIDNOTFOUND = 287, // TICKET STRINGS NEED REWRITE // 288-296 FREE - + // END LANG_COMMAND_SPAWNDIST = 297, LANG_COMMAND_SPAWNTIME = 298, @@ -789,15 +789,15 @@ enum TrinityStrings // Room for more level 3 1123-1199 not used // FREE IDS 1200-9999 - + // Ticket Strings 2000-2029 - LANG_COMMAND_TICKETNEW = 2000, - LANG_COMMAND_TICKETUPDATED = 2001, + LANG_COMMAND_TICKETNEW = 2000, + LANG_COMMAND_TICKETUPDATED = 2001, LANG_COMMAND_TICKETPLAYERABANDON = 2002, LANG_COMMAND_TICKETCLOSED = 2003, LANG_COMMAND_TICKETDELETED = 2004, LANG_COMMAND_TICKETNOTEXIST = 2005, - LANG_COMMAND_TICKETCLOSEFIRST = 2006, + LANG_COMMAND_TICKETCLOSEFIRST = 2006, LANG_COMMAND_TICKETALREADYASSIGNED = 2007, LANG_COMMAND_TICKETRELOAD = 2008, LANG_COMMAND_TICKETSHOWLIST = 2009, @@ -830,7 +830,7 @@ enum TrinityStrings LANG_INSTANCE_NOT_AS_GHOST = 5008, LANG_COMMAND_PLAYED_TO_ALL = 5009, // Room for more Trinity strings 5010-9999 - // Used for GM Announcements + // Used for GM Announcements LANG_GM_BROADCAST = 6613, LANG_GM_NOTIFY = 6614, LANG_GM_ANNOUNCE_COLOR = 6615, diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 49cda43682f..48b2b57355f 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -139,7 +139,7 @@ bool ChatHandler::HandleGMNameAnnounceCommand(const char* args) WorldPacket data; if(!*args) return false; - + sWorld.SendGMText(LANG_GM_ANNOUNCE_COLOR, m_session->GetPlayer()->GetName(), args); return true; } @@ -309,7 +309,7 @@ bool ChatHandler::HandleGMTicketListOnlineCommand(const char* args) { if((*itr)->closed != 0 || !objmgr.GetPlayer((*itr)->playerGuid)) continue; - + std::string gmname; std::stringstream ss; ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, (*itr)->guid); @@ -331,7 +331,7 @@ bool ChatHandler::HandleGMTicketListClosedCommand(const char* args) { if((*itr)->closed == 0) continue; - + std::string gmname; std::stringstream ss; ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, (*itr)->guid); @@ -350,7 +350,7 @@ bool ChatHandler::HandleGMTicketGetByIdCommand(const char* args) { if(!*args) return false; - + uint64 tguid = atoi(args); GM_Ticket *ticket = ticketmgr.GetGMTicket(tguid); if(!ticket) @@ -358,7 +358,7 @@ bool ChatHandler::HandleGMTicketGetByIdCommand(const char* args) SendSysMessage(LANG_COMMAND_TICKETNOTEXIST); return true; } - + std::string gmname; std::stringstream ss; ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid); @@ -381,14 +381,14 @@ bool ChatHandler::HandleGMTicketGetByNameCommand(const char* args) { if(!*args) return false; - + GM_Ticket *ticket = ticketmgr.GetGMTicketByName(args); if(!ticket) { SendSysMessage(LANG_COMMAND_TICKETNOTEXIST); return true; } - + std::string gmname; std::stringstream ss; ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid); @@ -411,7 +411,7 @@ bool ChatHandler::HandleGMTicketCloseByIdCommand(const char* args) { if(!*args) return false; - + uint64 tguid = atoi(args); GM_Ticket *ticket = ticketmgr.GetGMTicket(tguid); if(!ticket || ticket->closed != 0) @@ -487,7 +487,7 @@ bool ChatHandler::HandleGMTicketAssignToCommand(const char* args) PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->guid, gmname.c_str()); return true; } - + ticket->assignedToGM = tarGUID; ticketmgr.UpdateGMTicket(ticket); std::stringstream ss; @@ -520,13 +520,13 @@ bool ChatHandler::HandleGMTicketUnAssignCommand(const char* args) std::string gmname; objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname); - Player *plr = objmgr.GetPlayer(ticket->assignedToGM); + Player *plr = objmgr.GetPlayer(ticket->assignedToGM); if(plr && plr->IsInWorld() && plr->GetSession()->GetSecurity() > cplr->GetSession()->GetSecurity()) { SendSysMessage(LANG_COMMAND_TICKETUNASSIGNSECURITY); return true; } - + std::stringstream ss; ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid); ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str()); @@ -580,7 +580,7 @@ bool ChatHandler::HandleGMTicketCommentCommand(const char* args) return true; } -bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args) +bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args) { if(!*args) return false; @@ -597,7 +597,7 @@ bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args) SendSysMessage(LANG_COMMAND_TICKETCLOSEFIRST); return true; } - + std::stringstream ss; ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid); ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str()); diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index 0755af985da..05e3e3437cb 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -1661,7 +1661,7 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) if(kickReason) reason = kickReason; if(m_session) - kicker = m_session->GetPlayer()->GetName(); + kicker = m_session->GetPlayer()->GetName(); if(!kickName) { @@ -1672,7 +1672,7 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) SetSentErrorMessage(true); return false; } - + if(player==m_session->GetPlayer()) { SendSysMessage(LANG_COMMAND_KICKSELF); @@ -1719,7 +1719,7 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) SetSentErrorMessage(true); return false; } - + if(HasLowerSecurity(player, 0)) { SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); //maybe replacement string for this later on @@ -2214,21 +2214,21 @@ bool ChatHandler::HandleWpAddCommand(const char* args) // optional char* path_number = NULL; uint32 pathid = 0; - + if(*args) path_number = strtok((char*)args, " "); - + uint32 point = 0; Creature* target = getSelectedCreature(); - + if (!path_number) { if(target) pathid = target->GetWaypointPath(); - else + else { QueryResult *result = WorldDatabase.PQuery( "SELECT MAX(id) FROM waypoint_data"); - uint32 maxpathid = result->Fetch()->GetInt32(); + uint32 maxpathid = result->Fetch()->GetInt32(); pathid = maxpathid+1; sLog.outDebug("DEBUG: HandleWpAddCommand - New path started."); PSendSysMessage("%s%s|r", "|cff00ff00", "New path started."); @@ -2236,27 +2236,27 @@ bool ChatHandler::HandleWpAddCommand(const char* args) } else pathid = atoi(path_number); - + // path_id -> ID of the Path // point -> number of the waypoint (if not 0) - + if(!pathid) { sLog.outDebug("DEBUG: HandleWpAddCommand - Current creature haven't loaded path."); PSendSysMessage("%s%s|r", "|cffff33ff", "Current creature haven't loaded path."); return true; } - + sLog.outDebug("DEBUG: HandleWpAddCommand - point == 0"); QueryResult *result = WorldDatabase.PQuery( "SELECT MAX(point) FROM waypoint_data WHERE id = '%u'",pathid); - + if( result ) { point = (*result)[0].GetUInt32(); delete result; } - + Player* player = m_session->GetPlayer(); Map *map = player->GetMap(); @@ -2264,7 +2264,7 @@ bool ChatHandler::HandleWpAddCommand(const char* args) pathid, point+1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); PSendSysMessage("%s%s%u%s%u%s|r", "|cff00ff00", "PathID: |r|cff00ffff", pathid, "|r|cff00ff00: Waypoint |r|cff00ffff", point,"|r|cff00ff00 created. "); - + return true; } // HandleWpAddCommand @@ -2272,29 +2272,29 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) { if(!*args) return false; - + // optional char* path_number = NULL; if(*args) path_number = strtok((char*)args, " "); - + uint32 pathid = 0; uint32 guidlow = 0; Creature* target = getSelectedCreature(); - + // Did player provide a path_id? if (!path_number) sLog.outDebug("DEBUG: HandleWpLoadPathCommand - No path number provided"); - + if(!target) { SendSysMessage(LANG_SELECT_CREATURE); SetSentErrorMessage(true); return false; } - + if(target->GetEntry() == 1) { PSendSysMessage("%s%s|r", "|cffff33ff", "You want to load path to a waypoint? Aren't you?"); @@ -2303,16 +2303,16 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) } pathid = atoi(path_number); - + if(!pathid) { PSendSysMessage("%s%s|r", "|cffff33ff", "No vallid path number provided."); return true; } - + guidlow = target->GetGUIDLow(); QueryResult *result = WorldDatabase.PQuery( "SELECT guid FROM creature_addon WHERE guid = '%u'",guidlow); - + if( result ) { WorldDatabase.PExecute("UPDATE creature_addon SET path_id = '%u' WHERE guid = '%u'", pathid, guidlow); @@ -2320,15 +2320,15 @@ bool ChatHandler::HandleWpLoadPathCommand(const char *args) } else WorldDatabase.PExecute("INSERT INTO creature_addon(guid,path_id) VALUES ('%u','%u')", guidlow, pathid); - + WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", WAYPOINT_MOTION_TYPE, guidlow); - + target->LoadPath(pathid); target->SetDefaultMovementType(WAYPOINT_MOTION_TYPE); target->GetMotionMaster()->Initialize(); target->Say("Path loaded.",0,0); - - return true; + + return true; } @@ -2338,7 +2338,7 @@ if(!*args) return false; uint32 id = atoi(args); - + if(!id) return false; @@ -2385,25 +2385,25 @@ if(!*args) return false; char* show_str = strtok((char*)args, " "); - + std::string show = show_str; - + // Check if( (show != "add") && (show != "mod") && (show != "del") && (show != "listid")) return false; - - + + if(show == "add") { uint32 id = 0; - char* arg_id = strtok(NULL, " "); - + char* arg_id = strtok(NULL, " "); + if(arg_id) uint32 id = atoi(arg_id); - + if(id) { QueryResult *result = WorldDatabase.PQuery( "SELECT `id` FROM waypoint_scripts WHERE guid = %u", id); - + if( !result ) { WorldDatabase.PExecute("INSERT INTO waypoint_scripts(guid)VALUES(%u)", id); @@ -2421,38 +2421,38 @@ if(!*args) id = result->Fetch()->GetUInt32(); WorldDatabase.PExecute("INSERT INTO waypoint_scripts(guid)VALUES(%u)", id+1); PSendSysMessage("%s%s%u|r", "|cff00ff00","Wp Event: New waypoint event added: |r|cff00ffff", id+1); - } - + } + return true; } - - + + if(show == "listid") { uint32 id; char* arg_id = strtok(NULL, " "); - + if(!arg_id) { PSendSysMessage("%s%s|r", "|cff33ffff","Wp Event: You must provide waypoint script id."); return true; } - + id = atoi(arg_id); - + uint32 a2, a3, a4, a5, a6; float a8, a9, a10, a11; char const* a7; - + QueryResult *result = WorldDatabase.PQuery( "SELECT `guid`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o` FROM waypoint_scripts WHERE id = %u", id); - + if( !result ) { PSendSysMessage("%s%s%u|r", "|cff33ffff", "Wp Event: No waypoint scripts found on id: ", id); return true; } - - Field *fields; + + Field *fields; do { @@ -2467,21 +2467,21 @@ if(!*args) a9 = fields[7].GetFloat(); a10 = fields[8].GetFloat(); a11 = fields[9].GetFloat(); - + PSendSysMessage("|cffff33ffid:|r|cff00ffff %u|r|cff00ff00, guid: |r|cff00ffff%u|r|cff00ff00, delay: |r|cff00ffff%u|r|cff00ff00, command: |r|cff00ffff%u|r|cff00ff00, datalong: |r|cff00ffff%u|r|cff00ff00, datalong2: |r|cff00ffff%u|r|cff00ff00, datatext: |r|cff00ffff%s|r|cff00ff00, posx: |r|cff00ffff%f|r|cff00ff00, posy: |r|cff00ffff%f|r|cff00ff00, posz: |r|cff00ffff%f|r|cff00ff00, orientation: |r|cff00ffff%f|r", id, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); }while(result->NextRow()); - + delete result; } - + if(show == "del") { - - char* arg_id = strtok(NULL, " "); + + char* arg_id = strtok(NULL, " "); uint32 id = atoi(arg_id); - + QueryResult *result = WorldDatabase.PQuery( "SELECT `guid` FROM waypoint_scripts WHERE guid = %u", id); - + if( result ) { @@ -2491,21 +2491,21 @@ if(!*args) } else PSendSysMessage("|cffff33ffWp Event: ERROR: you have selected a non existing script: %u|r", id); - + return true; } - - + + if(show == "mod") { char* arg_1 = strtok(NULL," "); - + if(!arg_1) { SendSysMessage("|cffff33ffERROR: Waypoint script guid not present.|r"); return true; } - + uint32 id = atoi(arg_1); if(!id) @@ -2515,15 +2515,15 @@ if(!*args) } char* arg_2 = strtok(NULL," "); - + if(!arg_2) { SendSysMessage("|cffff33ffERROR: No argument present.|r"); return true;} - - + + std::string arg_string = arg_2; - - + + if( (arg_string != "setid") && (arg_string != "delay") && (arg_string != "command") && (arg_string != "datalong") && (arg_string != "datalong2") && (arg_string != "dataint") && (arg_string != "posx") && (arg_string != "posy") && (arg_string != "posz") && (arg_string != "orientation") @@ -2534,7 +2534,7 @@ if( (arg_string != "setid") && (arg_string != "delay") && (arg_string != "comman char* arg_3; std::string arg_str_2 = arg_2; arg_3 = strtok(NULL," "); - + if(!arg_3) {SendSysMessage("|cffff33ffERROR: No additional argument present.|r"); return true;} @@ -2542,13 +2542,13 @@ if(!arg_3) float coord; if(arg_str_2 == "setid") - { + { uint32 newid = atoi(arg_3); PSendSysMessage("%s%s|r|cff00ffff%u|r|cff00ff00%s|r|cff00ffff%u|r","|cff00ff00","Wp Event: Wypoint scipt guid: ", newid," id changed: ", id); WorldDatabase.PExecuteLog("UPDATE waypoint_scripts SET id='%u' WHERE guid='%u'", newid, id); return true; } - else + else { QueryResult *result = WorldDatabase.PQuery("SELECT id FROM waypoint_scripts WHERE guid='%u'",id); @@ -2562,31 +2562,31 @@ float coord; delete result; if(arg_str_2 == "posx") -{ +{ coord = atof(arg_3); WorldDatabase.PExecuteLog("UPDATE waypoint_scripts SET x='%f' WHERE guid='%u'", - coord, id); + coord, id); PSendSysMessage("|cff00ff00Waypoint script:|r|cff00ffff %u|r|cff00ff00 position_x updated.|r", id); return true; }else if(arg_str_2 == "posy") { coord = atof(arg_3); WorldDatabase.PExecuteLog("UPDATE waypoint_scripts SET y='%f' WHERE guid='%u'", - coord, id); + coord, id); PSendSysMessage("|cff00ff00Waypoint script: %u position_y updated.|r", id); return true; } else if(arg_str_2 == "posz") { coord = atof(arg_3); WorldDatabase.PExecuteLog("UPDATE waypoint_scripts SET z='%f' WHERE guid='%u'", - coord, id); + coord, id); PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 position_z updated.|r", id); return true; } else if(arg_str_2 == "orientation") { coord = atof(arg_3); WorldDatabase.PExecuteLog("UPDATE waypoint_scripts SET o='%f' WHERE guid='%u'", - coord, id); + coord, id); PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 orientation updated.|r", id); return true; } else if(arg_str_2 == "dataint") @@ -2648,7 +2648,7 @@ bool ChatHandler::HandleWpModifyCommand(const char* args) SendSysMessage("|cffff33ffERROR: You must select a waypoint.|r"); return false; } - + sLog.outDebug("DEBUG: HandleWpModifyCommand - User did select an NPC"); // The visual waypoint Creature* wpCreature = NULL; @@ -2669,7 +2669,7 @@ bool ChatHandler::HandleWpModifyCommand(const char* args) { QueryResult *result = WorldDatabase.PQuery( "SELECT id, point FROM waypoint_data WHERE wpguid = %u", wpGuid); - + if(!result) { sLog.outDebug("DEBUG: HandleWpModifyCommand - No waypoint found - used 'wpguid'"); @@ -2707,7 +2707,7 @@ bool ChatHandler::HandleWpModifyCommand(const char* args) // Text is enclosed in "<>", all other arguments not arg_str = strtok((char*)NULL, " "); } - + sLog.outDebug("DEBUG: HandleWpModifyCommand - Parameters parsed - now execute the command"); // Check for argument @@ -2723,7 +2723,7 @@ bool ChatHandler::HandleWpModifyCommand(const char* args) // wpCreature Creature* wpCreature = NULL; - + if( wpGuid != 0 ) { wpCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(),MAKE_NEW_GUID(wpGuid, VISUAL_WAYPOINT, HIGHGUID_UNIT)); @@ -2808,7 +2808,7 @@ bool ChatHandler::HandleWpModifyCommand(const char* args) WorldDatabase.PExecuteLog("UPDATE waypoint_data SET %s='%s' WHERE id='%u' AND point='%u'", show_str, text2.c_str(), pathid, point); } - + PSendSysMessage(LANG_WAYPOINT_CHANGED_NO, show_str); return true; } @@ -2830,7 +2830,7 @@ bool ChatHandler::HandleWpShowCommand(const char* args) // second arg: GUID (optional, if a creature is selected) char* guid_str = strtok((char*)NULL, " "); sLog.outDebug("DEBUG: HandleWpShowCommand: show_str: %s guid_str: %s", show_str, guid_str); - + uint32 pathid = 0; Creature* target = getSelectedCreature(); @@ -2875,14 +2875,14 @@ bool ChatHandler::HandleWpShowCommand(const char* args) uint32 Maxpoint; sLog.outDebug("DEBUG: HandleWpShowCommand: PathID: %u", pathid); - + //PSendSysMessage("wpshow - show: %s", show); // Show info for the selected waypoint if(show == "info") { - + // Check if the user did specify a visual waypoint if( target->GetEntry() != VISUAL_WAYPOINT ) @@ -2894,16 +2894,16 @@ bool ChatHandler::HandleWpShowCommand(const char* args) QueryResult *result = WorldDatabase.PQuery( "SELECT id, point, delay, move_flag, action, action_chance FROM waypoint_data WHERE wpguid = %u", target->GetGUIDLow()); - + if(!result) { SendSysMessage(LANG_WAYPOINT_NOTFOUNDDBPROBLEM); - return true; + return true; } - + SendSysMessage("|cff00ffffDEBUG: wp show info:|r"); - + do { Field *fields = result->Fetch(); @@ -2929,19 +2929,19 @@ bool ChatHandler::HandleWpShowCommand(const char* args) if(show == "on") { QueryResult *result = WorldDatabase.PQuery( "SELECT point, position_x,position_y,position_z FROM waypoint_data WHERE id = '%u'", pathid); - + if(!result) { SendSysMessage("|cffff33ffPath no found.|r"); SetSentErrorMessage(true); return false; } - + PSendSysMessage("|cff00ff00DEBUG: wp on, PathID: |cff00ffff%u|r", pathid); - + // Delete all visuals for this NPC QueryResult *result2 = WorldDatabase.PQuery( "SELECT wpguid FROM waypoint_data WHERE id = '%u' and wpguid <> 0", pathid); - + if(result2) { bool hasError = false; @@ -2965,9 +2965,9 @@ bool ChatHandler::HandleWpShowCommand(const char* args) } }while( result2->NextRow() ); - + delete result2; - + if( hasError ) { PSendSysMessage(LANG_WAYPOINT_TOOFAR1); @@ -2998,9 +2998,9 @@ bool ChatHandler::HandleWpShowCommand(const char* args) delete result; return false; } - + wpCreature->Relocate(x, y, z, o); - + if(!wpCreature->IsPositionValid()) { sLog.outError("ERROR: Creature (guidlow %d, entry %d) not created. Suggested coordinates isn't valid (X: %f Y: %f)",wpCreature->GetGUIDLow(),wpCreature->GetEntry(),wpCreature->GetPositionX(),wpCreature->GetPositionY()); @@ -3017,7 +3017,7 @@ bool ChatHandler::HandleWpShowCommand(const char* args) // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells(); wpCreature->LoadFromDB(wpCreature->GetDBTableGUIDLow(),map); map->Add(wpCreature); - + if(target) { wpCreature->SetDisplayId(target->GetDisplayId()); @@ -3076,13 +3076,13 @@ bool ChatHandler::HandleWpShowCommand(const char* args) pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), map); map->Add(pCreature); - + if(target) { pCreature->SetDisplayId(target->GetDisplayId()); pCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5); } - + // Cleanup memory delete result; return true; @@ -3141,13 +3141,13 @@ bool ChatHandler::HandleWpShowCommand(const char* args) pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), map); map->Add(pCreature); - + if(target) { pCreature->SetDisplayId(target->GetDisplayId()); pCreature->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5); } - + // Cleanup memory delete result; return true; @@ -4131,7 +4131,7 @@ bool ChatHandler::HandleCreatePetCommand(const char* args) { Player *player = m_session->GetPlayer(); Creature *creatureTarget = getSelectedCreature(); - + if(!creatureTarget || creatureTarget->isPet() || creatureTarget->GetTypeId() == TYPEID_PLAYER) { PSendSysMessage(LANG_SELECT_CREATURE); @@ -4415,11 +4415,11 @@ bool ChatHandler::HandleNpcAddFormationCommand(const char* args) group_member->follow_dist = sqrtf(pow(chr->GetPositionX() - pCreature->GetPositionX(),int(2))+pow(chr->GetPositionY()-pCreature->GetPositionY(),int(2))); group_member->memberGUID = lowguid; group_member->leaderGUID = leaderGUID; - group_member->groupAI = 0; + group_member->groupAI = 0; CreatureGroupMap[lowguid] = group_member; pCreature->SearchFormation(); - + WorldDatabase.PExecuteLog("INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES ('%u','%u','%f', '%f', '%u')", leaderGUID, lowguid, group_member->follow_dist, group_member->follow_angle, group_member->groupAI); diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index ec44bdab7d4..f8c226110af 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -952,7 +952,7 @@ bool ChatHandler::HandleReloadWpScriptsCommand(const char* arg) sLog.outString( "Re-Loading Scripts from `waypoint_scripts`..."); objmgr.LoadWaypointScripts(); - + if(*arg!='a') SendGlobalGMSysMessage("DB table `waypoint_scripts` reloaded."); @@ -1159,7 +1159,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) }else{ PSendSysMessage(LANG_YOURS_SECURITY_CHANGED, m_session->GetPlayer()->GetName(), gm); } - + LoginDatabase.PExecute("UPDATE account SET gmlevel = '%d' WHERE id = '%u'", gm, targetAccountId); return true; }else @@ -1167,7 +1167,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) // Check for second parameter if(!arg2) return false; - + // Check for account targetAccountName = arg1; if(!AccountMgr::normilizeString(targetAccountName)) @@ -1176,7 +1176,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - + // Check for invalid specified GM level. gm = atoi(arg2); if ( (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR) ) @@ -1185,7 +1185,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) SetSentErrorMessage(true); return false; } - + targetAccountId = accmgr.GetId(arg1); /// m_session==NULL only for console uint32 plSecurity = m_session ? m_session->GetSecurity() : SEC_CONSOLE; @@ -7086,7 +7086,7 @@ bool ChatHandler::HandleFreezeCommand(const char *args) { player = getSelectedPlayer(); if (player) //prevent crash with creature as target - { + { name = player->GetName(); normalizePlayerName(name); } @@ -7147,7 +7147,7 @@ bool ChatHandler::HandleFreezeCommand(const char *args) if (eff>=TOTAL_SPELL_EFFECTS) continue; if( eff == SPELL_EFFECT_APPLY_AREA_AURA_PARTY || eff == SPELL_EFFECT_APPLY_AURA || - eff == SPELL_EFFECT_PERSISTENT_AREA_AURA || eff == SPELL_EFFECT_APPLY_AREA_AURA_FRIEND || + eff == SPELL_EFFECT_PERSISTENT_AREA_AURA || eff == SPELL_EFFECT_APPLY_AREA_AURA_FRIEND || eff == SPELL_EFFECT_APPLY_AREA_AURA_ENEMY) { Aura *Aur = CreateAura(spellInfo, i, NULL, player); @@ -7171,7 +7171,7 @@ bool ChatHandler::HandleUnFreezeCommand(const char *args) { player = getSelectedPlayer(); if (player) //prevent crash with creature as target - { + { name = player->GetName(); } } @@ -7203,7 +7203,7 @@ bool ChatHandler::HandleUnFreezeCommand(const char *args) if (!player) { if (TargetName) - { + { //check for offline players QueryResult *result = CharacterDatabase.PQuery("SELECT characters.guid FROM `characters` WHERE characters.name = '%s'",name.c_str()); if(!result) @@ -7322,7 +7322,7 @@ bool ChatHandler::HandleBindSightCommand(const char* args) Unit* pUnit = getSelectedUnit(); if (!pUnit) return false; - + if (m_session->GetPlayer()->isPossessing()) return false; @@ -7335,7 +7335,7 @@ bool ChatHandler::HandleUnbindSightCommand(const char* args) { if (m_session->GetPlayer()->isPossessing()) return false; - + m_session->GetPlayer()->RemoveFarsightTarget(); return true; } diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index d93f2e0681d..96072014fa8 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -366,7 +366,7 @@ void MotionMaster::Mutate(MovementGenerator *m, MovementSlot slot) } else if(i_top < slot) { - i_top = slot; + i_top = slot; } m->Initialize(*i_owner); Impl[slot] = m; @@ -400,13 +400,13 @@ void MotionMaster::MovePath(uint32 path_id, bool repeatable) if( !isStatic( curr ) ) delete curr; }*/ - + //i_owner->GetTypeId()==TYPEID_PLAYER ? //Mutate(new WaypointMovementGenerator<Player>(path_id, repeatable)): Mutate(new WaypointMovementGenerator<Creature>(path_id, repeatable), MOTION_SLOT_IDLE); - - DEBUG_LOG("%s (GUID: %u) start moving over path(Id:%u, repeatable: %s)", - i_owner->GetTypeId()==TYPEID_PLAYER ? "Player" : "Creature", + + DEBUG_LOG("%s (GUID: %u) start moving over path(Id:%u, repeatable: %s)", + i_owner->GetTypeId()==TYPEID_PLAYER ? "Player" : "Creature", i_owner->GetGUIDLow(), path_id, repeatable ? "YES" : "NO" ); } diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 3900ab0527d..7310c1ad32f 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1702,7 +1702,7 @@ void WorldObject::GetNearPoint2D(float &x, float &y, float distance2d, float abs void WorldObject::GetNearPoint(WorldObject const* searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle ) const { GetNearPoint2D(x,y,distance2d+searcher_size,absAngle); - + z = GetPositionZ(); UpdateGroundPositionZ(x,y,z); diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 89af2814dbc..2ae6efc5320 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -223,7 +223,7 @@ void ObjectMgr::LoadPlayerInfoInCache() pPPlayerInfo->unArenaInfoSlot0 = Player::GetUInt32ValueFromArray(tdata,PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 0 * 6 + 5); pPPlayerInfo->unArenaInfoSlot1 = Player::GetUInt32ValueFromArray(tdata,PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 1 * 6 + 5); pPPlayerInfo->unArenaInfoSlot2 = Player::GetUInt32ValueFromArray(tdata,PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 2 * 6 + 5); - + pPPlayerInfo->unClass = (uint32)fields[3].GetUInt32(); m_mPlayerInfoMap[fields[0].GetUInt32()] = pPPlayerInfo; } @@ -1082,7 +1082,7 @@ uint32 ObjectMgr::ChooseDisplayId(uint32 team, const CreatureInfo *cinfo, const if (!data || data->displayid == 0) // use defaults from the template { display_id = cinfo->GetRandomValidModelId(); - } else display_id = data->displayid; // overwritten from creature data + } else display_id = data->displayid; // overwritten from creature data return display_id; } @@ -7921,7 +7921,7 @@ ObjectMgr::ScriptNameMap & GetScriptNames() void ObjectMgr::LoadTransportEvents() { - + QueryResult *result = WorldDatabase.Query("SELECT entry, waypoint_id, event_id FROM transport_events"); if( !result ) @@ -7937,19 +7937,19 @@ void ObjectMgr::LoadTransportEvents() do { bar1.step(); - + Field *fields = result->Fetch(); - + //Load event values uint32 entry = fields[0].GetUInt32(); uint32 waypoint_id = fields[1].GetUInt32(); uint32 event_id = fields[2].GetUInt32(); - + uint32 event_count = (entry*100)+waypoint_id; TransportEventMap[event_count] = event_id; } while(result->NextRow()); - + sLog.outString( "\n>> Loaded %u transport events \n", result->GetRowCount() ); delete result; diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index 580e237712f..4c6a37794f6 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> @@ -324,7 +324,7 @@ class ObjectMgr typedef std::vector<std::string> ScriptNameMap; UNORDERED_MAP<uint32, uint32> TransportEventMap; - + Player* GetPlayer(const char* name) const { return ObjectAccessor::Instance().FindPlayerByName(name);} Player* GetPlayer(uint64 guid) const { return ObjectAccessor::FindPlayer(guid); } @@ -538,7 +538,7 @@ class ObjectMgr void LoadEventScripts(); void LoadSpellScripts(); void LoadWaypointScripts(); - + void LoadTransportEvents(); bool LoadTrinityStrings(DatabaseType& db, char const* table, int32 min_value, int32 max_value); @@ -616,7 +616,7 @@ class ObjectMgr uint32 GeneratePetNumber(); uint32 GenerateArenaTeamId(); uint32 GenerateGuildId(); - + void LoadPlayerInfoInCache(); PCachePlayerInfo GetPlayerInfoFromCache(uint32 unPlayerGuid) const; CachePlayerInfoMap m_mPlayerInfoMap; diff --git a/src/game/OutdoorPvP.cpp b/src/game/OutdoorPvP.cpp index 5359acb7d71..adbe220fbe5 100644 --- a/src/game/OutdoorPvP.cpp +++ b/src/game/OutdoorPvP.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify @@ -26,9 +26,9 @@ #include "Group.h" #include "WorldPacket.h" -OutdoorPvPObjective::OutdoorPvPObjective(OutdoorPvP * pvp) +OutdoorPvPObjective::OutdoorPvPObjective(OutdoorPvP * pvp) : m_PvP(pvp), m_ShiftPhase(0), m_ShiftMaxPhase(0), m_OldPhase(0), -m_State(0), m_OldState(0), m_CapturePoint(0), m_NeutralValue(0), +m_State(0), m_OldState(0), m_CapturePoint(0), m_NeutralValue(0), m_ShiftMaxCaptureSpeed(0), m_CapturePointCreature(0) { } @@ -767,7 +767,7 @@ int32 OutdoorPvPObjective::HandleOpenGo(Player *plr, uint64 guid) std::map<uint64,uint32>::iterator itr = m_ObjectTypes.find(guid); if(itr != m_ObjectTypes.end()) { - return itr->second; + return itr->second; } return -1; } diff --git a/src/game/OutdoorPvP.h b/src/game/OutdoorPvP.h index 55b30c2bcf0..542863a5341 100644 --- a/src/game/OutdoorPvP.h +++ b/src/game/OutdoorPvP.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPEP.cpp b/src/game/OutdoorPvPEP.cpp index d1e895594f1..c403a5dc094 100644 --- a/src/game/OutdoorPvPEP.cpp +++ b/src/game/OutdoorPvPEP.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPEP.h b/src/game/OutdoorPvPEP.h index babaa30d72f..2a6a47827d6 100644 --- a/src/game/OutdoorPvPEP.h +++ b/src/game/OutdoorPvPEP.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPHP.cpp b/src/game/OutdoorPvPHP.cpp index 44ad3532fad..7294db0fb77 100644 --- a/src/game/OutdoorPvPHP.cpp +++ b/src/game/OutdoorPvPHP.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPHP.h b/src/game/OutdoorPvPHP.h index f570cabd349..986e8daee7e 100644 --- a/src/game/OutdoorPvPHP.h +++ b/src/game/OutdoorPvPHP.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPMgr.cpp b/src/game/OutdoorPvPMgr.cpp index 70934c57f24..757cbe82188 100644 --- a/src/game/OutdoorPvPMgr.cpp +++ b/src/game/OutdoorPvPMgr.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPMgr.h b/src/game/OutdoorPvPMgr.h index 9a91add6883..2478acf76f4 100644 --- a/src/game/OutdoorPvPMgr.h +++ b/src/game/OutdoorPvPMgr.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPNA.cpp b/src/game/OutdoorPvPNA.cpp index d17aa297277..c8134944cc1 100644 --- a/src/game/OutdoorPvPNA.cpp +++ b/src/game/OutdoorPvPNA.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify @@ -160,9 +160,9 @@ void OutdoorPvPObjectiveNA::SpawnGOsForTeam(uint32 team) i == NA_ROOST_W || i == NA_ROOST_N || i == NA_ROOST_E || - i == NA_BOMB_WAGON_S || - i == NA_BOMB_WAGON_W || - i == NA_BOMB_WAGON_N || + i == NA_BOMB_WAGON_S || + i == NA_BOMB_WAGON_W || + i == NA_BOMB_WAGON_N || i == NA_BOMB_WAGON_E ) continue; // roosts and bomb wagons are spawned when someone uses the matching destroyed roost AddObject(i,gos[i].entry,gos[i].map,gos[i].x,gos[i].y,gos[i].z,gos[i].o,gos[i].rot0,gos[i].rot1,gos[i].rot2,gos[i].rot3); @@ -244,7 +244,7 @@ void OutdoorPvPObjectiveNA::HandlePlayerLeave(Player *plr) OutdoorPvPObjective::HandlePlayerLeave(plr); } -OutdoorPvPObjectiveNA::OutdoorPvPObjectiveNA(OutdoorPvP *pvp) : +OutdoorPvPObjectiveNA::OutdoorPvPObjectiveNA(OutdoorPvP *pvp) : OutdoorPvPObjective(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFaction(0), m_HalaaState(HALAA_N), m_WyvernStateSouth(0), m_WyvernStateNorth(0), m_WyvernStateWest(0), m_WyvernStateEast(0), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME) @@ -336,7 +336,7 @@ void OutdoorPvPObjectiveNA::FillInitialWorldStates(WorldPacket &data) data << NA_MAP_HALAA_NEU_A << uint32(bool(m_HalaaState & HALAA_N_A)); data << NA_MAP_HALAA_NEU_H << uint32(bool(m_HalaaState & HALAA_N_H)); data << NA_MAP_HALAA_HORDE << uint32(bool(m_HalaaState & HALAA_H)); - data << NA_MAP_HALAA_ALLIANCE << uint32(bool(m_HalaaState & HALAA_A)); + data << NA_MAP_HALAA_ALLIANCE << uint32(bool(m_HalaaState & HALAA_A)); } void OutdoorPvPNA::SendRemoveWorldStates(Player *plr) @@ -368,7 +368,7 @@ void OutdoorPvPNA::SendRemoveWorldStates(Player *plr) plr->SendUpdateWorldState(NA_MAP_HALAA_NEU_A,0); plr->SendUpdateWorldState(NA_MAP_HALAA_NEU_H,0); plr->SendUpdateWorldState(NA_MAP_HALAA_HORDE,0); - plr->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE,0); + plr->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE,0); } bool OutdoorPvPNA::Update(uint32 diff) @@ -425,7 +425,7 @@ bool OutdoorPvPObjectiveNA::HandleCustomSpell(Player * plr, uint32 spellId, Game uint32 noSpaceForCount = 0; // check space and find places - ItemPosCountVec dest; + ItemPosCountVec dest; int32 count = 10; uint32 itemid = 24538; diff --git a/src/game/OutdoorPvPNA.h b/src/game/OutdoorPvPNA.h index 9bcd4fa5427..e7f157879bc 100644 --- a/src/game/OutdoorPvPNA.h +++ b/src/game/OutdoorPvPNA.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify @@ -77,7 +77,7 @@ enum OutdoorPvPNAWorldStates{ NA_MAP_HALAA_NEU_A = 2676, NA_MAP_HALAA_NEU_H = 2677, NA_MAP_HALAA_HORDE = 2672, - NA_MAP_HALAA_ALLIANCE = 2673 + NA_MAP_HALAA_ALLIANCE = 2673 }; const uint32 FLIGHT_NODES_NUM = 4; @@ -94,8 +94,8 @@ enum ControlGOTypes{ NA_BOMB_WAGON_N = 6, NA_BOMB_WAGON_E = 7, - NA_DESTROYED_ROOST_S = 8, - NA_DESTROYED_ROOST_W = 9, + NA_DESTROYED_ROOST_S = 8, + NA_DESTROYED_ROOST_W = 9, NA_DESTROYED_ROOST_N = 10, NA_DESTROYED_ROOST_E = 11, diff --git a/src/game/OutdoorPvPObjectiveAI.cpp b/src/game/OutdoorPvPObjectiveAI.cpp index 429254b8245..6e6cf8d64e5 100644 --- a/src/game/OutdoorPvPObjectiveAI.cpp +++ b/src/game/OutdoorPvPObjectiveAI.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPObjectiveAI.h b/src/game/OutdoorPvPObjectiveAI.h index c0f963863b4..3395b7e1be5 100644 --- a/src/game/OutdoorPvPObjectiveAI.h +++ b/src/game/OutdoorPvPObjectiveAI.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPSI.cpp b/src/game/OutdoorPvPSI.cpp index 2ba63934c57..9e95c315c7f 100644 --- a/src/game/OutdoorPvPSI.cpp +++ b/src/game/OutdoorPvPSI.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify @@ -204,7 +204,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player *plr, uint32 spellId) return true; if(!go->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),SI_SILITHYST_MOUND, map, plr->GetPhaseMask(), plr->GetPositionX(),plr->GetPositionY(),plr->GetPositionZ(),plr->GetOrientation(),0,0,0,0,100,1)) { - delete go; + delete go; } else { @@ -230,7 +230,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player *plr, uint32 spellId) return true; if(!go->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),SI_SILITHYST_MOUND, map, plr->GetPhaseMask() ,plr->GetPositionX(),plr->GetPositionY(),plr->GetPositionZ(),plr->GetOrientation(),0,0,0,0,100,1)) { - delete go; + delete go; } else { diff --git a/src/game/OutdoorPvPSI.h b/src/game/OutdoorPvPSI.h index 0cdb5b18377..208e35d09a1 100644 --- a/src/game/OutdoorPvPSI.h +++ b/src/game/OutdoorPvPSI.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPTF.cpp b/src/game/OutdoorPvPTF.cpp index 47edec7f8c8..39acc70ba53 100644 --- a/src/game/OutdoorPvPTF.cpp +++ b/src/game/OutdoorPvPTF.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify @@ -269,7 +269,7 @@ bool OutdoorPvPTF::SetupOutdoorPvP() m_IsLocked = false; m_LockTimer = TF_LOCK_TIME; - m_LockTimerUpdate = 0; + m_LockTimerUpdate = 0; hours_left = 6; second_digit = 0; first_digit = 0; diff --git a/src/game/OutdoorPvPZM.cpp b/src/game/OutdoorPvPZM.cpp index dc3921a2c5f..d8ac0de5f7d 100644 --- a/src/game/OutdoorPvPZM.cpp +++ b/src/game/OutdoorPvPZM.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/OutdoorPvPZM.h b/src/game/OutdoorPvPZM.h index 6899308a68e..c99ad69fa22 100644 --- a/src/game/OutdoorPvPZM.h +++ b/src/game/OutdoorPvPZM.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 6bd4b0148ff..8dcea866ef4 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -247,7 +247,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool m_charmInfo->GetActionBarEntry(index)->SpellOrAction = atol((*iter).c_str()); // patch for old data where some spells have ACT_DECIDE but should have ACT_CAST - // so overwrite old state + // so overwrite old state SpellEntry const *spellInfo = sSpellStore.LookupEntry(m_charmInfo->GetActionBarEntry(index)->SpellOrAction); if (spellInfo && spellInfo->AttributesEx & SPELL_ATTR_EX_UNAUTOCASTABLE_BY_PET) m_charmInfo->GetActionBarEntry(index)->Type = ACT_ENABLED; } @@ -1674,7 +1674,7 @@ void Pet::ToggleAutocast(uint32 spellid, bool apply) //if(const SpellEntry *tempSpell = GetSpellStore()->LookupEntry(spellid)) // if(tempSpell->EffectImplicitTargetA[0] != TARGET_ALL_AROUND_CASTER // && tempSpell->EffectImplicitTargetA[0] != TARGET_CHAIN_DAMAGE) - // return; + // return; PetSpellMap::const_iterator itr = m_spells.find(spellid); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index fb8121803c6..c3d3ce1b7d4 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -289,7 +289,7 @@ Player::Player (WorldSession *session): Unit(), m_achievementMgr(this) m_divider = 0; m_ExtraFlags = 0; - + // players always accept if(GetSession()->GetSecurity() == SEC_PLAYER) SetAcceptWhispers(true); @@ -1583,13 +1583,13 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati { GetSession()->SendNotification(LANG_NO_ENTER_CHAMPIONS_HALL); return false; - } + } if(mapid == 450 && GetTeam() == ALLIANCE) { GetSession()->SendNotification(LANG_NO_ENTER_HALL_OF_LEGENDS); return false; - } + } // client without expansion support if(GetSession()->Expansion() < mEntry->Expansion()) @@ -8263,7 +8263,7 @@ void Player::SendInitWorldStates(bool forceZone, uint32 forceZoneId) data << uint32(2474) << uint32(50); //: ally / horde slider percentage, 100 for ally, 0 for horde // show only in direct vicinity! data << uint32(2473) << uint32(0); //: ally / horde slider display // show only in direct vicinity! data << uint32(0x9a8) << uint32(0x0); // 20 // show the neutral stadium icon // 2472 - data << uint32(0x9a7) << uint32(0x0); // 21 // show the ally stadium icon // 2471 + data << uint32(0x9a7) << uint32(0x0); // 21 // show the ally stadium icon // 2471 data << uint32(0x9a6) << uint32(0x1); // 22 // show the horde stadium icon // 2470 } } @@ -8356,7 +8356,7 @@ void Player::SendInitWorldStates(bool forceZone, uint32 forceZoneId) data << uint32(0x9e1) << uint32(0x0); // 10 //2529 data << uint32(0x9e0) << uint32(0x0); // 11 data << uint32(0x9df) << uint32(0x0); // 12 - data << uint32(0xa5d) << uint32(0x1); // 13 //2653 + data << uint32(0xa5d) << uint32(0x1); // 13 //2653 data << uint32(0xa5c) << uint32(0x0); // 14 //2652 east beacon neutral data << uint32(0xa5b) << uint32(0x1); // 15 horde data << uint32(0xa5a) << uint32(0x0); // 16 ally @@ -8372,7 +8372,7 @@ void Player::SendInitWorldStates(bool forceZone, uint32 forceZoneId) data << uint32(0xa00) << uint32(0x0); // 26 // 2560 data << uint32(0x9ff) << uint32(0x1); // 27 data << uint32(0x9fe) << uint32(0x0); // 28 - data << uint32(0x9fd) << uint32(0x0); // 29 + data << uint32(0x9fd) << uint32(0x0); // 29 data << uint32(0x9fc) << uint32(0x1); // 30 data << uint32(0x9fb) << uint32(0x0); // 31 data << uint32(0xa62) << uint32(0x0); // 32 // 2658 @@ -12403,6 +12403,9 @@ void Player::ApplyEnchantment(Item *item,EnchantmentSlot slot,bool apply, bool a case ITEM_ENCHANTMENT_TYPE_USE_SPELL: // processed in Player::CastItemUseSpell break; + case ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET: + // nothing do.. + break; default: sLog.outError("Unknown item enchantment (id = %d) display type: %d", enchant_id, enchant_display_type); break; @@ -16053,7 +16056,7 @@ void Player::SaveToDB() // save pet (hunter pet level and experience and all type pets health/mana). if(Pet* pet = GetPet()) pet->SavePetToDB(PET_SAVE_AS_CURRENT); - + //to prevent access to DB we should cache some data, which is used very often /*CachePlayerInfoMap::iterator _iter = objmgr.m_mPlayerInfoMap.find(GetGUIDLow()); if(_iter != objmgr.m_mPlayerInfoMap.end())//skip new players @@ -19807,13 +19810,13 @@ void Player::RemovePossess(bool attack) target->GetMotionMaster()->Clear(); target->GetMotionMaster()->MoveTargetedHome(); } - } + } else { target->GetMotionMaster()->Clear(); target->GetMotionMaster()->MoveTargetedHome(); } - + // Add high amount of threat on the player if(attack) target->AddThreat(this, 1000000.0f); diff --git a/src/game/Player.h b/src/game/Player.h index 7bae06e9224..3e9a7e2553c 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1061,7 +1061,7 @@ class TRINITY_DLL_SPEC Player : public Unit Item* GetItemByGuid( uint64 guid ) const; Item* GetItemByPos( uint16 pos ) const; Item* GetItemByPos( uint8 bag, uint8 slot ) const; - inline Item* Player::GetUseableItemByPos( uint8 bag, uint8 slot ) const //Does additional check for disarmed weapons + inline Item* GetUseableItemByPos( uint8 bag, uint8 slot ) const //Does additional check for disarmed weapons { if (!CanUseAttackType(GetAttackBySlot(slot))) return NULL; diff --git a/src/game/PointMovementGenerator.cpp b/src/game/PointMovementGenerator.cpp index ab4cf1ed147..bcc25987e56 100644 --- a/src/game/PointMovementGenerator.cpp +++ b/src/game/PointMovementGenerator.cpp @@ -32,7 +32,7 @@ void PointMovementGenerator<T>::Initialize(T &unit) unit.StopMoving(); Traveller<T> traveller(unit); i_destinationHolder.SetDestination(traveller,i_x,i_y,i_z); - + if (unit.GetTypeId() == TYPEID_UNIT && ((Creature*)&unit)->canFly()) unit.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2); } diff --git a/src/game/RandomMovementGenerator.cpp b/src/game/RandomMovementGenerator.cpp index 76a92c7df70..8d02a57c49c 100644 --- a/src/game/RandomMovementGenerator.cpp +++ b/src/game/RandomMovementGenerator.cpp @@ -30,13 +30,13 @@ #define RUNNING_CHANCE_RANDOMMV 20 //will be "1 / RUNNING_CHANCE_RANDOMMV" template<> -bool +bool RandomMovementGenerator<Creature>::GetDestination(float &x, float &y, float &z) const { if(i_destinationHolder.HasArrived()) - return false; - - i_destinationHolder.GetDestination(x, y, z); + return false; + + i_destinationHolder.GetDestination(x, y, z); return true; } @@ -65,7 +65,7 @@ RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature) nx = X + distanceX; ny = Y + distanceY; - // prevent invalid coordinates generation + // prevent invalid coordinates generation Trinity::NormalizeMapCoord(nx); Trinity::NormalizeMapCoord(ny); @@ -122,9 +122,9 @@ RandomMovementGenerator<Creature>::Initialize(Creature &creature) { if(!creature.isAlive()) return; - + wander_distance = creature.GetRespawnRadius(); - + if (creature.canFly()) creature.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2); else diff --git a/src/game/RandomMovementGenerator.h b/src/game/RandomMovementGenerator.h index f8a324735f0..595b06d9adb 100644 --- a/src/game/RandomMovementGenerator.h +++ b/src/game/RandomMovementGenerator.h @@ -32,7 +32,7 @@ class TRINITY_DLL_SPEC RandomMovementGenerator public: // Wander dist is related on db spawn dist. So what if we wanna set eandom movement on summoned creature?! RandomMovementGenerator(float spawn_dist = 0.0f) : i_nextMoveTime(0), wander_distance(spawn_dist) {} - + void _setRandomLocation(T &); void Initialize(T &); void Finalize(T &); diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 5a9c7202656..9553592c82c 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -685,7 +685,7 @@ enum SpellEffects SPELL_EFFECT_153 = 153, SPELL_EFFECT_154 = 154, SPELL_EFFECT_TITAN_GRIP = 155, - SPELL_EFFECT_ADD_SOCKET = 156, + SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC = 156, SPELL_EFFECT_CREATE_ITEM_2 = 157, SPELL_EFFECT_MILLING = 158, SPELL_EFFECT_ALLOW_RENAME_PET = 159, @@ -829,7 +829,7 @@ enum Targets TARGET_TABLE_X_Y_Z_COORDINATES = 17, // uses in teleport spells and some other //TARGET_DEST_TABLE TARGET_EFFECT_SELECT = 18, // highly depends on the spell effect - TARGET_DEST_CASTER_GROUND = 18, + TARGET_DEST_CASTER_GROUND = 18, TARGET_ALL_PARTY_AROUND_CASTER = 20, TARGET_UNIT_PARTY_CASTER = 20, TARGET_SINGLE_FRIEND = 21, @@ -891,7 +891,7 @@ enum Targets TARGET_UNIT_AREA_SCRIPT = 60, TARGET_AREAEFFECT_PARTY_AND_CLASS = 61, TARGET_UNIT_CLASS_TARGET = 61, - TARGET_TEST = 62, // for a test spell + TARGET_TEST = 62, // for a test spell TARGET_DUELVSPLAYER_COORDINATES = 63, TARGET_DEST_TARGET_ENEMY_UNKNOWN = 63, TARGET_DEST_TARGET_FRONT = 64, diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 6538dc5b87b..aa91ff65ff6 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -574,6 +574,7 @@ void Spell::FillTargetMap() break; /*case SPELL_EFFECT_ENCHANT_ITEM: case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY: + case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC: case SPELL_EFFECT_DISENCHANT: case SPELL_EFFECT_PROSPECTING: case SPELL_EFFECT_MILLING: @@ -1045,7 +1046,7 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask) return; // Recheck immune (only for delayed spells) - if( m_spellInfo->speed && + if( m_spellInfo->speed && !(m_spellInfo->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY) && (unit->IsImmunedToDamage(GetSpellSchoolMask(m_spellInfo)) || unit->IsImmunedToSpell(m_spellInfo))) @@ -1169,7 +1170,7 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask) { if(m_customAttr & SPELL_ATTR_CU_EFFECT_HEAL) m_originalCaster->ProcDamageAndSpell(unit, PROC_FLAG_HEAL, PROC_FLAG_NONE, 0, GetSpellSchoolMask(m_spellInfo), m_spellInfo); - if(m_originalCaster != unit && (m_customAttr & SPELL_ATTR_CU_EFFECT_DAMAGE)) + if(m_originalCaster != unit && (m_customAttr & SPELL_ATTR_CU_EFFECT_DAMAGE)) m_originalCaster->ProcDamageAndSpell(unit, PROC_FLAG_HIT_SPELL, PROC_FLAG_STRUCK_SPELL, 0, GetSpellSchoolMask(m_spellInfo), m_spellInfo); }*/ } @@ -1337,7 +1338,7 @@ void Spell::SearchChainTarget(std::list<Unit*> &TagUnitMap, float max_range, uin if(cur->GetDistance(*next) > CHAIN_SPELL_JUMP_RADIUS) break; while(!cur->IsWithinLOSInMap(*next) - || m_spellInfo->DmgClass==SPELL_DAMAGE_CLASS_MELEE + || m_spellInfo->DmgClass==SPELL_DAMAGE_CLASS_MELEE && !m_caster->isInFront(*next, max_range)) { ++next; @@ -1347,7 +1348,7 @@ void Spell::SearchChainTarget(std::list<Unit*> &TagUnitMap, float max_range, uin } cur = *next; - tempUnitMap.erase(next); + tempUnitMap.erase(next); } } @@ -1385,7 +1386,7 @@ void Spell::SearchAreaTarget(std::list<Unit*> &TagUnitMap, float radius, const u } Trinity::SpellNotifierCreatureAndPlayer notifier(*this, TagUnitMap, radius, type, TargetType, entry, x, y, z); - if((m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_PLAYERS_ONLY) + if((m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_PLAYERS_ONLY) || TargetType == SPELL_TARGETS_ENTRY && !entry) m_caster->GetMap()->VisitWorld(x, y, radius, notifier); else @@ -1946,7 +1947,7 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap) if(m_targets.getUnitTarget()) { TagUnitMap.remove(m_targets.getUnitTarget()); - if(m_spellInfo->Id != 5246) //Intimidating Shout + if(m_spellInfo->Id != 5246) //Intimidating Shout --unMaxTargets; } @@ -1971,7 +1972,7 @@ void Spell::prepare(SpellCastTargets const* targets, Aura* triggeredByAura) m_castItemGUID = m_CastItem->GetGUID(); else m_castItemGUID = 0; - + m_targets = *targets; m_spellState = SPELL_STATE_PREPARING; @@ -2046,7 +2047,7 @@ void Spell::prepare(SpellCastTargets const* targets, Aura* triggeredByAura) if(isSpellBreakStealth(m_spellInfo) ) m_caster->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CAST); - if(!m_casttime && !m_spellInfo->StartRecoveryTime + if(!m_casttime && !m_spellInfo->StartRecoveryTime && !m_castItemGUID //item: first cast may destroy item and second cast causes crash && GetCurrentContainer() == CURRENT_GENERIC_SPELL) cast(true); @@ -2054,8 +2055,9 @@ void Spell::prepare(SpellCastTargets const* targets, Aura* triggeredByAura) { m_caster->SetCurrentCastedSpell( this ); m_selfContainer = &(m_caster->m_currentSpells[GetCurrentContainer()]); - SendSpellStart(); } + + SendSpellStart(); } } @@ -2100,14 +2102,14 @@ void Spell::cancel(bool report) // Unsummon summon as possessed creatures on spell cancel for (int i = 0; i < 3; i++) { - if (m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && - (m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || - m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || + if (m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && + (m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || + m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3)) { // Possession is removed in the UnSummon function if (m_caster->GetCharm()) - ((TemporarySummon*)m_caster->GetCharm())->UnSummon(); + ((TemporarySummon*)m_caster->GetCharm())->UnSummon(); } } @@ -2136,13 +2138,16 @@ void Spell::cast(bool skipCheck) if(m_caster->GetTypeId() != TYPEID_PLAYER && m_targets.getUnitTarget() && m_targets.getUnitTarget() != m_caster) m_caster->SetInFront(m_targets.getUnitTarget()); - castResult = CheckPower(); - if(castResult != 0) + if(!m_IsTriggeredSpell) { - SendCastResult(castResult); - finish(false); - SetExecutedCurrently(false); - return; + castResult = CheckPower(); + if(castResult != 0) + { + SendCastResult(castResult); + finish(false); + SetExecutedCurrently(false); + return; + } } // triggered cast called from Spell::prepare where it was already checked @@ -2197,22 +2202,15 @@ void Spell::cast(bool skipCheck) ((Player*)m_caster)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, m_spellInfo->Id); } - // CAST SPELL - SendSpellCooldown(); - if(!m_IsTriggeredSpell) { //TakePower(); TakeReagents(); // we must remove reagents before HandleEffects to allow place crafted item in same slot } - if(m_spellState == SPELL_STATE_FINISHED) // stop cast if spell marked as finish somewhere in Take*/FillTargetMap - { - SetExecutedCurrently(false); - return; - } - - SendCastResult(castResult); + // CAST SPELL + SendSpellCooldown(); + //SendCastResult(castResult); SendSpellGo(); // we must send smsg_spell_go packet before m_castItem delete in TakeCastItem()... if(m_customAttr & SPELL_ATTR_CU_DIRECT_DAMAGE) @@ -2257,9 +2255,12 @@ void Spell::cast(bool skipCheck) uint32 auraSpellIdx = (*i)->GetEffIndex(); // Calculate chance at that moment (can be depend for example from combo points) int32 chance = m_caster->CalculateSpellDamage(auraSpellInfo, auraSpellIdx, (*i)->GetBasePoints(),unit); + chance *= (*i)->GetStackAmount(); if(roll_chance_i(chance)) - for (int j=0; j != (*i)->GetStackAmount(); ++j) - m_caster->CastSpell(unit, auraSpellInfo->EffectTriggerSpell[auraSpellIdx], true, NULL, (*i)); + { + if(SpellEntry const *spellInfo = sSpellStore.LookupEntry(auraSpellInfo->EffectTriggerSpell[auraSpellIdx])) + m_TriggerSpells.push_back(spellInfo); + } } } } @@ -3721,7 +3722,7 @@ uint8 Spell::CanCast(bool strict) } //Must be behind the target. - if( m_spellInfo->AttributesEx2 == 0x100000 && (m_spellInfo->AttributesEx & 0x200) == 0x200 && target->HasInArc(M_PI, m_caster) + if( m_spellInfo->AttributesEx2 == 0x100000 && (m_spellInfo->AttributesEx & 0x200) == 0x200 && target->HasInArc(M_PI, m_caster) //Exclusion for Pounce: Facing Limitation was removed in 2.0.1, but it still uses the same, old Ex-Flags && (m_spellInfo->SpellFamilyName != SPELLFAMILY_DRUID || !m_spellInfo->SpellFamilyFlags.IsEqual(0x20000,0,0))) { @@ -5008,6 +5009,7 @@ uint8 Spell::CheckItems() break; } case SPELL_EFFECT_ENCHANT_ITEM: + case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC: { Item* targetItem = m_targets.getItemTarget(); if(!targetItem) @@ -5746,7 +5748,7 @@ int32 Spell::CalculateDamageDone(Unit *unit, const uint32 effectMask, float *mul m_damage *= m_damageMultipliers[i]; m_damageMultipliers[i] *= multiplier[i]; } - + damageDone += m_damage; } } diff --git a/src/game/Spell.h b/src/game/Spell.h index 7500bc32fd1..c38ebb617ad 100644 --- a/src/game/Spell.h +++ b/src/game/Spell.h @@ -350,6 +350,7 @@ class Spell void EffectRedirectThreat(uint32 i); void EffectActivateRune(uint32 i); void EffectTitanGrip(uint32 i); + void EffectEnchantItemPrismatic(uint32 i); Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, Spell** triggeringContainer = NULL, bool skipCheck = false ); ~Spell(); diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 49a69c11da1..5bab1316d4f 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -366,7 +366,7 @@ m_updated(false), m_isRemovedOnShapeLost(true), m_in_use(false) damage = caster->CalculateSpellDamage(m_spellProto, m_effIndex, m_currentBasePoints, target); else damage = m_currentBasePoints + 1; - } + } m_isPassive = IsPassiveSpell(GetId()); m_positive = IsPositiveEffect(GetId(), m_effIndex); @@ -1313,7 +1313,7 @@ void Aura::TriggerSpell() // // Five Fat Finger Exploding Heart Technique // case 27673: break; // Nitrous Boost - case 27746: + case 27746: { if (caster->GetPower(POWER_MANA) >= 10) { @@ -1621,7 +1621,7 @@ void Aura::TriggerSpell() (*i)->ApplyModifier(true); break; } - } + } }break; // // Dementia // case 41404: break; @@ -2270,7 +2270,7 @@ void Aura::HandleAuraDummy(bool apply, bool Real) if (totem && totem->isTotem()) totem->AddPlayerToVision((Player*)caster); } - } + } else ((Player*)caster)->RemoveFarsightTarget(); return; @@ -3821,7 +3821,7 @@ void Aura::HandleAuraModSchoolImmunity(bool apply, bool Real) { if(apply && m_modifier.m_miscvalue == SPELL_SCHOOL_MASK_NORMAL) m_target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_UNATTACKABLE); - + m_target->ApplySpellImmune(GetId(),IMMUNITY_SCHOOL,m_modifier.m_miscvalue,apply); if(Real && apply && GetSpellProto()->AttributesEx & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY) @@ -5432,7 +5432,7 @@ void Aura::PeriodicTick() break; } case 41337:// aura of anger - { + { Unit::AuraList const& mMod = m_target->GetAurasByType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); for(Unit::AuraList::const_iterator i = mMod.begin(); i != mMod.end(); ++i) { @@ -5443,7 +5443,7 @@ void Aura::PeriodicTick() (*i)->ApplyModifier(true); break; } - } + } m_modifier.m_amount += 100; }break; default: diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 0423e24a4d0..65e198d8af2 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -220,7 +220,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectNULL, //153 SPELL_EFFECT_CREATE_PET misc value is creature entry &Spell::EffectNULL, //154 unused &Spell::EffectTitanGrip, //155 SPELL_EFFECT_TITAN_GRIP Allows you to equip two-handed axes, maces and swords in one hand, but you attack $49152s1% slower than normal. - &Spell::EffectNULL, //156 Add Socket + &Spell::EffectEnchantItemPrismatic, //156 SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC &Spell::EffectCreateItem, //157 SPELL_EFFECT_CREATE_ITEM_2 create/learn item/spell for profession &Spell::EffectMilling, //158 SPELL_EFFECT_MILLING milling &Spell::EffectRenamePet //159 SPELL_EFFECT_ALLOW_RENAME_PET allow rename pet once again @@ -684,7 +684,7 @@ void Spell::EffectDummy(uint32 i) if (!creatureTarget || !pGameObj) return; if (!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), 181574, creatureTarget->GetMap(), creatureTarget->GetPhaseMask(), - creatureTarget->GetPositionX(), creatureTarget->GetPositionY(), creatureTarget->GetPositionZ(), + creatureTarget->GetPositionX(), creatureTarget->GetPositionY(), creatureTarget->GetPositionZ(), creatureTarget->GetOrientation(), 0, 0, 0, 0, 100, 1)) { delete pGameObj; @@ -1319,7 +1319,7 @@ void Spell::EffectDummy(uint32 i) rage+=aura->GetModifier()->m_amount; spell_id = 20647; - int32 bp = damage+int32(rage * m_spellInfo->DmgMultiplier[i] + + bp = damage+int32(rage * m_spellInfo->DmgMultiplier[i] + m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f); m_caster->SetPower(POWER_RAGE,0); break; @@ -3615,7 +3615,7 @@ void Spell::EffectAddFarsight(uint32 i) map->Add(dynObj); map->SwitchGridContainers(dynObj, true); // Needed for forwarding player packets dynObj->setActive(true); // Keep the grid updated even if there are no players in it - + // Need to update visibility of object for client to accept farsight guid ((Player*)m_caster)->UpdateVisibilityOf(dynObj); ((Player*)m_caster)->SetFarsightTarget(dynObj); @@ -3698,7 +3698,7 @@ void Spell::EffectSummonGuardian(uint32 i) } // trigger - if(!m_originalCaster || m_originalCaster->GetTypeId() != TYPEID_PLAYER + if(!m_originalCaster || m_originalCaster->GetTypeId() != TYPEID_PLAYER && !((Creature*)m_originalCaster)->isTotem()/*m_spellInfo->Id == 40276*/) { EffectSummonWild(i); @@ -3888,7 +3888,7 @@ void Spell::EffectTradeSkill(uint32 /*i*/) // ((Player*)unitTarget)->SetSkill(skillid,skillval?skillval:1,skillmax+75); } -void Spell::EffectEnchantItemPerm(uint32 i) +void Spell::EffectEnchantItemPerm(uint32 effect_idx) { if(m_caster->GetTypeId() != TYPEID_PLAYER) return; @@ -3897,9 +3897,10 @@ void Spell::EffectEnchantItemPerm(uint32 i) Player* p_caster = (Player*)m_caster; + // not grow at item use at item case p_caster->UpdateCraftSkill(m_spellInfo->Id); - uint32 enchant_id = m_spellInfo->EffectMiscValue[i]; + uint32 enchant_id = m_spellInfo->EffectMiscValue[effect_idx]; if (!enchant_id) return; @@ -3929,6 +3930,64 @@ void Spell::EffectEnchantItemPerm(uint32 i) item_owner->ApplyEnchantment(itemTarget,PERM_ENCHANTMENT_SLOT,true); } +void Spell::EffectEnchantItemPrismatic(uint32 effect_idx) +{ + if(m_caster->GetTypeId() != TYPEID_PLAYER) + return; + if (!itemTarget) + return; + + Player* p_caster = (Player*)m_caster; + + uint32 enchant_id = m_spellInfo->EffectMiscValue[effect_idx]; + if (!enchant_id) + return; + + SpellItemEnchantmentEntry const *pEnchant = sSpellItemEnchantmentStore.LookupEntry(enchant_id); + if(!pEnchant) + return; + + // support only enchantings with add socket in this slot + { + bool add_socket = false; + for(int i = 0; i < 3; ++i) + { + if(pEnchant->type[i]==ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET) + { + add_socket = true; + break; + } + } + if(!add_socket) + { + sLog.outError("Spell::EffectEnchantItemPrismatic: attempt apply enchant spell %u with SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC (%u) but without ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET (u), not suppoted yet.", + m_spellInfo->Id,SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC,ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET); + return; + } + } + + // item can be in trade slot and have owner diff. from caster + Player* item_owner = itemTarget->GetOwner(); + if(!item_owner) + return; + + if(item_owner!=p_caster && p_caster->GetSession()->GetSecurity() > SEC_PLAYER && sWorld.getConfig(CONFIG_GM_LOG_TRADE) ) + { + sLog.outCommand(p_caster->GetSession()->GetAccountId(),"GM %s (Account: %u) enchanting(perm): %s (Entry: %d) for player: %s (Account: %u)", + p_caster->GetName(),p_caster->GetSession()->GetAccountId(), + itemTarget->GetProto()->Name1,itemTarget->GetEntry(), + item_owner->GetName(),item_owner->GetSession()->GetAccountId()); + } + + // remove old enchanting before applying new if equipped + item_owner->ApplyEnchantment(itemTarget,PRISMATIC_ENCHANTMENT_SLOT,false); + + itemTarget->SetEnchantment(PRISMATIC_ENCHANTMENT_SLOT, enchant_id, 0, 0); + + // add new enchanting if equipped + item_owner->ApplyEnchantment(itemTarget,PRISMATIC_ENCHANTMENT_SLOT,true); +} + void Spell::EffectEnchantItemTmp(uint32 i) { if(m_caster->GetTypeId() != TYPEID_PLAYER) @@ -4539,7 +4598,7 @@ void Spell::SpellDamageWeaponDmg(uint32 i) if(spell_bonus) spell_bonus = int32(spell_bonus * weapon_total_pct); } - + int32 weaponDamage = m_caster->CalculateDamage(m_attackType, normalized); // Sequence is important diff --git a/src/game/TargetedMovementGenerator.cpp b/src/game/TargetedMovementGenerator.cpp index 8bcdd0f54a0..d39c2c68071 100644 --- a/src/game/TargetedMovementGenerator.cpp +++ b/src/game/TargetedMovementGenerator.cpp @@ -59,7 +59,7 @@ TargetedMovementGenerator<T>::_setTargetLocation(T &owner) float x, y, z; if(!i_offset) { - // to nearest random contact position + // to nearest random contact position i_target->GetRandomContactPoint( &owner, x, y, z, 0, MELEE_RANGE - 0.5f ); } else @@ -101,7 +101,7 @@ TargetedMovementGenerator<T>::Initialize(T &owner) if (owner.GetTypeId() == TYPEID_UNIT && ((Creature*)&owner)->canFly()) owner.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2); - + _setTargetLocation(owner); } diff --git a/src/game/TicketHandler.cpp b/src/game/TicketHandler.cpp index 435c6cbbefd..1ce07e80bc2 100644 --- a/src/game/TicketHandler.cpp +++ b/src/game/TicketHandler.cpp @@ -54,7 +54,7 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data ) // get additional data, rarely used recv_data >> ticketText2; - + // assign values ticket->name = GetPlayer()->GetName(); ticket->guid = ticketmgr.GenerateTicketID(); @@ -67,7 +67,7 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data ) // remove ticket by player, shouldn't happen ticketmgr.RemoveGMTicketByPlayer(GetPlayer()->GetGUID(), GetPlayer()->GetGUID()); - + // add ticket ticketmgr.AddGMTicket(ticket, false); @@ -76,15 +76,15 @@ void WorldSession::HandleGMTicketCreateOpcode( WorldPacket & recv_data ) // Send ticket creation SendPacket(&data); - + sWorld.SendGMText(LANG_COMMAND_TICKETNEW, ticket->name.c_str(), ticket->guid); - + } void WorldSession::HandleGMTicketUpdateOpcode( WorldPacket & recv_data) { // always do a packet check - CHECK_PACKET_SIZE(recv_data,1); + CHECK_PACKET_SIZE(recv_data,1); std::string message = ""; time_t t = time(NULL); @@ -98,7 +98,7 @@ void WorldSession::HandleGMTicketUpdateOpcode( WorldPacket & recv_data) GM_Ticket *ticket = ticketmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID()); // Check if player has a GM Ticket yet - if(!ticket) + if(!ticket) { // Response - error couldnt find existing Ticket data << uint32(1); @@ -133,7 +133,7 @@ void WorldSession::HandleGMTicketDeleteOpcode( WorldPacket & /*recv_data*/) if(ticket) { // Remove Tickets from Player - + // Response - no errors WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4); data << uint32(9); @@ -150,12 +150,12 @@ void WorldSession::HandleGMTicketGetTicketOpcode( WorldPacket & /*recv_data*/) // NO recv_data NO packet size check WorldPacket data(SMSG_GMTICKET_GETTICKET, 400); - + // get Current Ticket GM_Ticket *ticket = ticketmgr.GetGMTicketByPlayer(GetPlayer()->GetGUID()); // check for existing ticket - if(!ticket) + if(!ticket) { data << uint32(10); // send packet @@ -183,8 +183,8 @@ void WorldSession::HandleGMTicketSystemStatusOpcode( WorldPacket & /*recv_data*/ // in case of disactivity, this should be set to (0) data << uint32(1); - - + + // Send Packet SendPacket(&data); } diff --git a/src/game/TicketMgr.cpp b/src/game/TicketMgr.cpp index 588ce7f5f2c..b34e371a252 100644 --- a/src/game/TicketMgr.cpp +++ b/src/game/TicketMgr.cpp @@ -63,7 +63,7 @@ GM_Ticket* TicketMgr::GetGMTicketByName(const char* name) Player *plr = objmgr.GetPlayer(pname.c_str()); if(!plr) return NULL; - + uint64 playerGuid = plr->GetGUID(); for(GmTicketList::iterator i = GM_TicketList.begin(); i != GM_TicketList.end();) @@ -184,7 +184,7 @@ void TicketMgr::SaveGMTicket(GM_Ticket* ticket) CharacterDatabase.BeginTransaction(); CharacterDatabase.Execute(ss.str().c_str()); CharacterDatabase.CommitTransaction(); - + } void TicketMgr::UpdateGMTicket(GM_Ticket *ticket) diff --git a/src/game/TicketMgr.h b/src/game/TicketMgr.h index 9c090f559b0..989acf773e9 100644 --- a/src/game/TicketMgr.h +++ b/src/game/TicketMgr.h @@ -59,13 +59,13 @@ class TicketMgr void RemoveGMTicket(uint64 ticketGuid, uint64 GMguid); void UpdateGMTicket(GM_Ticket *ticket); void SaveGMTicket(GM_Ticket* ticket); - + uint64 GenerateTicketID(); void InitTicketID(); GM_Ticket* GetGMTicket(uint64 ticketGuid); GM_Ticket* GetGMTicketByPlayer(uint64 playerGuid); GM_Ticket* GetGMTicketByName(const char *name); - + protected: uint64 m_ticketid; diff --git a/src/game/Transports.cpp b/src/game/Transports.cpp index b13b7f33375..e10cee2d475 100644 --- a/src/game/Transports.cpp +++ b/src/game/Transports.cpp @@ -555,7 +555,7 @@ void Transport::Update(uint32 /*p_time*/) if ((sLog.getLogFilter() & LOG_FILTER_TRANSPORT_MOVES)==0) sLog.outDetail("%s moved to %f %f %f %d", this->m_name.c_str(), m_curr->second.x, m_curr->second.y, m_curr->second.z, m_curr->second.mapid); - + //Transport Event System CheckForEvent(this->GetEntry(), m_curr->second.id); sLog.outDetail("%s is at wp id: %u", this->m_name.c_str(), m_curr->second.id); diff --git a/src/game/Traveller.h b/src/game/Traveller.h index e81a34097e9..a1bfbb323e3 100644 --- a/src/game/Traveller.h +++ b/src/game/Traveller.h @@ -83,7 +83,7 @@ inline void Traveller<Creature>::MoveTo(float x, float y, float z, uint32 t) if(i_traveller.IsFormationLeader() && !i_traveller.isInCombat() && CreatureGroupHolder.find(i_traveller.GetFormationID()) != CreatureGroupHolder.end()) CreatureGroupHolder[i_traveller.GetFormationID()]->LeaderMovedInEvade(); - + i_traveller.AI_SendMoveToPacket(x, y, z, t, i_traveller.GetUnitMovementFlags(), 0); } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 0969abd05fd..5fcec4dff84 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -74,7 +74,7 @@ static bool procPrepared = InitTriggerAuraData(); Unit::Unit() : WorldObject(), i_motionMaster(this), m_ThreatManager(this), m_HostilRefManager(this) -, m_IsInNotifyList(false), m_Notified(false) +, m_IsInNotifyList(false), m_Notified(false), m_AI_enabled(false) { m_objectType |= TYPEMASK_UNIT; m_objectTypeId = TYPEID_UNIT; @@ -464,7 +464,7 @@ void Unit::RemoveAurasWithInterruptFlags(uint32 flag, uint32 except) // interrupt channeled spell if(Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]) - if(spell->getState() == SPELL_STATE_CASTING + if(spell->getState() == SPELL_STATE_CASTING && (spell->m_spellInfo->ChannelInterruptFlags & flag) && spell->m_spellInfo->Id != except) InterruptNonMeleeSpells(false); @@ -532,7 +532,7 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa if( pVictim->GetTypeId()== TYPEID_UNIT && ((Creature *)pVictim)->AI() ) { ((Creature *)pVictim)->AI()->DamageTaken(this, damage); - + // Set tagging if(!pVictim->HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_OTHER_TAGGER) && !((Creature*)pVictim)->isPet()) { @@ -550,14 +550,14 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa { if(((Creature*)this)->isPet()) { - ((Creature *)pVictim)->SetLootRecipient(this->GetOwner()); + ((Creature *)pVictim)->SetLootRecipient(this->GetOwner()); ((Creature *)pVictim)->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_OTHER_TAGGER); } break; } } } - } + } if (damagetype != NODAMAGE) { @@ -3034,7 +3034,11 @@ uint32 Unit::GetWeaponSkillValue (WeaponAttackType attType, Unit const* target) // feral or unarmed skill only for base attack if(attType != BASE_ATTACK && !item ) + { + if(attType == RANGED_ATTACK && getClass() == CLASS_PALADIN) //hammer + return GetMaxSkillValueForLevel(); return 0; + } if(((Player*)this)->IsInFeralForm()) return GetMaxSkillValueForLevel(); // always maximized SKILL_FERAL_COMBAT in fact @@ -4053,7 +4057,7 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode) statue = ((Totem*)caster); // stop caster chanelling state - else if(caster->m_currentSpells[CURRENT_CHANNELED_SPELL] + else if(caster->m_currentSpells[CURRENT_CHANNELED_SPELL] //prevent recurential call && caster->m_currentSpells[CURRENT_CHANNELED_SPELL]->getState() != SPELL_STATE_FINISHED) { @@ -4061,7 +4065,7 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode) { // remove auras only for non-aoe spells or when chanelled aura is removed // because aoe spells don't require aura on target to continue - if (AurSpellInfo->EffectApplyAuraName[Aur->GetEffIndex()]!=SPELL_AURA_PERIODIC_DUMMY + if (AurSpellInfo->EffectApplyAuraName[Aur->GetEffIndex()]!=SPELL_AURA_PERIODIC_DUMMY && AurSpellInfo->EffectApplyAuraName[Aur->GetEffIndex()]!= SPELL_AURA_DUMMY) //don't stop channeling of scripted spells (this is actually a hack) { @@ -7561,8 +7565,8 @@ void Unit::SetCharm(Unit* pet) SetUInt64Value(UNIT_FIELD_CHARM, pet ? pet->GetGUID() : 0); } -void Unit::AddPlayerToVision(Player* plr) -{ +void Unit::AddPlayerToVision(Player* plr) +{ if (m_sharedVision.empty() && GetTypeId() == TYPEID_UNIT) { setActive(true); @@ -7572,9 +7576,9 @@ void Unit::AddPlayerToVision(Player* plr) plr->SetFarsightTarget(this); } -void Unit::RemovePlayerFromVision(Player* plr) -{ - m_sharedVision.remove(plr); +void Unit::RemovePlayerFromVision(Player* plr) +{ + m_sharedVision.remove(plr); if (m_sharedVision.empty() && GetTypeId() == TYPEID_UNIT) { setActive(false); @@ -8499,7 +8503,7 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint CastingTime = damagetype == DOT ? 3500 : 1010; } // Improved Leader of the Pack - else if (spellProto->AttributesEx2 == 536870912 && spellProto->SpellIconID == 312 + else if (spellProto->AttributesEx2 == 536870912 && spellProto->SpellIconID == 312 && spellProto->AttributesEx3 == 33554432) { CastingTime = 0; @@ -9216,7 +9220,7 @@ bool Unit::isAttackableByAOE() const if(!isAlive()) return false; - if(HasFlag(UNIT_FIELD_FLAGS, + if(HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NOT_ATTACKABLE_2)) return false; @@ -9867,7 +9871,7 @@ Unit* Creature::SelectVictim() AI()->EnterEvadeMode(); break; } - return NULL; + return NULL; } // enter in evade mode in other case @@ -12257,7 +12261,7 @@ void Unit::SetCharmedOrPossessedBy(Unit* charmer, bool possess) } } - if(possess) + if(possess) ((Player*)charmer)->PossessSpellInitialize(); else if(charmer->GetTypeId() == TYPEID_PLAYER) ((Player*)charmer)->CharmSpellInitialize(); @@ -12313,7 +12317,7 @@ void Unit::RemoveCharmedOrPossessedBy(Unit *charmer) return; assert(!possess || charmer->GetTypeId() == TYPEID_PLAYER); - + charmer->SetCharm(0); if(possess) { @@ -12417,7 +12421,7 @@ void Unit::GetRaidMember(std::list<Unit*> &nearMembers, float radius) Player* Target = itr->getSource(); // IsHostileTo check duel and controlled by enemy - if( Target && Target != this && Target->isAlive() + if( Target && Target != this && Target->isAlive() && IsWithinDistInMap(Target, radius) && !IsHostileTo(Target) ) nearMembers.push_back(Target); } diff --git a/src/game/Unit.h b/src/game/Unit.h index 829bc6c0c25..bd61171de9b 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1103,7 +1103,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void DeMorph(); - void SendAttackStart(Unit* pVictim); + void SendAttackStart(Unit* pVictim); void SendAttackStateUpdate(CalcDamageInfo *damageInfo); void SendAttackStateUpdate(uint32 HitInfo, Unit *target, uint8 SwingType, SpellSchoolMask damageSchoolMask, uint32 Damage, uint32 AbsorbDamage, uint32 Resist, VictimState TargetState, uint32 BlockedAmount); void SendSpellNonMeleeDamageLog(SpellNonMeleeDamage *log); @@ -1559,6 +1559,8 @@ class TRINITY_DLL_SPEC Unit : public WorldObject uint32 m_regenTimer; ThreatManager m_ThreatManager; + + bool m_AI_enabled; private: void SendAttackStop(Unit* victim); // only from AttackStop(Unit*) //void SendAttackStart(Unit* pVictim); // only from Unit::AttackStart(Unit*) diff --git a/src/game/WaypointManager.cpp b/src/game/WaypointManager.cpp index d2521779413..e9455269a13 100644 --- a/src/game/WaypointManager.cpp +++ b/src/game/WaypointManager.cpp @@ -57,17 +57,17 @@ void WaypointStore::Load() barGoLink bar( total_records); Field *fields; uint32 last_id = 0; - + do { fields = result->Fetch(); uint32 id = fields[0].GetUInt32(); bar.step(); WaypointData *wp = new WaypointData; - + if(last_id != id) path_data = new WaypointPath; - + float x,y,z; x = fields[2].GetFloat(); y = fields[3].GetFloat(); @@ -84,12 +84,12 @@ void WaypointStore::Load() wp->delay = fields[6].GetUInt32(); wp->event_id = fields[7].GetUInt32(); wp->event_chance = fields[8].GetUInt8(); - + path_data->push_back(wp); - - if(id != last_id) + + if(id != last_id) waypoint_map[id] = path_data; - + last_id = id; } while(result->NextRow()) ; @@ -100,28 +100,28 @@ void WaypointStore::Load() void WaypointStore::UpdatePath(uint32 id) { - + if(waypoint_map.find(id)!= waypoint_map.end()) waypoint_map[id]->clear(); - + QueryResult *result; result = WorldDatabase.PQuery("SELECT `id`,`point`,`position_x`,`position_y`,`position_z`,`move_flag`,`delay`,`action`,`action_chance` FROM `waypoint_data` WHERE id = %u ORDER BY `point`", id); - + if(!result) return; - + WaypointPath* path_data; - + path_data = new WaypointPath; - + Field *fields; - + do { fields = result->Fetch(); uint32 id = fields[0].GetUInt32(); - + WaypointData *wp = new WaypointData; float x,y,z; @@ -140,11 +140,11 @@ void WaypointStore::UpdatePath(uint32 id) wp->delay = fields[6].GetUInt32(); wp->event_id = fields[7].GetUInt32(); wp->event_chance = fields[8].GetUInt8(); - + path_data->push_back(wp); }while (result->NextRow()); - + waypoint_map[id] = path_data; delete result; diff --git a/src/game/WaypointManager.h b/src/game/WaypointManager.h index 2bbb5c0e15e..276caea7b33 100644 --- a/src/game/WaypointManager.h +++ b/src/game/WaypointManager.h @@ -40,19 +40,19 @@ class WaypointStore { private : uint32 records; - + public: void UpdatePath(uint32 id); void Load(); void Free(); - + WaypointPath* GetPath(uint32 id) { if(waypoint_map.find(id) != waypoint_map.end()) return waypoint_map[id]; else return 0; } - + inline uint32 GetRecordsCount() { return records; } }; diff --git a/src/game/WaypointMovementGenerator.cpp b/src/game/WaypointMovementGenerator.cpp index 97ce5feff43..a5bfb741188 100644 --- a/src/game/WaypointMovementGenerator.cpp +++ b/src/game/WaypointMovementGenerator.cpp @@ -53,14 +53,14 @@ template<> bool WaypointMovementGenerator<Creature>::GetDestination(float &x, float &y, float &z) const { if(i_destinationHolder.HasArrived()) - return false; - - i_destinationHolder.GetDestination(x, y, z); + return false; + + i_destinationHolder.GetDestination(x, y, z); return true; } template<> -bool WaypointMovementGenerator<Player>::GetDestination(float &x, float &y, float &z) const +bool WaypointMovementGenerator<Player>::GetDestination(float &x, float &y, float &z) const { return false; } @@ -80,13 +80,13 @@ void WaypointMovementGenerator<Creature>::InitTraveller(Creature &unit, const Wa { node.run ? unit.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE): unit.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); - + unit.SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); unit.SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - + if(unit.canFly()) unit.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2); - + unit.addUnitState(UNIT_STAT_ROAMING); } @@ -133,7 +133,7 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff) if(!path_id) return false; - + // Waypoint movement can be switched on/off // This is quite handy for escort quests and other stuff if(unit.hasUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED | UNIT_STAT_DISTRACTED)) @@ -161,7 +161,7 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff) StopedByPlayer = false; return true; } - + if(i_currentNode == waypoints->size() - 1) //If that's our last waypoint { if(repeating) //If the movement is repeating @@ -173,7 +173,7 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff) return false; //Clear the waypoint movement } } - else + else i_currentNode++; node = waypoints->at(i_currentNode); @@ -183,20 +183,20 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff) } else { - //Determine waittime + //Determine waittime if(node->delay) i_nextMoveTime.Reset(node->delay); - + if(node->event_id && rand()%100 < node->event_chance) sWorld.ScriptsStart(sWaypointScripts, node->event_id, &unit, NULL); - + MovementInform(unit); unit.UpdateWaypointID(i_currentNode); unit.clearUnitState(UNIT_STAT_MOVING); unit.Relocate(node->x, node->y, node->z); } } - else + else { if(unit.IsStopped() && !i_destinationHolder.HasArrived()) { diff --git a/src/game/WaypointMovementGenerator.h b/src/game/WaypointMovementGenerator.h index d7bacfd1367..7046ca6b5cb 100644 --- a/src/game/WaypointMovementGenerator.h +++ b/src/game/WaypointMovementGenerator.h @@ -53,7 +53,7 @@ class TRINITY_DLL_SPEC PathMovementBase void LoadPath(T &); void ReloadPath(T &); uint32 GetCurrentNode() const { return i_currentNode; } - + protected: uint32 i_currentNode; DestinationHolder< Traveller<T> > i_destinationHolder; @@ -66,9 +66,9 @@ class TRINITY_DLL_SPEC WaypointMovementGenerator : public MovementGeneratorMedium< T, WaypointMovementGenerator<T> >, public PathMovementBase<T> { public: - WaypointMovementGenerator(uint32 _path_id = 0, bool _repeating = true) : + WaypointMovementGenerator(uint32 _path_id = 0, bool _repeating = true) : i_nextMoveTime(0), path_id(_path_id), repeating(_repeating), StopedByPlayer(false), node(NULL) {} - + void Initialize(T &); void Finalize(T &); void MovementInform(T &); diff --git a/src/game/World.cpp b/src/game/World.cpp index a860ad52f08..3bce771bec0 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -403,7 +403,7 @@ void World::LoadConfigSettings(bool reload) sLog.outError("World settings reload fail: can't read settings from %s.",sConfig.GetFilename().c_str()); return; } - //TODO Check if config is outdated + //TODO Check if config is outdated } ///- Read the player limit and the Message of the day from the config file @@ -1440,7 +1440,7 @@ void World::SetInitialWorldSettings() //Not sure if this can be moved up in the sequence (with static data loading) as it uses MapManager sLog.outString( "Loading Transports..." ); MapManager::Instance().LoadTransports(); - + sLog.outString( "Loading Transports Events..." ); objmgr.LoadTransportEvents(); @@ -1835,7 +1835,7 @@ void World::ScriptsProcess() for (MapManager::TransportSet::iterator iter = MapManager::Instance().m_Transports.begin(); iter != MapManager::Instance().m_Transports.end(); ++iter) { if((*iter)->GetGUID() == step.sourceGUID) - { + { source = reinterpret_cast<Object*>(*iter); break; } @@ -2385,7 +2385,7 @@ void World::ScriptsProcess() break; } - + case SCRIPT_COMMAND_LOAD_PATH: { if(!source) @@ -2398,18 +2398,18 @@ void World::ScriptsProcess() { sLog.outError("SCRIPT_COMMAND_START_MOVE source mover isn't unit (TypeId: %u), skipping.",source->GetTypeId()); break; - } - + } + if(!WaypointMgr.GetPath(step.script->datalong)) { sLog.outError("SCRIPT_COMMAND_START_MOVE source mover has an invallid path, skipping.", step.script->datalong2); break; } - + dynamic_cast<Unit*>(source)->GetMotionMaster()->MovePath(step.script->datalong, step.script->datalong2); break; } - + case SCRIPT_COMMAND_CALLSCRIPT_TO_UNIT: { if(!step.script->datalong || !step.script->datalong2) @@ -2419,17 +2419,17 @@ void World::ScriptsProcess() } //our target Creature* target = NULL; - + if(source) //using grid searcher { CellPair p(Trinity::ComputeCellPair(((Unit*)source)->GetPositionX(), ((Unit*)source)->GetPositionY())); Cell cell(p); cell.data.Part.reserved = ALL_DISTRICT; - + //sLog.outDebug("Attempting to find Creature: Db GUID: %i", step.script->datalong); Trinity::CreatureWithDbGUIDCheck target_check(((Unit*)source), step.script->datalong); Trinity::CreatureSearcher<Trinity::CreatureWithDbGUIDCheck> checker(((Unit*)source), target, target_check); - + TypeContainerVisitor<Trinity::CreatureSearcher <Trinity::CreatureWithDbGUIDCheck>, GridTypeMapContainer > unit_checker(checker); CellLock<GridReadGuard> cell_lock(cell, p); cell_lock->Visit(cell_lock, unit_checker, *(((Unit*)source)->GetMap())); @@ -2469,19 +2469,19 @@ void World::ScriptsProcess() sLog.outError("SCRIPT_COMMAND_CALLSCRIPT ERROR: no scriptmap present... ignoring"); break; } - //if no scriptmap present... + //if no scriptmap present... if(!datamap) break; - + uint32 script_id = step.script->datalong2; //delete iter and return it to begin pos(next one) m_scriptSchedule.erase(iter); iter = m_scriptSchedule.begin(); - + ScriptsStart(*datamap, script_id, target, NULL); return; } - + case SCRIPT_COMMAND_PLAYSOUND: { if(!source) diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index d33f13f4fa7..65216b028d5 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -292,7 +292,7 @@ class TRINITY_DLL_SPEC WorldSession void HandleGMTicketDeleteOpcode(WorldPacket& recvPacket); void HandleGMTicketGetTicketOpcode(WorldPacket& recvPacket); void HandleGMTicketSystemStatusOpcode(WorldPacket& recvPacket); - + //void HandleGMSurveySubmit(WorldPacket& recvPacket); void HandleTogglePvP(WorldPacket& recvPacket); diff --git a/src/game/WorldSocket.cpp b/src/game/WorldSocket.cpp index bca7a4b6928..9913c912c70 100644 --- a/src/game/WorldSocket.cpp +++ b/src/game/WorldSocket.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> diff --git a/src/game/WorldSocket.h b/src/game/WorldSocket.h index 839c9aba28c..15d3ec31e06 100644 --- a/src/game/WorldSocket.h +++ b/src/game/WorldSocket.h @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * Copyright (C) 2008-2009 Trinity <http://www.trinitycore.org/> diff --git a/src/game/WorldSocketMgr.h b/src/game/WorldSocketMgr.h index 68c5e9cf4ab..d7cb627b11c 100644 --- a/src/game/WorldSocketMgr.h +++ b/src/game/WorldSocketMgr.h @@ -36,7 +36,7 @@ class ReactorRunnable; class ACE_Event_Handler; /// Manages all sockets connected to peers and network threads -class WorldSocketMgr +class WorldSocketMgr { public: friend class WorldSocket; @@ -44,32 +44,32 @@ public: /// Start network, listen at address:port . int StartNetwork (ACE_UINT16 port, const char* address); - + /// Stops all network threads, It will wait for all running threads . void StopNetwork (); - + /// Wait untill all network threads have "joined" . void Wait (); - + /// Make this class singleton . static WorldSocketMgr* Instance (); - + private: int OnSocketOpen(WorldSocket* sock); - + int StartReactiveIO(ACE_UINT16 port, const char* address); - -private: + +private: WorldSocketMgr (); virtual ~WorldSocketMgr (); - + ReactorRunnable* m_NetThreads; size_t m_NetThreadsCount; - + int m_SockOutKBuff; int m_SockOutUBuff; bool m_UseNoDelay; - + ACE_Event_Handler* m_Acceptor; }; |
