diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Chat/Chat.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Chat/Chat.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 79 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 4 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 62 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.h | 4 | ||||
-rw-r--r-- | src/server/game/Handlers/GuildHandler.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Handlers/MailHandler.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 1 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.h | 8 | ||||
-rw-r--r-- | src/server/game/World/World.h | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_wp.cpp | 49 | ||||
-rw-r--r-- | src/tools/vmap4_assembler/CMakeLists.txt | 4 |
14 files changed, 123 insertions, 127 deletions
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 31424d7ee43..8059ebc55a2 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -694,7 +694,7 @@ int ChatHandler::GetSessionDbLocaleIndex() const return m_session->GetSessionDbLocaleIndex(); } -std::string ChatHandler::GetNameLink(Player* chr) const +std::string ChatHandler::GetNameLink(Player const* chr) const { return playerLink(chr->GetName()); } diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 10412099edf..16bb4dd1cac 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -117,7 +117,7 @@ class TC_GAME_API ChatHandler bool extractPlayerTarget(char* args, Player** player, ObjectGuid* player_guid = nullptr, std::string* player_name = nullptr); std::string playerLink(std::string const& name) const { return m_session ? "|cffffffff|Hplayer:"+name+"|h["+name+"]|h|r" : name; } - std::string GetNameLink(Player* chr) const; + std::string GetNameLink(Player const* chr) const; GameObject* GetNearbyGameObject(); GameObject* GetObjectFromPlayerMapByDbGuid(ObjectGuid::LowType lowguid); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4919eb8c781..e50c46ee1f2 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5614,69 +5614,68 @@ bool Player::UpdateFishingSkill() return false; } -// levels sync. with spell requirement for skill levels to learn -// bonus abilities in sSkillLineAbilityStore -// Used only to avoid scan DBC at each skill grow -static uint32 bonusSkillLevels[ ] = {75, 150, 225, 300, 375, 450}; -static const size_t bonusSkillLevelsSize = sizeof(bonusSkillLevels) / sizeof(uint32); - -bool Player::UpdateSkillPro(uint16 SkillId, int32 Chance, uint32 step) +bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) { + // levels sync. with spell requirement for skill levels to learn + // bonus abilities in sSkillLineAbilityStore + // Used only to avoid scan DBC at each skill grow + uint32 const bonusSkillLevels[] = { 75, 150, 225, 300, 375, 450 }; + TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '{}' ({}), SkillID: {}, Chance: {:3.1f}%)", - GetName(), GetGUID().ToString(), SkillId, Chance / 10.0f); - if (!SkillId) + GetName(), GetGUID().ToString(), skillId, chance / 10.0f); + if (!skillId) return false; - if (Chance <= 0) // speedup in 0 chance case + if (chance <= 0) // speedup in 0 chance case { TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '{}' ({}), SkillID: {}, Chance: {:3.1f}% missed", - GetName(), GetGUID().ToString(), SkillId, Chance / 10.0f); + GetName(), GetGUID().ToString(), skillId, chance / 10.0f); return false; } - SkillStatusMap::iterator itr = mSkillStatus.find(SkillId); + SkillStatusMap::iterator itr = mSkillStatus.find(skillId); if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return false; uint32 valueIndex = PLAYER_SKILL_VALUE_INDEX(itr->second.pos); uint32 data = GetUInt32Value(valueIndex); - uint16 SkillValue = SKILL_VALUE(data); - uint16 MaxValue = SKILL_MAX(data); + uint16 value = SKILL_VALUE(data); + uint16 max = SKILL_MAX(data); - if (!MaxValue || !SkillValue || SkillValue >= MaxValue) + if (!max || !value || value >= max) return false; - int32 Roll = irand(1, 1000); - - if (Roll <= Chance) + if (irand(1, 1000) > chance) { - uint32 new_value = SkillValue+step; - if (new_value > MaxValue) - new_value = MaxValue; + TC_LOG_DEBUG("entities.player.skills", + "Player::UpdateSkillPro: Player '{}' ({}), SkillID: {}, Chance: {:3.1f}% missed", + GetName(), GetGUID().ToString(), skillId, chance / 10.0f); + return false; + } - SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(new_value, MaxValue)); - if (itr->second.uState != SKILL_NEW) - itr->second.uState = SKILL_CHANGED; - for (size_t i = 0; i < bonusSkillLevelsSize; ++i) + uint16 new_value = value + step; + if (new_value > max) + new_value = max; + + SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(new_value, max)); + if (itr->second.uState != SKILL_NEW) + itr->second.uState = SKILL_CHANGED; + + for (uint32 bsl : bonusSkillLevels) + { + if (value < bsl && new_value >= bsl) { - uint32 bsl = bonusSkillLevels[i]; - if (SkillValue < bsl && new_value >= bsl) - { - LearnSkillRewardedSpells(SkillId, new_value); - break; - } + LearnSkillRewardedSpells(skillId, new_value); + break; } - UpdateSkillEnchantments(SkillId, SkillValue, new_value); - UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL, SkillId); - TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '{}' ({}), SkillID: {}, Chance: {:3.1f}% taken", - GetName(), GetGUID().ToString(), SkillId, Chance / 10.0f); - return true; } - TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '{}' ({}), SkillID: {}, Chance: {:3.1f}% missed", - GetName(), GetGUID().ToString(), SkillId, Chance / 10.0f); - return false; + UpdateSkillEnchantments(skillId, value, new_value); + UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL, skillId); + TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '{}' ({}), SkillID: {}, Chance: {:3.1f}% taken", + GetName(), GetGUID().ToString(), skillId, chance / 10.0f); + return true; } void Player::UpdateWeaponSkill(Unit* victim, WeaponAttackType attType) @@ -23717,7 +23716,7 @@ uint32 Player::GetResurrectionSpellId() } // Used in triggers for check "Only to targets that grant experience or honor" req -bool Player::isHonorOrXPTarget(Unit* victim) const +bool Player::isHonorOrXPTarget(Unit const* victim) const { uint8 v_level = victim->GetLevel(); uint8 k_grey = Trinity::XP::GetGrayLevel(GetLevel()); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 29c98bb71d2..efe5e6231dc 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1633,7 +1633,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void StoreRaidMapDifficulty(); bool UpdateSkill(uint32 skill_id, uint32 step); - bool UpdateSkillPro(uint16 SkillId, int32 Chance, uint32 step); + bool UpdateSkillPro(uint16 skillId, int32 chance, uint32 step); bool UpdateCraftSkill(uint32 spellid); bool UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLevel, uint32 Multiplicator = 1); @@ -1818,7 +1818,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool IsAtRecruitAFriendDistance(WorldObject const* pOther) const; void RewardPlayerAndGroupAtKill(Unit* victim, bool isBattleGround); void RewardPlayerAndGroupAtEvent(uint32 creature_id, WorldObject* pRewardSource); - bool isHonorOrXPTarget(Unit* victim) const; + bool isHonorOrXPTarget(Unit const* victim) const; bool GetsRecruitAFriendBonus(bool forXP); uint8 GetGrantableLevels() const { return m_grantableLevels; } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index af083b1532e..2f06d93c6bb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -7628,7 +7628,7 @@ inline void CheckGOSpellId(GameObjectTemplate const* goInfo, uint32 dataN, uint3 goInfo->entry, goInfo->type, N, dataN, dataN); } -inline void CheckAndFixGOChairHeightId(GameObjectTemplate const* goInfo, uint32 const& dataN, uint32 N) +inline void CheckAndFixGOChairHeightId(GameObjectTemplate const* goInfo, uint32& dataN, uint32 N) { if (dataN <= (UNIT_STAND_STATE_SIT_HIGH_CHAIR-UNIT_STAND_STATE_SIT_LOW_CHAIR)) return; @@ -7637,7 +7637,7 @@ inline void CheckAndFixGOChairHeightId(GameObjectTemplate const* goInfo, uint32 goInfo->entry, goInfo->type, N, dataN, UNIT_STAND_STATE_SIT_HIGH_CHAIR-UNIT_STAND_STATE_SIT_LOW_CHAIR); // prevent client and server unexpected work - const_cast<uint32&>(dataN) = 0; + dataN = 0; } inline void CheckGONoDamageImmuneId(GameObjectTemplate* goTemplate, uint32 dataN, uint32 N) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 5864e8c4d14..78d88531dda 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1363,25 +1363,31 @@ void Guild::HandleSetEmblem(WorldSession* session, EmblemInfo const& emblemInfo) } } -void Guild::HandleSetLeader(WorldSession* session, std::string_view name) +void Guild::HandleSetNewGuildMaster(WorldSession* session, std::string_view name) { Player* player = session->GetPlayer(); - // Only leader can assign new leader + + Member* oldGuildMaster = GetMember(GetLeaderGUID()); + ASSERT(oldGuildMaster); + if (!_IsLeader(player)) - SendCommandResult(session, GUILD_COMMAND_CHANGE_LEADER, ERR_GUILD_PERMISSIONS); - // Old leader must be a member of guild - else if (Member* pOldLeader = GetMember(player->GetGUID())) { - // New leader must be a member of guild - if (Member* pNewLeader = GetMember(name)) - { - _SetLeaderGUID(*pNewLeader); - - CharacterDatabaseTransaction trans(nullptr); - pOldLeader->ChangeRank(trans, GR_OFFICER); - _BroadcastEvent(GE_LEADER_CHANGED, ObjectGuid::Empty, player->GetName(), pNewLeader->GetName()); - } + SendCommandResult(session, GUILD_COMMAND_CHANGE_LEADER, ERR_GUILD_PERMISSIONS); + return; } + + Member* newGuildMaster = GetMember(name); + if (!newGuildMaster) + return; + + CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); + + _SetLeader(trans, *newGuildMaster); + oldGuildMaster->ChangeRank(trans, GR_OFFICER); + + _BroadcastEvent(GE_LEADER_CHANGED, ObjectGuid::Empty, player->GetName(), newGuildMaster->GetName()); + + CharacterDatabase.CommitTransaction(trans); } void Guild::HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string_view name, std::string_view icon) @@ -2095,15 +2101,15 @@ bool Guild::Validate() // Repair the structure of the guild. // If the guildmaster doesn't exist or isn't member of the guild // attempt to promote another member. - Member* pLeader = GetMember(m_leaderGuid); - if (!pLeader) + Member* leader = GetMember(m_leaderGuid); + if (!leader) { CharacterDatabaseTransaction dummy(nullptr); if (DeleteMember(dummy, m_leaderGuid)) return false; } - else if (!pLeader->IsRank(GR_GUILDMASTER)) - _SetLeaderGUID(*pLeader); + else if (!leader->IsRank(GR_GUILDMASTER)) + _SetLeader(trans, *leader); // Check config if multiple guildmasters are allowed if (!sConfigMgr->GetBoolDefault("Guild.AllowMultipleGuildMaster", false)) @@ -2271,9 +2277,9 @@ bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo { Member* oldLeader = nullptr; Member* newLeader = nullptr; - for (auto& [guid, member] : m_members) + for (auto& [memberGuid, member] : m_members) { - if (guid == lowguid) + if (memberGuid == lowguid) oldLeader = &member; else if (!newLeader || newLeader->GetRankId() > member.GetRankId()) newLeader = &member; @@ -2285,7 +2291,7 @@ bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo return true; } - _SetLeaderGUID(*newLeader); + _SetLeader(trans, *newLeader); // If player not online data in data field will be loaded from guild tabs no need to update it !! if (Player* newLeaderPlayer = newLeader->FindPlayer()) @@ -2524,18 +2530,22 @@ bool Guild::_ModifyBankMoney(CharacterDatabaseTransaction trans, uint64 amount, return true; } -void Guild::_SetLeaderGUID(Member& pLeader) +void Guild::_SetLeader(CharacterDatabaseTransaction trans, Member& leader) { - CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); - m_leaderGuid = pLeader.GetGUID(); - pLeader.ChangeRank(trans, GR_GUILDMASTER); + bool isInTransaction = bool(trans); + if (!isInTransaction) + trans = CharacterDatabase.BeginTransaction(); + + m_leaderGuid = leader.GetGUID(); + leader.ChangeRank(trans, GR_GUILDMASTER); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_LEADER); stmt->setUInt32(0, m_leaderGuid.GetCounter()); stmt->setUInt32(1, m_id); trans->Append(stmt); - CharacterDatabase.CommitTransaction(trans); + if (!isInTransaction) + CharacterDatabase.CommitTransaction(trans); } void Guild::_SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay) diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 5e93660f877..f9727e31013 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -652,7 +652,7 @@ class TC_GAME_API Guild void HandleSetMOTD(WorldSession* session, std::string_view motd); void HandleSetInfo(WorldSession* session, std::string_view info); void HandleSetEmblem(WorldSession* session, EmblemInfo const& emblemInfo); - void HandleSetLeader(WorldSession* session, std::string_view name); + void HandleSetNewGuildMaster(WorldSession* session, std::string_view name); void HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string_view name, std::string_view icon); void HandleSetMemberNote(WorldSession* session, std::string_view note, std::string_view name, bool isPublic); void HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string_view name, uint32 rights, uint32 moneyPerDay, std::array<GuildBankRightsAndSlots, GUILD_BANK_MAX_TABS> const& rightsAndSlots); @@ -801,7 +801,7 @@ class TC_GAME_API Guild bool _IsLeader(Player* player) const; void _DeleteBankItems(CharacterDatabaseTransaction trans, bool removeItemsFromDB = false); bool _ModifyBankMoney(CharacterDatabaseTransaction trans, uint64 amount, bool add); - void _SetLeaderGUID(Member& pLeader); + void _SetLeader(CharacterDatabaseTransaction trans, Member& leader); void _SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay); void _SetRankBankTabRightsAndSlots(uint8 rankId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB = true); diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index 8a7e32e7e2c..ae3dec9922b 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -127,15 +127,6 @@ void WorldSession::HandleGuildDelete(WorldPackets::Guild::GuildDelete& /*packet* guild->HandleDisband(this); } -void WorldSession::HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet) -{ - TC_LOG_DEBUG("guild", "CMSG_GUILD_LEADER [{}]: Target: {}", GetPlayerInfo(), packet.NewMasterName); - - if (normalizePlayerName(packet.NewMasterName)) - if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetLeader(this, packet.NewMasterName); -} - void WorldSession::HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText& packet) { TC_LOG_DEBUG("guild", "CMSG_GUILD_MOTD [{}]: MOTD: {}", GetPlayerInfo(), packet.MotdText); @@ -381,3 +372,12 @@ void WorldSession::HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTa if (Guild* guild = GetPlayer()->GetGuild()) guild->SetBankTabText(packet.Tab, packet.TabText); } + +void WorldSession::HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet) +{ + TC_LOG_DEBUG("guild", "CMSG_GUILD_LEADER [{}]: Target: {}", GetPlayerInfo(), packet.NewMasterName); + + if (normalizePlayerName(packet.NewMasterName)) + if (Guild* guild = GetPlayer()->GetGuild()) + guild->HandleSetNewGuildMaster(this, packet.NewMasterName); +} diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 22fe050c80d..16a4df4dc0b 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -361,8 +361,7 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend player->SendMailResult(returnToSender.MailID, MAIL_RETURNED_TO_SENDER, MAIL_ERR_INTERNAL_ERROR); return; } - //we can return mail now - //so firstly delete the old one + //we can return mail now, so firstly delete the old one CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); @@ -386,14 +385,8 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend { for (MailItemInfoVec::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2) { - Item* item = player->GetMItem(itr2->item_guid); - if (item) + if (Item* item = player->GetMItem(itr2->item_guid)) draft.AddItem(item); - else - { - //WTF? - } - player->RemoveMItem(itr2->item_guid); } } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index e329fbaeeb3..42ffefbf7f5 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -63,7 +63,6 @@ class WorldSocket; class WorldObject; class WorldSession; -struct AchievementCriteriaData; struct AreaTriggerEntry; struct AuctionEntry; struct ConditionSourceInfo; diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 03e909872c9..9261a6132bd 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -31,15 +31,11 @@ class Spell; class SpellMgr; class SpellInfo; class Unit; +class WorldObject; struct Condition; struct SpellChainNode; -struct SpellTargetPosition; -struct SpellDurationEntry; struct SpellModifier; -struct SpellRangeEntry; -struct SpellRadiusEntry; -struct SpellEntry; -struct SpellCastTimesEntry; +enum WeaponAttackType : uint8; enum SpellTargetSelectionCategories { diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 4df77613332..e245c419b43 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -844,7 +844,7 @@ class TC_GAME_API World // CLI command holder to be thread safe LockedQueue<CliCommandHolder*> cliCmdQueue; - // next daily quests and random bg reset time + // scheduled reset times time_t m_NextDailyQuestReset; time_t m_NextWeeklyQuestReset; time_t m_NextMonthlyQuestReset; diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index bd78a177d57..2945c116ab7 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -29,6 +29,7 @@ EndScriptData */ #include "Language.h" #include "Map.h" #include "MotionMaster.h" +#include "ObjectMgr.h" #include "Player.h" #include "RBAC.h" #include "WaypointDefines.h" @@ -245,43 +246,45 @@ public: static bool HandleWpUnLoadCommand(ChatHandler* handler, char const* /*args*/) { - Creature* target = handler->getSelectedCreature(); WorldDatabasePreparedStatement* stmt = nullptr; if (!target) { - handler->PSendSysMessage("%s%s|r", "|cff33ffff", "You must select target."); + handler->PSendSysMessage("%s%s|r", "|cff33ffff", "You must select a target."); return true; } - uint32 guildLow = target->GetSpawnId(); + ObjectGuid::LowType guidLow = target->GetSpawnId(); + if (!guidLow) + { + handler->PSendSysMessage("%s%s|r", "|cffff33ff", "Target is not saved to DB."); + return true; + } - if (target->GetCreatureAddon()) + CreatureAddon const* addon = sObjectMgr->GetCreatureAddon(guidLow); + if (!addon || addon->path_id == 0) { - if (target->GetCreatureAddon()->path_id != 0) - { - stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE_ADDON); - stmt->setUInt32(0, guildLow); - WorldDatabase.Execute(stmt); + handler->PSendSysMessage("%s%s|r", "|cffff33ff", "Target does not have a loaded path."); + return true; + } - target->UpdateCurrentWaypointInfo(0, 0); + stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE_ADDON); + stmt->setUInt32(0, guidLow); + WorldDatabase.Execute(stmt); - stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_MOVEMENT_TYPE); - stmt->setUInt8(0, uint8(IDLE_MOTION_TYPE)); - stmt->setUInt32(1, guildLow); - WorldDatabase.Execute(stmt); + target->UpdateCurrentWaypointInfo(0, 0); - target->LoadPath(0); - target->SetDefaultMovementType(IDLE_MOTION_TYPE); - target->GetMotionMaster()->MoveTargetedHome(); - target->GetMotionMaster()->Initialize(); - target->Say("Path unloaded.", LANG_UNIVERSAL); + stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_MOVEMENT_TYPE); + stmt->setUInt8(0, uint8(IDLE_MOTION_TYPE)); + stmt->setUInt32(1, guidLow); + WorldDatabase.Execute(stmt); - return true; - } - handler->PSendSysMessage("%s%s|r", "|cffff33ff", "Target have no loaded path."); - } + target->LoadPath(0); + target->SetDefaultMovementType(IDLE_MOTION_TYPE); + target->GetMotionMaster()->MoveTargetedHome(); + target->GetMotionMaster()->Initialize(); + target->Say("Path unloaded.", LANG_UNIVERSAL); return true; } diff --git a/src/tools/vmap4_assembler/CMakeLists.txt b/src/tools/vmap4_assembler/CMakeLists.txt index 527cedfdc92..cb19b3a095a 100644 --- a/src/tools/vmap4_assembler/CMakeLists.txt +++ b/src/tools/vmap4_assembler/CMakeLists.txt @@ -14,10 +14,6 @@ list(APPEND PRIVATE_SOURCES ${sources_windows}) add_executable(vmap4assembler ${PRIVATE_SOURCES}) -if(CMAKE_SYSTEM_NAME MATCHES "Darwin") - set_target_properties(vmap4assembler PROPERTIES LINK_FLAGS "-framework Carbon") -endif() - target_link_libraries(vmap4assembler PRIVATE trinity-core-interface |