diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-05-17 18:06:28 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-05-17 18:06:28 +0200 |
| commit | 92bfa759facd47c1e375876c1df4604091811d16 (patch) | |
| tree | 731f58769764f0f6852e62de2ae3c1adb05fa61f /src/server/game/Garrison/Garrison.cpp | |
| parent | 051e3b631db74886479c58485fad46b9a326a966 (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.cpp | 31 |
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()); } |
