#include "KillRewarder.h"
◆ KillRewarder()
KillRewarder::KillRewarder |
( |
Player * |
killer, |
|
|
Unit * |
victim, |
|
|
bool |
isBattleGround |
|
) |
| |
65 :
66
70{
71
74
77
79}
@ TYPEID_PLAYER
Definition: ObjectGuid.h:38
TypeID GetTypeId() const
Definition: Object.h:121
bool IsPlayer() const
Definition: ObjectGuid.h:170
uint8 _maxLevel
Definition: KillRewarder.h:55
uint32 _count
Definition: KillRewarder.h:50
float _groupRate
Definition: KillRewarder.h:48
uint32 _xp
Definition: KillRewarder.h:53
uint32 _aliveSumLevel
Definition: KillRewarder.h:51
uint32 _sumLevel
Definition: KillRewarder.h:52
Player * _maxNotGrayMember
Definition: KillRewarder.h:49
Unit * _victim
Definition: KillRewarder.h:46
Player * _killer
Definition: KillRewarder.h:45
bool _isBattleGround
Definition: KillRewarder.h:56
Group * _group
Definition: KillRewarder.h:47
void _InitGroupData()
Definition: KillRewarder.cpp:81
bool _isFullXP
Definition: KillRewarder.h:54
bool _isPvP
Definition: KillRewarder.h:57
Group * GetGroup()
Definition: Player.h:2418
bool IsVehicle() const
Definition: Unit.h:1416
ObjectGuid GetCharmerOrOwnerGUID() const
Definition: Unit.h:1830
References _InitGroupData(), _isPvP, Unit::GetCharmerOrOwnerGUID(), Object::GetTypeId(), ObjectGuid::IsPlayer(), Unit::IsVehicle(), and TYPEID_PLAYER.
◆ _InitGroupData()
void KillRewarder::_InitGroupData |
( |
| ) |
|
|
private |
82{
84 {
85
87 if (
Player* member = itr->GetSource())
89 {
90 const uint8 lvl = member->GetLevel();
91 if (member->IsAlive())
92 {
93
95
97
99 {
101 }
102
103
106 {
108 }
109 }
110
112 }
113
114
116 }
117 else
119}
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
uint8 GetGrayLevel(uint8 pl_level)
Definition: Formulas.h:41
Definition: Player.h:1046
bool IsAtGroupRewardDistance(WorldObject const *pRewardSource) const
Definition: Player.cpp:12655
uint8 GetLevel() const
Definition: Unit.h:1420
GroupReference * GetFirstMember()
Definition: Group.h:242
Definition: GroupReference.h:27
GroupReference * next()
Definition: GroupReference.h:36
References _aliveSumLevel, _count, _group, _isFullXP, _killer, _maxLevel, _maxNotGrayMember, _sumLevel, _victim, Group::GetFirstMember(), Acore::XP::GetGrayLevel(), Unit::GetLevel(), Player::IsAtGroupRewardDistance(), and GroupReference::next().
Referenced by KillRewarder().
◆ _InitXP()
void KillRewarder::_InitXP |
( |
Player * |
player | ) |
|
|
private |
122{
123
124
125
126
127
130
134 if (ct->ModHealth <= 0.75f && ct->ModHealth >= 0.0f)
136}
@ TYPEID_UNIT
Definition: ObjectGuid.h:37
uint32 Gain(Player *player, Unit *unit, bool isBattleGround=false)
Definition: Formulas.cpp:71
CreatureTemplate const * GetCreatureTemplate() const
Definition: Creature.h:197
Definition: CreatureData.h:176
Creature * ToCreature()
Definition: Object.h:197
Vehicle * GetVehicle() const
Definition: Unit.h:2354
References _isBattleGround, _isPvP, _killer, _victim, _xp, Acore::XP::Gain(), Creature::GetCreatureTemplate(), Object::GetTypeId(), Unit::GetVehicle(), Object::ToCreature(), and TYPEID_UNIT.
Referenced by _RewardGroup(), and Reward().
◆ _RewardGroup()
void KillRewarder::_RewardGroup |
( |
| ) |
|
|
private |
228{
230 {
232
233
235
236
237
239 {
242 {
243
246 }
247
248
250 {
251 if (
Player* member = itr->GetSource())
252 {
254 {
256
257
258
259 }
260 }
261 }
262 }
263 }
264}
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
float xp_in_group_rate(uint32 count, bool isRaid)
Definition: Formulas.h:114
uint32 GetMapId() const
Definition: Position.h:276
void _RewardPlayer(Player *player, bool isDungeon)
Definition: KillRewarder.cpp:194
void _InitXP(Player *player)
Definition: KillRewarder.cpp:121
bool isRaidGroup() const
Definition: Group.cpp:2210
References _count, _group, _groupRate, _InitXP(), _isBattleGround, _isPvP, _killer, _maxLevel, _maxNotGrayMember, _RewardPlayer(), _victim, _xp, Group::GetFirstMember(), WorldLocation::GetMapId(), Player::IsAtGroupRewardDistance(), Group::isRaidGroup(), GroupReference::next(), sMapStore, and Acore::XP::xp_in_group_rate().
Referenced by Reward().
◆ _RewardHonor()
void KillRewarder::_RewardHonor |
( |
Player * |
player | ) |
|
|
private |
◆ _RewardKillCredit()
void KillRewarder::_RewardKillCredit |
( |
Player * |
player | ) |
|
|
private |
184{
185
188 {
189 player->
KilledMonster(target->GetCreatureTemplate(), target->GetGUID());
191 }
192}
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE
Definition: DBCEnums.h:194
Definition: Creature.h:46
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition: PlayerUpdates.cpp:2128
void KilledMonster(CreatureTemplate const *cInfo, ObjectGuid guid)
Definition: PlayerQuest.cpp:1899
Corpse * GetCorpse() const
Definition: Player.cpp:4607
References _group, _victim, ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE, Player::GetCorpse(), Unit::IsAlive(), Player::KilledMonster(), Object::ToCreature(), and Player::UpdateAchievementCriteria().
Referenced by _RewardPlayer().
◆ _RewardPlayer()
void KillRewarder::_RewardPlayer |
( |
Player * |
player, |
|
|
bool |
isDungeon |
|
) |
| |
|
private |
195{
196
198 {
199
201
204 }
205
206
208 {
211 sScriptMgr->OnRewardKillRewarder(player, isDungeon, xpRate);
212
214 {
215
217 }
219 {
220
223 }
224 }
225}
#define sScriptMgr
Definition: ScriptMgr.h:2702
void _RewardHonor(Player *player)
Definition: KillRewarder.cpp:138
void _RewardReputation(Player *player, float rate)
Definition: KillRewarder.cpp:176
void _RewardXP(Player *player, float rate)
Definition: KillRewarder.cpp:145
void _RewardKillCredit(Player *player)
Definition: KillRewarder.cpp:183
void KilledPlayerCredit(uint16 count=1)
Definition: PlayerQuest.cpp:1979
References _aliveSumLevel, _group, _groupRate, _isBattleGround, _isPvP, _RewardHonor(), _RewardKillCredit(), _RewardReputation(), _RewardXP(), _sumLevel, _victim, _xp, Unit::GetLevel(), Object::GetTypeId(), Player::KilledPlayerCredit(), sScriptMgr, and TYPEID_PLAYER.
Referenced by _RewardGroup(), and Reward().
◆ _RewardReputation()
void KillRewarder::_RewardReputation |
( |
Player * |
player, |
|
|
float |
rate |
|
) |
| |
|
private |
◆ _RewardXP()
void KillRewarder::_RewardXP |
( |
Player * |
player, |
|
|
float |
rate |
|
) |
| |
|
private |
146{
149 {
150
151
152
157 uint32(xp * rate / 2) + 1;
158 else
159 xp = 0;
160 }
161 if (xp)
162 {
163
165 for (Unit::AuraEffectList::const_iterator i = auras.begin(); i != auras.end(); ++i)
166 AddPct(xp, (*i)->GetAmount());
167
168
171
172 pet->GivePetXP(
_group ? xp / 2 : xp);
173 }
174}
T AddPct(T &base, U pct)
Definition: Util.h:67
@ SPELL_AURA_MOD_XP_PCT
Definition: SpellAuraDefines.h:263
Pet * GetPet() const
Definition: Player.cpp:8784
void GiveXP(uint32 xp, Unit *victim, float group_rate=1.0f, bool isLFGReward=false)
Definition: Player.cpp:2341
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
Definition: Unit.h:1967
std::list< AuraEffect * > AuraEffectList
Definition: Unit.h:1306
References _group, _groupRate, _isFullXP, _maxNotGrayMember, _victim, _xp, AddPct(), Unit::GetAuraEffectsByType(), Unit::GetLevel(), Player::GetPet(), Player::GiveXP(), Unit::IsAlive(), and SPELL_AURA_MOD_XP_PCT.
Referenced by _RewardPlayer().
◆ Reward()
void KillRewarder::Reward |
( |
| ) |
|
267{
268
270
272 else
273 {
274
275
277
278
279
281
284 }
285
286
288 if (victim->IsDungeonBoss())
291}
@ ENCOUNTER_CREDIT_KILL_CREATURE
Definition: Map.h:307
uint32 GetEntry() const
Definition: Object.h:109
Map * FindMap() const
Definition: Object.h:518
bool IsInMap(WorldObject const *obj) const
Definition: Object.cpp:1285
void _RewardGroup()
Definition: KillRewarder.cpp:227
References _group, _InitXP(), _isBattleGround, _killer, _RewardGroup(), _RewardPlayer(), _victim, _xp, ENCOUNTER_CREDIT_KILL_CREATURE, WorldObject::FindMap(), Object::GetEntry(), WorldObject::IsInMap(), and Object::ToCreature().
Referenced by Player::RewardPlayerAndGroupAtKill().
◆ _aliveSumLevel
uint32 KillRewarder::_aliveSumLevel |
|
private |
◆ _count
◆ _group
Group* KillRewarder::_group |
|
private |
◆ _groupRate
float KillRewarder::_groupRate |
|
private |
◆ _isBattleGround
bool KillRewarder::_isBattleGround |
|
private |
◆ _isFullXP
bool KillRewarder::_isFullXP |
|
private |
◆ _isPvP
bool KillRewarder::_isPvP |
|
private |
◆ _killer
◆ _maxLevel
uint8 KillRewarder::_maxLevel |
|
private |
◆ _maxNotGrayMember
Player* KillRewarder::_maxNotGrayMember |
|
private |
◆ _sumLevel
uint32 KillRewarder::_sumLevel |
|
private |
◆ _victim
Unit* KillRewarder::_victim |
|
private |
◆ _xp