aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRegigicas <regigicas@hotmail.es>2015-04-18 16:17:23 +0200
committerRegigicas <regigicas@hotmail.es>2015-04-18 16:17:23 +0200
commit83a542fc45026bda1ff7a12b0a0dcf58c3e1f376 (patch)
tree55bcd826c328837819f871598ca949ae1cc5ef62 /src
parenta80bce124a84be59283e4734016f0c10c17a1e4d (diff)
Core/Actions: Allow mounts buttons to be saved
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp5
-rw-r--r--src/server/game/DataStores/DB2Stores.h1
-rw-r--r--src/server/game/Entities/Player/Player.cpp16
-rw-r--r--src/server/game/Entities/Player/Player.h1
4 files changed, 23 insertions, 0 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index bed2cc793f4..bb8f581c1c8 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -493,6 +493,11 @@ MountEntry const* DB2Manager::GetMount(uint32 spellId) const
return nullptr;
}
+MountEntry const* DB2Manager::GetMountById(uint32 id) const
+{
+ return sMountStore.LookupEntry(id);
+}
+
std::vector<QuestPackageItemEntry const*> const* DB2Manager::GetQuestPackageItems(uint32 questPackageID) const
{
auto itr = _questPackages.find(questPackageID);
diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h
index ece71c7413e..1095127e882 100644
--- a/src/server/game/DataStores/DB2Stores.h
+++ b/src/server/game/DataStores/DB2Stores.h
@@ -98,6 +98,7 @@ public:
std::set<uint32> GetItemBonusTree(uint32 itemId, uint32 itemBonusTreeMod) const;
uint32 GetItemDisplayId(uint32 itemId, uint32 appearanceModId) const;
MountEntry const* GetMount(uint32 spellId) const;
+ MountEntry const* GetMountById(uint32 id) const;
std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItems(uint32 questPackageID) const;
std::set<uint32> GetPhasesForGroup(uint32 group) const;
std::vector<SpellPowerEntry const*> GetSpellPowers(uint32 spellId, Difficulty difficulty = DIFFICULTY_NONE, bool* hasDifficultyPowers = nullptr) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index acfa0c8be2e..95d209a8cd2 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6174,6 +6174,22 @@ bool Player::IsActionButtonDataValid(uint8 button, uint32 action, uint8 type)
return false;
}
break;
+ case ACTION_BUTTON_MOUNT:
+ {
+ auto mount = sDB2Manager.GetMountById(action);
+ if (!mount)
+ {
+ TC_LOG_ERROR("entities.player", "Mount action %u not added into button %u for player %s (%s): mount does not exist", action, button, GetName().c_str(), GetGUID().ToString().c_str());
+ return false;
+ }
+
+ if (!HasSpell(mount->SpellId))
+ {
+ TC_LOG_ERROR("entities.player", "Mount action %u not added into button %u for player %s (%s): Player does not know this mount", action, button, GetName().c_str(), GetGUID().ToString().c_str());
+ return false;
+ }
+ break;
+ }
case ACTION_BUTTON_C:
case ACTION_BUTTON_CMACRO:
case ACTION_BUTTON_MACRO:
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index aff2b06f2b0..85a44857943 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -310,6 +310,7 @@ enum ActionButtonType
ACTION_BUTTON_DROPDOWN = 0x30,
ACTION_BUTTON_MACRO = 0x40,
ACTION_BUTTON_CMACRO = ACTION_BUTTON_C | ACTION_BUTTON_MACRO,
+ ACTION_BUTTON_MOUNT = 0x60,
ACTION_BUTTON_ITEM = 0x80
};