30#include <boost/container/small_vector.hpp>
77 _killers(killers), _victim(victim),
78 _groupRate(1.0f), _maxNotGrayMember(nullptr), _count(0), _sumLevel(0), _xp(0),
79 _isFullXP(false), _maxLevel(0), _isBattleGround(isBattleGround), _isPvP(false)
94 for (
GroupReference const* itr = group->GetFirstMember(); itr !=
nullptr; itr = itr->
next())
96 if (
Player* member = itr->GetSource())
98 if (killer == member || (member->IsAtGroupRewardDistance(
_victim) && member->IsAlive()))
100 const uint8 lvl = member->GetLevel();
154 uint32(xp * rate / 2) + 1;
168 pet->GivePetXP(player->
GetGroup() ? xp / 2 : xp);
186 player->
KilledMonster(target->GetCreatureTemplate(), target->GetGUID());
207 float const rate = player->
GetGroup() ?
246 if (
Player* member = itr->GetSource())
267 if (
Group* group = killer->GetGroup())
269 if (!processedGroups.
insert(group).second)
300 if (
Scenario* scenario = victim->GetScenario())
DB2Storage< MapEntry > sMapStore("Map.db2", &MapLoadInfo::Instance)
@ SPELL_AURA_MOD_XP_FROM_CREATURE_TYPE
GroupReference * GetFirstMember()
void _InitGroupData(Player const *killer)
KillRewarder(Trinity::IteratorPair< Player ** > killers, Unit *victim, bool isBattleGround)
void _RewardGroup(Group const *group, Player const *killer)
void _RewardHonor(Player *player)
void _RewardPlayer(Player *player, bool isDungeon)
Trinity::IteratorPair< Player ** > _killers
void _RewardReputation(Player *player, float rate)
Player * _maxNotGrayMember
void _InitXP(Player *player, Player const *killer)
void _RewardXP(Player *player, float rate)
void _RewardKillCredit(Player *player)
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
void GiveXP(uint32 xp, Unit *victim, float group_rate=1.0f)
bool IsAtGroupRewardDistance(WorldObject const *pRewardSource) const
void KilledMonster(CreatureTemplate const *cInfo, ObjectGuid guid)
void KilledPlayerCredit(ObjectGuid victimGuid)
void UpdateCriteria(CriteriaType type, uint64 miscValue1=0, uint64 miscValue2=0, uint64 miscValue3=0, WorldObject *ref=nullptr)
Corpse * GetCorpse() const
void RewardReputation(Unit *victim, float rate)
bool RewardHonor(Unit *victim, uint32 groupsize, int32 honor=-1, bool pvptoken=false)
Group * GetGroup(Optional< uint8 > partyIndex)
std::pair< iterator, bool > insert(Key const &key)
constexpr end_iterator end() const
constexpr iterator begin() const
Vehicle * GetVehicle() const
ObjectGuid GetCharmerOrOwnerGUID() const override
float GetTotalAuraMultiplier(AuraType auraType) const
uint32 GetCreatureType() const
float GetTotalAuraMultiplierByMiscValue(AuraType auraType, int32 misc_value) const
uint8 GetLevelForTarget(WorldObject const *) const override
constexpr uint32 GetMapId() const
uint32 Gain(Player *player, Unit *u, bool isBattleGround=false)
float xp_in_group_rate(uint32 count, bool isRaid)
uint8 GetGrayLevel(uint8 pl_level)