aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Garrison/Garrison.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-05-17 18:06:28 +0200
committerShauren <shauren.trinity@gmail.com>2015-05-17 18:06:28 +0200
commit92bfa759facd47c1e375876c1df4604091811d16 (patch)
tree731f58769764f0f6852e62de2ae3c1adb05fa61f /src/server/game/Garrison/Garrison.cpp
parent051e3b631db74886479c58485fad46b9a326a966 (diff)
Core/Garrisons: Initial work on garrison followers
Diffstat (limited to 'src/server/game/Garrison/Garrison.cpp')
-rw-r--r--src/server/game/Garrison/Garrison.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
index 35c07e1590c..3087de37472 100644
--- a/src/server/game/Garrison/Garrison.cpp
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -344,6 +344,34 @@ void Garrison::CancelBuildingConstruction(uint32 garrPlotInstanceId)
_owner->SendDirectMessage(buildingRemoved.Write());
}
+void Garrison::AddFollower(uint32 garrFollowerId)
+{
+ WorldPackets::Garrison::GarrisonAddFollowerResult addFollowerResult;
+ GarrFollowerEntry const* followerEntry = sGarrFollowerStore.LookupEntry(garrFollowerId);
+ if (_followers.count(garrFollowerId) || !followerEntry)
+ {
+ addFollowerResult.Result = GARRISON_GENERIC_UNKNOWN_ERROR;
+ _owner->SendDirectMessage(addFollowerResult.Write());
+ return;
+ }
+
+ Follower& follower = _followers[garrFollowerId];
+ follower.PacketInfo.DbID = sGarrisonMgr.GenerateFollowerDbId();
+ follower.PacketInfo.GarrFollowerID = garrFollowerId;
+ follower.PacketInfo.Quality = followerEntry->Quality; // TODO: handle magic upgrades
+ follower.PacketInfo.FollowerLevel = followerEntry->Level;
+ follower.PacketInfo.ItemLevelWeapon = followerEntry->ItemLevelWeapon;
+ follower.PacketInfo.ItemLevelArmor = followerEntry->ItemLevelArmor;
+ follower.PacketInfo.Xp = 0;
+ follower.PacketInfo.CurrentBuildingID = 0;
+ follower.PacketInfo.CurrentMissionID = 0;
+ follower.PacketInfo.AbilityID = sGarrisonMgr.RollFollowerAbilities(followerEntry, follower.PacketInfo.Quality, GetFaction(), true);
+ follower.PacketInfo.FollowerStatus = 0;
+
+ addFollowerResult.Follower = follower.PacketInfo;
+ _owner->SendDirectMessage(addFollowerResult.Write());
+}
+
void Garrison::SendInfo()
{
WorldPackets::Garrison::GetGarrisonInfoResult garrisonInfo;
@@ -359,6 +387,9 @@ void Garrison::SendInfo()
garrisonInfo.Buildings.push_back(plot.BuildingInfo.PacketInfo.get_ptr());
}
+ for (auto const& p : _followers)
+ garrisonInfo.Followers.push_back(&p.second.PacketInfo);
+
_owner->SendDirectMessage(garrisonInfo.Write());
}