mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-27 23:56:25 +00:00
refactor(Core/Object): getLevel() -> GetLevel() (#14122)
* refactor(Core/Object): getLevel() -> GetLevel() * fix build and sneak some doxygen in * codeSTLE * codestyle
This commit is contained in:
@@ -87,7 +87,7 @@ void KillRewarder::_InitGroupData()
|
||||
if (Player* member = itr->GetSource())
|
||||
if ((_killer == member || member->IsAtGroupRewardDistance(_victim)))
|
||||
{
|
||||
const uint8 lvl = member->getLevel();
|
||||
const uint8 lvl = member->GetLevel();
|
||||
if (member->IsAlive())
|
||||
{
|
||||
// 2.1. _count - number of alive group members within reward distance;
|
||||
@@ -102,7 +102,7 @@ void KillRewarder::_InitGroupData()
|
||||
// 2.4. _maxNotGrayMember - maximum level of alive group member within reward distance,
|
||||
// for whom victim is not gray;
|
||||
uint32 grayLevel = Acore::XP::GetGrayLevel(lvl);
|
||||
if (_victim->getLevel() > grayLevel && (!_maxNotGrayMember || _maxNotGrayMember->getLevel() < lvl))
|
||||
if (_victim->GetLevel() > grayLevel && (!_maxNotGrayMember || _maxNotGrayMember->GetLevel() < lvl))
|
||||
{
|
||||
_maxNotGrayMember = member;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ void KillRewarder::_InitGroupData()
|
||||
}
|
||||
// 2.6. _isFullXP - flag identifying that for all group members victim is not gray,
|
||||
// so 100% XP will be rewarded (50% otherwise).
|
||||
_isFullXP = _maxNotGrayMember && (_maxLevel == _maxNotGrayMember->getLevel());
|
||||
_isFullXP = _maxNotGrayMember && (_maxLevel == _maxNotGrayMember->GetLevel());
|
||||
}
|
||||
else
|
||||
_count = 1;
|
||||
@@ -151,7 +151,7 @@ void KillRewarder::_RewardXP(Player* player, float rate)
|
||||
// * set to 0 if player's level is more than maximum level of not gray member;
|
||||
// * cut XP in half if _isFullXP is false.
|
||||
if (_maxNotGrayMember && player->IsAlive() &&
|
||||
_maxNotGrayMember->getLevel() >= player->getLevel())
|
||||
_maxNotGrayMember->GetLevel() >= player->GetLevel())
|
||||
xp = _isFullXP ?
|
||||
uint32(xp * rate) : // Reward FULL XP if all group members are not gray.
|
||||
uint32(xp * rate / 2) + 1; // Reward only HALF of XP if some of group members are gray.
|
||||
@@ -206,8 +206,8 @@ void KillRewarder::_RewardPlayer(Player* player, bool isDungeon)
|
||||
// Give reputation and kill credit only in PvE.
|
||||
if (!_isPvP || _isBattleGround)
|
||||
{
|
||||
float xpRate = _group ? _groupRate * float(player->getLevel()) / _aliveSumLevel : /*Personal rate is 100%.*/ 1.0f; // Group rate depends on the sum of levels.
|
||||
float reputationRate = _group ? _groupRate * float(player->getLevel()) / _sumLevel : /*Personal rate is 100%.*/ 1.0f; // Group rate depends on the sum of levels.
|
||||
float xpRate = _group ? _groupRate * float(player->GetLevel()) / _aliveSumLevel : /*Personal rate is 100%.*/ 1.0f; // Group rate depends on the sum of levels.
|
||||
float reputationRate = _group ? _groupRate * float(player->GetLevel()) / _sumLevel : /*Personal rate is 100%.*/ 1.0f; // Group rate depends on the sum of levels.
|
||||
sScriptMgr->OnRewardKillRewarder(player, isDungeon, xpRate); // Personal rate is 100%.
|
||||
|
||||
if (_xp)
|
||||
|
||||
@@ -854,7 +854,7 @@ void Player::HandleDrowning(uint32 time_diff)
|
||||
m_MirrorTimer[BREATH_TIMER] += 1 * IN_MILLISECONDS;
|
||||
// Calculate and deal damage
|
||||
// TODO: Check this formula
|
||||
uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel() - 1);
|
||||
uint32 damage = GetMaxHealth() / 5 + urand(0, GetLevel() - 1);
|
||||
EnvironmentalDamage(DAMAGE_DROWNING, damage);
|
||||
}
|
||||
else if (!(m_MirrorTimerFlagsLast & UNDERWATER_INWATER)) // Update time in client if need
|
||||
@@ -890,7 +890,7 @@ void Player::HandleDrowning(uint32 time_diff)
|
||||
m_MirrorTimer[FATIGUE_TIMER] += 1 * IN_MILLISECONDS;
|
||||
if (IsAlive()) // Calculate and deal damage
|
||||
{
|
||||
uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel() - 1);
|
||||
uint32 damage = GetMaxHealth() / 5 + urand(0, GetLevel() - 1);
|
||||
EnvironmentalDamage(DAMAGE_EXHAUSTED, damage);
|
||||
}
|
||||
else if (HasPlayerFlag(PLAYER_FLAGS_GHOST)) // Teleport ghost to graveyard
|
||||
@@ -1850,8 +1850,8 @@ void Player::Regenerate(Powers power)
|
||||
bool recentCast = IsUnderLastManaUseEffect();
|
||||
float ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA);
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_LOW_LEVEL_REGEN_BOOST) && getLevel() < 15)
|
||||
ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA) * (2.066f - (getLevel() * 0.066f));
|
||||
if (sWorld->getBoolConfig(CONFIG_LOW_LEVEL_REGEN_BOOST) && GetLevel() < 15)
|
||||
ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA) * (2.066f - (GetLevel() * 0.066f));
|
||||
|
||||
if (recentCast) // Trinity Updates Mana in intervals of 2s, which is correct
|
||||
addvalue += GetFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER) * ManaIncreaseRate * 0.001f * m_regenTimer;
|
||||
@@ -1960,8 +1960,8 @@ void Player::RegenerateHealth()
|
||||
|
||||
float HealthIncreaseRate = sWorld->getRate(RATE_HEALTH);
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_LOW_LEVEL_REGEN_BOOST) && getLevel() < 15)
|
||||
HealthIncreaseRate = sWorld->getRate(RATE_HEALTH) * (2.066f - (getLevel() * 0.066f));
|
||||
if (sWorld->getBoolConfig(CONFIG_LOW_LEVEL_REGEN_BOOST) && GetLevel() < 15)
|
||||
HealthIncreaseRate = sWorld->getRate(RATE_HEALTH) * (2.066f - (GetLevel() * 0.066f));
|
||||
|
||||
float addvalue = 0.0f;
|
||||
|
||||
@@ -2354,7 +2354,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate, bool isLFGReward)
|
||||
return;
|
||||
}
|
||||
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
|
||||
sScriptMgr->OnGivePlayerXP(this, xp, victim);
|
||||
|
||||
@@ -2400,7 +2400,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate, bool isLFGReward)
|
||||
if (level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
GiveLevel(level + 1);
|
||||
|
||||
level = getLevel();
|
||||
level = GetLevel();
|
||||
nextLvlXP = GetUInt32Value(PLAYER_NEXT_LEVEL_XP);
|
||||
}
|
||||
|
||||
@@ -2411,7 +2411,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate, bool isLFGReward)
|
||||
// Current player experience not update (must be update by caller)
|
||||
void Player::GiveLevel(uint8 level)
|
||||
{
|
||||
uint8 oldLevel = getLevel();
|
||||
uint8 oldLevel = GetLevel();
|
||||
if (level == oldLevel)
|
||||
return;
|
||||
|
||||
@@ -2532,15 +2532,15 @@ void Player::InitStatsForLevel(bool reapplyMods)
|
||||
_RemoveAllStatBonuses();
|
||||
|
||||
PlayerClassLevelInfo classInfo;
|
||||
sObjectMgr->GetPlayerClassLevelInfo(getClass(), getLevel(), &classInfo);
|
||||
sObjectMgr->GetPlayerClassLevelInfo(getClass(), GetLevel(), &classInfo);
|
||||
|
||||
PlayerLevelInfo info;
|
||||
sObjectMgr->GetPlayerLevelInfo(getRace(true), getClass(), getLevel(), &info);
|
||||
sObjectMgr->GetPlayerLevelInfo(getRace(true), getClass(), GetLevel(), &info);
|
||||
|
||||
uint32 maxPlayerLevel = sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL);
|
||||
sScriptMgr->OnSetMaxLevel(this, maxPlayerLevel);
|
||||
SetUInt32Value(PLAYER_FIELD_MAX_LEVEL, maxPlayerLevel);
|
||||
SetUInt32Value(PLAYER_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(getLevel()));
|
||||
SetUInt32Value(PLAYER_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(GetLevel()));
|
||||
|
||||
// reset before any aura state sources (health set/aura apply)
|
||||
SetUInt32Value(UNIT_FIELD_AURASTATE, 0);
|
||||
@@ -3853,7 +3853,7 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell
|
||||
return TRAINER_SPELL_RED;
|
||||
|
||||
// check level requirement
|
||||
if (getLevel() < trainer_spell->reqLevel)
|
||||
if (GetLevel() < trainer_spell->reqLevel)
|
||||
return TRAINER_SPELL_RED;
|
||||
|
||||
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
|
||||
@@ -4425,15 +4425,15 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness)
|
||||
//Characters level 20 and up suffer from ten minutes of sickness.
|
||||
int32 startLevel = sWorld->getIntConfig(CONFIG_DEATH_SICKNESS_LEVEL);
|
||||
|
||||
if (int32(getLevel()) >= startLevel)
|
||||
if (int32(GetLevel()) >= startLevel)
|
||||
{
|
||||
// set resurrection sickness
|
||||
CastSpell(this, 15007, true);
|
||||
|
||||
// not full duration
|
||||
if (int32(getLevel()) < startLevel + 9)
|
||||
if (int32(GetLevel()) < startLevel + 9)
|
||||
{
|
||||
int32 delta = (int32(getLevel()) - startLevel + 1) * MINUTE;
|
||||
int32 delta = (int32(GetLevel()) - startLevel + 1) * MINUTE;
|
||||
|
||||
if (Aura* aur = GetAura(15007, GetGUID()))
|
||||
{
|
||||
@@ -4990,7 +4990,7 @@ uint32 Player::GetShieldBlockValue() const
|
||||
|
||||
float Player::GetMeleeCritFromAgility()
|
||||
{
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
uint32 pclass = getClass();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
@@ -5038,7 +5038,7 @@ void Player::GetDodgeFromAgility(float& diminishing, float& nondiminishing)
|
||||
2.00f / 1.15f // Druid
|
||||
};
|
||||
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
uint32 pclass = getClass();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
@@ -5060,7 +5060,7 @@ void Player::GetDodgeFromAgility(float& diminishing, float& nondiminishing)
|
||||
|
||||
float Player::GetSpellCritFromIntellect()
|
||||
{
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
uint32 pclass = getClass();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
@@ -5077,7 +5077,7 @@ float Player::GetSpellCritFromIntellect()
|
||||
|
||||
float Player::GetRatingMultiplier(CombatRating cr) const
|
||||
{
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
level = GT_MAX_LEVEL;
|
||||
@@ -5112,7 +5112,7 @@ float Player::GetExpertiseDodgeOrParryReduction(WeaponAttackType attType) const
|
||||
|
||||
float Player::OCTRegenHPPerSpirit()
|
||||
{
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
uint32 pclass = getClass();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
@@ -5135,7 +5135,7 @@ float Player::OCTRegenHPPerSpirit()
|
||||
|
||||
float Player::OCTRegenMPPerSpirit()
|
||||
{
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
uint32 pclass = getClass();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
@@ -5687,17 +5687,17 @@ void Player::CheckAreaExploreAndOutdoor()
|
||||
|
||||
if (areaEntry->area_level > 0)
|
||||
{
|
||||
if (getLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
if (GetLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
SendExplorationExperience(areaId, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
int32 diff = int32(getLevel()) - areaEntry->area_level;
|
||||
int32 diff = int32(GetLevel()) - areaEntry->area_level;
|
||||
uint32 XP = 0;
|
||||
if (diff < -5)
|
||||
{
|
||||
XP = uint32(sObjectMgr->GetBaseXP(getLevel() + 5) * sWorld->getRate(RATE_XP_EXPLORE));
|
||||
XP = uint32(sObjectMgr->GetBaseXP(GetLevel() + 5) * sWorld->getRate(RATE_XP_EXPLORE));
|
||||
}
|
||||
else if (diff > 5)
|
||||
{
|
||||
@@ -5792,7 +5792,7 @@ float Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr
|
||||
break;
|
||||
}
|
||||
|
||||
if (rate != 1.0f && creatureOrQuestLevel <= Acore::XP::GetGrayLevel(getLevel()))
|
||||
if (rate != 1.0f && creatureOrQuestLevel <= Acore::XP::GetGrayLevel(GetLevel()))
|
||||
percent *= rate;
|
||||
|
||||
if (percent <= 0.0f)
|
||||
@@ -5869,7 +5869,7 @@ void Player::RewardReputation(Unit* victim, float rate)
|
||||
|
||||
if (Rep->RepFaction1 && (!Rep->TeamDependent || teamId == TEAM_ALLIANCE))
|
||||
{
|
||||
float donerep1 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), static_cast<float>(Rep->RepValue1), ChampioningFaction ? ChampioningFaction : Rep->RepFaction1);
|
||||
float donerep1 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->GetLevel(), static_cast<float>(Rep->RepValue1), ChampioningFaction ? ChampioningFaction : Rep->RepFaction1);
|
||||
donerep1 *= rate;
|
||||
|
||||
FactionEntry const* factionEntry1 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rep->RepFaction1);
|
||||
@@ -5881,7 +5881,7 @@ void Player::RewardReputation(Unit* victim, float rate)
|
||||
|
||||
if (Rep->RepFaction2 && (!Rep->TeamDependent || teamId == TEAM_HORDE))
|
||||
{
|
||||
float donerep2 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), static_cast<float>(Rep->RepValue2), ChampioningFaction ? ChampioningFaction : Rep->RepFaction2);
|
||||
float donerep2 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->GetLevel(), static_cast<float>(Rep->RepValue2), ChampioningFaction ? ChampioningFaction : Rep->RepFaction2);
|
||||
donerep2 *= rate;
|
||||
|
||||
FactionEntry const* factionEntry2 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rep->RepFaction2);
|
||||
@@ -6011,9 +6011,9 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar
|
||||
if (GetTeamId() == victim->GetTeamId() && !sWorld->IsFFAPvPRealm())
|
||||
return false;
|
||||
|
||||
uint8 k_level = getLevel();
|
||||
uint8 k_level = GetLevel();
|
||||
uint8 k_grey = Acore::XP::GetGrayLevel(k_level);
|
||||
uint8 v_level = victim->getLevel();
|
||||
uint8 v_level = victim->GetLevel();
|
||||
|
||||
if (v_level <= k_grey)
|
||||
return false;
|
||||
@@ -6103,7 +6103,7 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar
|
||||
bg->UpdatePlayerScore(this, SCORE_BONUS_HONOR, honor, false); //false: prevent looping
|
||||
// Xinef: Only for BG activities
|
||||
if (!uVictim)
|
||||
GiveXP(uint32(honor * (3 + getLevel() * 0.30f)), nullptr);
|
||||
GiveXP(uint32(honor * (3 + GetLevel() * 0.30f)), nullptr);
|
||||
}
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_PVP_TOKEN_ENABLE))
|
||||
@@ -6492,7 +6492,7 @@ void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply
|
||||
return;
|
||||
|
||||
// req. check at equip, but allow use for extended range if range limit max level, set proper level
|
||||
uint32 ssd_level = getLevel();
|
||||
uint32 ssd_level = GetLevel();
|
||||
uint32 CustomScalingStatValue = 0;
|
||||
|
||||
sScriptMgr->OnCustomScalingStatValueBefore(this, proto, slot, apply, CustomScalingStatValue);
|
||||
@@ -6684,7 +6684,7 @@ void Player::_ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply
|
||||
case ITEM_MOD_BLOCK_VALUE:
|
||||
HandleBaseModValue(SHIELD_BLOCK_VALUE, FLAT_MOD, float(val), apply);
|
||||
break;
|
||||
// deprecated item mods
|
||||
/// @deprecated item mods
|
||||
case ITEM_MOD_SPELL_HEALING_DONE:
|
||||
case ITEM_MOD_SPELL_DAMAGE_DONE:
|
||||
break;
|
||||
@@ -6790,7 +6790,7 @@ void Player::_ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, ScalingSt
|
||||
ScalingStatDistributionEntry const* ssd = proto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(proto->ScalingStatDistribution) : nullptr;
|
||||
|
||||
// req. check at equip, but allow use for extended range if range limit max level, set proper level
|
||||
uint32 ssd_level = getLevel();
|
||||
uint32 ssd_level = GetLevel();
|
||||
|
||||
if (ssd && ssd_level > ssd->MaxLevel)
|
||||
ssd_level = ssd->MaxLevel;
|
||||
@@ -7632,7 +7632,7 @@ void Player::RemovedInsignia(Player* looterPlr)
|
||||
|
||||
// We store the level of our player in the gold field
|
||||
// We retrieve this information at Player::SendLoot()
|
||||
bones->loot.gold = getLevel();
|
||||
bones->loot.gold = GetLevel();
|
||||
bones->lootRecipient = looterPlr;
|
||||
looterPlr->SendLoot(bones->GetGUID(), LOOT_INSIGNIA);
|
||||
}
|
||||
@@ -7883,8 +7883,8 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type)
|
||||
loot->FillLoot(lootid, LootTemplates_Pickpocketing, this, true);
|
||||
|
||||
// Generate extra money for pick pocket loot
|
||||
const uint32 a = urand(0, creature->getLevel() / 2);
|
||||
const uint32 b = urand(0, getLevel() / 2);
|
||||
const uint32 a = urand(0, creature->GetLevel() / 2);
|
||||
const uint32 b = urand(0, GetLevel() / 2);
|
||||
loot->gold = uint32(10 * (a + b) * sWorld->getRate(RATE_DROP_MONEY));
|
||||
permission = OWNER_PERMISSION;
|
||||
}
|
||||
@@ -8861,7 +8861,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
|
||||
pet->setPowerType(POWER_MANA);
|
||||
pet->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
|
||||
pet->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||
pet->InitStatsForLevel(getLevel());
|
||||
pet->InitStatsForLevel(GetLevel());
|
||||
|
||||
SetMinion(pet, true);
|
||||
|
||||
@@ -9110,7 +9110,7 @@ Pet* Player::CreatePet(Creature* creatureTarget, uint32 spellID /*= 0*/)
|
||||
creatureTarget->DespawnOrUnsummon();
|
||||
|
||||
// calculate proper level
|
||||
uint8 level = (creatureTarget->getLevel() < (getLevel() - 5)) ? (getLevel() - 5) : getLevel();
|
||||
uint8 level = (creatureTarget->GetLevel() < (GetLevel() - 5)) ? (GetLevel() - 5) : GetLevel();
|
||||
|
||||
// prepare visual effect for levelup
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, level - 1);
|
||||
@@ -9154,13 +9154,13 @@ Pet* Player::CreatePet(uint32 creatureEntry, uint32 spellID /*= 0*/)
|
||||
}
|
||||
|
||||
// prepare visual effect for levelup
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, getLevel() - 1);
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, GetLevel() - 1);
|
||||
|
||||
// add to world
|
||||
pet->GetMap()->AddToMap(pet->ToCreature());
|
||||
|
||||
// visual effect for levelup
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, getLevel());
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, GetLevel());
|
||||
|
||||
// caster have pet now
|
||||
SetMinion(pet, true);
|
||||
@@ -9939,7 +9939,7 @@ void Player::LeaveAllArenaTeams(ObjectGuid guid)
|
||||
void Player::SetRestBonus(float rest_bonus_new)
|
||||
{
|
||||
// Prevent resting on max level
|
||||
if (getLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
if (GetLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
rest_bonus_new = 0;
|
||||
|
||||
if (rest_bonus_new < 0)
|
||||
@@ -11652,7 +11652,7 @@ void Player::LearnDefaultSkill(uint32 skillId, uint16 rank)
|
||||
}
|
||||
else if (getClass() == CLASS_DEATH_KNIGHT)
|
||||
{
|
||||
skillValue = std::min(std::max<uint16>({ 1, uint16((getLevel() - 1) * 5) }), maxValue);
|
||||
skillValue = std::min(std::max<uint16>({ 1, uint16((GetLevel() - 1) * 5) }), maxValue);
|
||||
}
|
||||
else if (skillId == SKILL_FIST_WEAPONS)
|
||||
{
|
||||
@@ -11685,7 +11685,7 @@ void Player::LearnDefaultSkill(uint32 skillId, uint16 rank)
|
||||
}
|
||||
else if (getClass() == CLASS_DEATH_KNIGHT)
|
||||
{
|
||||
skillValue = std::min(std::max<uint16>({ uint16(1), uint16((getLevel() - 1) * 5) }), maxValue);
|
||||
skillValue = std::min(std::max<uint16>({ uint16(1), uint16((GetLevel() - 1) * 5) }), maxValue);
|
||||
}
|
||||
|
||||
SetSkill(skillId, rank, skillValue, maxValue);
|
||||
@@ -12081,7 +12081,7 @@ bool Player::GetBGAccessByLevel(BattlegroundTypeId bgTypeId) const
|
||||
return false;
|
||||
|
||||
// limit check leel to dbc compatible level range
|
||||
uint32 level = getLevel();
|
||||
uint32 level = GetLevel();
|
||||
if (level > DEFAULT_MAX_LEVEL)
|
||||
level = DEFAULT_MAX_LEVEL;
|
||||
|
||||
@@ -12418,8 +12418,8 @@ uint32 Player::GetResurrectionSpellId()
|
||||
// Used in triggers for check "Only to targets that grant experience or honor" req
|
||||
bool Player::isHonorOrXPTarget(Unit* victim) const
|
||||
{
|
||||
uint8 v_level = victim->getLevel();
|
||||
uint8 k_grey = Acore::XP::GetGrayLevel(getLevel());
|
||||
uint8 v_level = victim->GetLevel();
|
||||
uint8 k_grey = Acore::XP::GetGrayLevel(GetLevel());
|
||||
|
||||
// Victim level less gray level
|
||||
if (v_level <= k_grey)
|
||||
@@ -12438,7 +12438,7 @@ bool Player::isHonorOrXPTarget(Unit* victim) const
|
||||
bool Player::GetsRecruitAFriendBonus(bool forXP)
|
||||
{
|
||||
bool recruitAFriend = false;
|
||||
if (getLevel() <= sWorld->getIntConfig(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL) || !forXP)
|
||||
if (GetLevel() <= sWorld->getIntConfig(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL) || !forXP)
|
||||
{
|
||||
if (Group* group = this->GetGroup())
|
||||
{
|
||||
@@ -12454,12 +12454,12 @@ bool Player::GetsRecruitAFriendBonus(bool forXP)
|
||||
if (forXP)
|
||||
{
|
||||
// level must be allowed to get RaF bonus
|
||||
if (player->getLevel() > sWorld->getIntConfig(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL))
|
||||
if (player->GetLevel() > sWorld->getIntConfig(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL))
|
||||
continue;
|
||||
|
||||
// level difference must be small enough to get RaF bonus, UNLESS we are lower level
|
||||
if (player->getLevel() < getLevel())
|
||||
if (uint8(getLevel() - player->getLevel()) > sWorld->getIntConfig(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE))
|
||||
if (player->GetLevel() < GetLevel())
|
||||
if (uint8(GetLevel() - player->GetLevel()) > sWorld->getIntConfig(CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL_DIFFERENCE))
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -12978,8 +12978,11 @@ bool Player::CanUseBattlegroundObject(GameObject* gameobject) const
|
||||
return false;
|
||||
}
|
||||
|
||||
// BUG: sometimes when player clicks on flag in AB - client won't send gameobject_use, only gameobject_report_use packet
|
||||
// Note: Mount, stealth and invisibility will be removed when used
|
||||
/**
|
||||
* @bug
|
||||
* sometimes when player clicks on flag in AB - client won't send gameobject_use, only gameobject_report_use packet
|
||||
* Note: Mount, stealth and invisibility will be removed when used
|
||||
*/
|
||||
return (!isTotalImmune() && // Damage immune
|
||||
!HasAura(SPELL_RECENTLY_DROPPED_FLAG) && // Still has recently held flag debuff
|
||||
IsAlive()); // Alive
|
||||
@@ -12995,7 +12998,7 @@ bool Player::CanCaptureTowerPoint() const
|
||||
|
||||
uint32 Player::GetBarberShopCost(uint8 newhairstyle, uint8 newhaircolor, uint8 newfacialhair, BarberShopStyleEntry const* newSkin)
|
||||
{
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
|
||||
if (level > GT_MAX_LEVEL)
|
||||
level = GT_MAX_LEVEL; // max level in this dbc
|
||||
@@ -13037,7 +13040,7 @@ void Player::InitGlyphsForLevel()
|
||||
if (gs->Order)
|
||||
SetGlyphSlot(gs->Order - 1, gs->Id);
|
||||
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
uint32 value = 0;
|
||||
|
||||
// 0x3F = 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 for 80 level
|
||||
@@ -13360,7 +13363,7 @@ LootItem* Player::StoreLootItem(uint8 lootSlot, Loot* loot, InventoryResult& msg
|
||||
|
||||
uint32 Player::CalculateTalentsPoints() const
|
||||
{
|
||||
uint32 base_talent = getLevel() < 10 ? 0 : getLevel() - 9;
|
||||
uint32 base_talent = GetLevel() < 10 ? 0 : GetLevel() - 9;
|
||||
|
||||
uint32 talentPointsForLevel = 0;
|
||||
if (getClass() != CLASS_DEATH_KNIGHT || GetMapId() != 609)
|
||||
@@ -13369,7 +13372,7 @@ uint32 Player::CalculateTalentsPoints() const
|
||||
}
|
||||
else
|
||||
{
|
||||
talentPointsForLevel = getLevel() < 56 ? 0 : getLevel() - 55;
|
||||
talentPointsForLevel = GetLevel() < 56 ? 0 : GetLevel() - 55;
|
||||
talentPointsForLevel += m_questRewardTalentCount;
|
||||
|
||||
if (talentPointsForLevel > base_talent)
|
||||
@@ -14433,7 +14436,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans)
|
||||
stmt->SetData(index++, getRace(true));
|
||||
stmt->SetData(index++, getClass());
|
||||
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
|
||||
stmt->SetData(index++, getLevel());
|
||||
stmt->SetData(index++, GetLevel());
|
||||
stmt->SetData(index++, GetUInt32Value(PLAYER_XP));
|
||||
stmt->SetData(index++, GetMoney());
|
||||
stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 0));
|
||||
@@ -14550,7 +14553,7 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans)
|
||||
stmt->SetData(index++, getRace(true));
|
||||
stmt->SetData(index++, getClass());
|
||||
stmt->SetData(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
|
||||
stmt->SetData(index++, getLevel());
|
||||
stmt->SetData(index++, GetLevel());
|
||||
stmt->SetData(index++, GetUInt32Value(PLAYER_XP));
|
||||
stmt->SetData(index++, GetMoney());
|
||||
stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 0));
|
||||
@@ -15459,7 +15462,7 @@ float Player::GetAverageItemLevel()
|
||||
{
|
||||
float sum = 0;
|
||||
uint32 count = 0;
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
|
||||
for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i)
|
||||
{
|
||||
@@ -15480,7 +15483,7 @@ float Player::GetAverageItemLevelForDF()
|
||||
{
|
||||
float sum = 0;
|
||||
uint32 count = 0;
|
||||
uint8 level = getLevel();
|
||||
uint8 level = GetLevel();
|
||||
|
||||
for (int i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i)
|
||||
{
|
||||
|
||||
@@ -1121,7 +1121,7 @@ public:
|
||||
PlayerSocial* GetSocial() { return m_social; }
|
||||
|
||||
PlayerTaxi m_taxi;
|
||||
void InitTaxiNodesForLevel() { m_taxi.InitTaxiNodesForLevel(getRace(), getClass(), getLevel()); }
|
||||
void InitTaxiNodesForLevel() { m_taxi.InitTaxiNodesForLevel(getRace(), getClass(), GetLevel()); }
|
||||
bool ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc = nullptr, uint32 spellid = 1);
|
||||
bool ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid = 1);
|
||||
void CleanupAfterTaxiFlight();
|
||||
@@ -1388,7 +1388,7 @@ public:
|
||||
/*** QUEST SYSTEM ***/
|
||||
/*********************************************************/
|
||||
|
||||
int32 GetQuestLevel(Quest const* quest) const { return quest && (quest->GetQuestLevel() > 0) ? quest->GetQuestLevel() : getLevel(); }
|
||||
int32 GetQuestLevel(Quest const* quest) const { return quest && (quest->GetQuestLevel() > 0) ? quest->GetQuestLevel() : GetLevel(); }
|
||||
|
||||
void PrepareQuestMenu(ObjectGuid guid);
|
||||
void SendPreparedQuest(ObjectGuid guid);
|
||||
|
||||
@@ -89,7 +89,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
|
||||
}
|
||||
case GOSSIP_OPTION_LEARNDUALSPEC:
|
||||
case GOSSIP_OPTION_DUALSPEC_INFO:
|
||||
if (!(GetSpecsCount() == 1 && creature->isCanTrainingAndResetTalentsOf(this) && !(getLevel() < sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))))
|
||||
if (!(GetSpecsCount() == 1 && creature->isCanTrainingAndResetTalentsOf(this) && !(GetLevel() < sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))))
|
||||
canTalk = false;
|
||||
break;
|
||||
case GOSSIP_OPTION_UNLEARNTALENTS:
|
||||
@@ -332,7 +332,7 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men
|
||||
GetSession()->SendTrainerList(guid);
|
||||
break;
|
||||
case GOSSIP_OPTION_LEARNDUALSPEC:
|
||||
if (GetSpecsCount() == 1 && getLevel() >= sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))
|
||||
if (GetSpecsCount() == 1 && GetLevel() >= sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))
|
||||
{
|
||||
// Cast spells that teach dual spec
|
||||
// Both are also ImplicitTarget self and must be cast by player
|
||||
|
||||
@@ -241,7 +241,7 @@ bool Player::CanSeeStartQuest(Quest const* quest)
|
||||
SatisfyQuestPrevChain(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
|
||||
SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false))
|
||||
{
|
||||
return getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF) >= quest->GetMinLevel();
|
||||
return GetLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF) >= quest->GetMinLevel();
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -735,7 +735,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
bool rewarded = IsQuestRewarded(quest_id) && !quest->IsDFQuest();
|
||||
|
||||
// Not give XP in case already completed once repeatable quest
|
||||
uint32 XP = rewarded ? 0 : uint32(quest->XPValue(getLevel()) * GetQuestRate(quest->IsDFQuest()));
|
||||
uint32 XP = rewarded ? 0 : uint32(quest->XPValue(GetLevel()) * GetQuestRate(quest->IsDFQuest()));
|
||||
|
||||
// handle SPELL_AURA_MOD_XP_QUEST_PCT auras
|
||||
Unit::AuraEffectList const& ModXPPctAuras = GetAuraEffectsByType(SPELL_AURA_MOD_XP_QUEST_PCT);
|
||||
@@ -744,7 +744,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
|
||||
sScriptMgr->OnQuestComputeXP(this, quest, XP);
|
||||
int32 moneyRew = 0;
|
||||
if (getLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) || sScriptMgr->ShouldBeRewardedWithMoneyInsteadOfExp(this))
|
||||
if (GetLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) || sScriptMgr->ShouldBeRewardedWithMoneyInsteadOfExp(this))
|
||||
{
|
||||
moneyRew = quest->GetRewMoneyMaxLevel();
|
||||
}
|
||||
@@ -754,7 +754,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
}
|
||||
|
||||
// Give player extra money if GetRewOrReqMoney > 0 and get ReqMoney if negative
|
||||
if (int32 rewOrReqMoney = quest->GetRewOrReqMoney(getLevel()))
|
||||
if (int32 rewOrReqMoney = quest->GetRewOrReqMoney(GetLevel()))
|
||||
{
|
||||
moneyRew += rewOrReqMoney;
|
||||
}
|
||||
@@ -768,7 +768,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
}
|
||||
|
||||
// honor reward
|
||||
if (uint32 honor = quest->CalculateHonorGain(getLevel()))
|
||||
if (uint32 honor = quest->CalculateHonorGain(GetLevel()))
|
||||
RewardHonor(nullptr, 0, honor);
|
||||
|
||||
// title reward
|
||||
@@ -957,13 +957,13 @@ bool Player::SatisfyQuestSkill(Quest const* qInfo, bool msg) const
|
||||
|
||||
bool Player::SatisfyQuestLevel(Quest const* qInfo, bool msg) const
|
||||
{
|
||||
if (getLevel() < qInfo->GetMinLevel())
|
||||
if (GetLevel() < qInfo->GetMinLevel())
|
||||
{
|
||||
if (msg)
|
||||
SendCanTakeQuestResponse(INVALIDREASON_QUEST_FAILED_LOW_LEVEL);
|
||||
return false;
|
||||
}
|
||||
else if (qInfo->GetMaxLevel() > 0 && getLevel() > qInfo->GetMaxLevel())
|
||||
else if (qInfo->GetMaxLevel() > 0 && GetLevel() > qInfo->GetMaxLevel())
|
||||
{
|
||||
if (msg)
|
||||
SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ); // There doesn't seem to be a specific response for too high player level
|
||||
@@ -1656,7 +1656,7 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object* questgiver)
|
||||
{
|
||||
if (SatisfyQuestLevel(quest, false))
|
||||
{
|
||||
bool isNotLowLevelQuest = getLevel() <= (GetQuestLevel(quest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF));
|
||||
bool isNotLowLevelQuest = GetLevel() <= (GetQuestLevel(quest) + sWorld->getIntConfig(CONFIG_QUEST_LOW_LEVEL_HIDE_DIFF));
|
||||
|
||||
if (quest->IsRepeatable())
|
||||
{
|
||||
@@ -2339,15 +2339,15 @@ void Player::SendQuestReward(Quest const* quest, uint32 XP)
|
||||
WorldPacket data(SMSG_QUESTGIVER_QUEST_COMPLETE, (4 + 4 + 4 + 4 + 4));
|
||||
data << uint32(questid);
|
||||
|
||||
if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
if (GetLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
data << uint32(XP);
|
||||
data << uint32(quest->GetRewOrReqMoney(getLevel()));
|
||||
data << uint32(quest->GetRewOrReqMoney(GetLevel()));
|
||||
}
|
||||
else
|
||||
{
|
||||
data << uint32(0);
|
||||
data << uint32(quest->GetRewOrReqMoney(getLevel()) + quest->GetRewMoneyMaxLevel());
|
||||
data << uint32(quest->GetRewOrReqMoney(GetLevel()) + quest->GetRewMoneyMaxLevel());
|
||||
}
|
||||
|
||||
data << uint32(10 * quest->CalculateHonorGain(GetQuestLevel(quest)));
|
||||
|
||||
@@ -1890,7 +1890,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16& dest, Item* pItem, bool
|
||||
|
||||
ScalingStatDistributionEntry const* ssd = pProto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(pProto->ScalingStatDistribution) : 0;
|
||||
// check allowed level (extend range to upper values if MaxLevel more or equal max player level, this let GM set high level with 1...max range items)
|
||||
if (ssd && ssd->MaxLevel < DEFAULT_MAX_LEVEL && ssd->MaxLevel < getLevel())
|
||||
if (ssd && ssd->MaxLevel < DEFAULT_MAX_LEVEL && ssd->MaxLevel < GetLevel())
|
||||
return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED;
|
||||
|
||||
uint8 eslot = FindEquipSlot(pProto, slot, swap);
|
||||
@@ -2342,7 +2342,7 @@ InventoryResult Player::CanUseItem(ItemTemplate const* proto) const
|
||||
return EQUIP_ERR_NO_REQUIRED_PROFICIENCY;
|
||||
}
|
||||
|
||||
if (getLevel() < proto->RequiredLevel)
|
||||
if (GetLevel() < proto->RequiredLevel)
|
||||
{
|
||||
return EQUIP_ERR_CANT_EQUIP_LEVEL_I;
|
||||
}
|
||||
@@ -4348,7 +4348,7 @@ void Player::ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool
|
||||
if (!ignore_condition && pEnchant->EnchantmentCondition && !EnchantmentFitsRequirements(pEnchant->EnchantmentCondition, -1))
|
||||
return;
|
||||
|
||||
if (pEnchant->requiredLevel > getLevel())
|
||||
if (pEnchant->requiredLevel > GetLevel())
|
||||
return;
|
||||
|
||||
if (pEnchant->requiredSkill > 0 && pEnchant->requiredSkillValue > GetSkillValue(pEnchant->requiredSkill))
|
||||
@@ -6737,9 +6737,9 @@ bool Player::Satisfy(DungeonProgressionRequirements const* ar, uint32 target_map
|
||||
|
||||
if (!sWorld->getBoolConfig(CONFIG_INSTANCE_IGNORE_LEVEL))
|
||||
{
|
||||
if (ar->levelMin && getLevel() < ar->levelMin)
|
||||
if (ar->levelMin && GetLevel() < ar->levelMin)
|
||||
LevelMin = ar->levelMin;
|
||||
if (ar->levelMax && getLevel() > ar->levelMax)
|
||||
if (ar->levelMax && GetLevel() > ar->levelMax)
|
||||
LevelMax = ar->levelMax;
|
||||
}
|
||||
|
||||
@@ -7758,7 +7758,7 @@ void Player::_SaveSpells(CharacterDatabaseTransaction trans)
|
||||
void Player::_SaveStats(CharacterDatabaseTransaction trans)
|
||||
{
|
||||
// check if stat saving is enabled and if char level is high enough
|
||||
if (!sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE) || getLevel() < sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE))
|
||||
if (!sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE) || GetLevel() < sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE))
|
||||
return;
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
|
||||
@@ -980,7 +980,7 @@ void Player::UpdateWeaponSkill(Unit* victim, WeaponAttackType attType, Item* ite
|
||||
|
||||
void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defence, Item* item /*= nullptr*/)
|
||||
{
|
||||
uint8 playerLevel = getLevel();
|
||||
uint8 playerLevel = GetLevel();
|
||||
uint16 currentSkillValue = defence ? GetBaseDefenseSkillValue() : GetBaseWeaponSkillValue(attType);
|
||||
uint16 currentSkillMax = 5 * playerLevel;
|
||||
int32 skillDiff = currentSkillMax - currentSkillValue;
|
||||
@@ -993,7 +993,7 @@ void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool def
|
||||
}
|
||||
|
||||
uint8 greylevel = Acore::XP::GetGrayLevel(playerLevel);
|
||||
uint8 moblevel = defence ? victim->getLevelForTarget(this) : victim->getLevel(); // if defense than victim == attacker
|
||||
uint8 moblevel = defence ? victim->getLevelForTarget(this) : victim->GetLevel(); // if defense than victim == attacker
|
||||
/*if (moblevel < greylevel)
|
||||
return;*/
|
||||
// Patch 3.0.8 (2009-01-20): You can no longer skill up weapons on mobs that are immune to damage.
|
||||
|
||||
@@ -242,7 +242,7 @@ void SocialMgr::GetFriendInfo(Player* player, ObjectGuid friendGUID, FriendInfo&
|
||||
if (pFriend->isDND())
|
||||
friendInfo.Status = FRIEND_STATUS_DND;
|
||||
friendInfo.Area = pFriend->GetZoneId();
|
||||
friendInfo.Level = pFriend->getLevel();
|
||||
friendInfo.Level = pFriend->GetLevel();
|
||||
friendInfo.Class = pFriend->getClass();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user