diff options
| author | Mihapro <miha.penger@outlook.com> | 2018-01-03 16:39:00 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2018-01-03 16:39:32 +0100 |
| commit | 8199eef81cad464bb43f3613ed884a2c8fc3973d (patch) | |
| tree | 7a17cb8ede0a45814532dd306fcf7f37d2f90ce8 /src/server/game/Entities | |
| parent | c2aead1da5b6cb9a3a69e276b3f12a2c76b9ab86 (diff) | |
Core/Misc: Added helper function Unit::SetFullPower
* Also renamed Unit::getPowerType and Unit::setPowerType to follow style guidelines
Ref #20981
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Pet/Pet.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 56 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 17 | ||||
| -rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.cpp | 4 |
6 files changed, 56 insertions, 61 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 4e09769218e..3f480de69f2 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -677,7 +677,7 @@ void Creature::Update(uint32 diff) if (HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER)) { - if (getPowerType() == POWER_ENERGY) + if (GetPowerType() == POWER_ENERGY) Regenerate(POWER_ENERGY); else RegenerateMana(); @@ -1229,10 +1229,10 @@ void Creature::UpdateLevelDependantStats() switch (getClass()) { case CLASS_WARRIOR: - setPowerType(POWER_RAGE); + SetPowerType(POWER_RAGE); break; case CLASS_ROGUE: - setPowerType(POWER_ENERGY); + SetPowerType(POWER_ENERGY); break; default: SetMaxPower(POWER_MANA, mana); // MAX Mana @@ -1504,7 +1504,7 @@ void Creature::SetSpawnHealth() else { curhealth = GetMaxHealth(); - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + SetFullPower(POWER_MANA); } SetHealth((m_deathState == ALIVE || m_deathState == JUST_RESPAWNED) ? curhealth : 0); diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 60e6bbeac20..7896aa54db5 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -226,7 +226,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c SetSheath(SHEATH_STATE_MELEE); SetByteFlag(UNIT_FIELD_BYTES_2, UNIT_BYTES_2_OFFSET_PET_FLAGS, fields[9].GetBool() ? UNIT_CAN_BE_ABANDONED : UNIT_CAN_BE_RENAMED | UNIT_CAN_BE_ABANDONED); SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); // this enables popup window (pet abandon, cancel) - setPowerType(POWER_FOCUS); + SetPowerType(POWER_FOCUS); break; default: if (!IsPetGhoul()) @@ -257,7 +257,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c SetCanModifyStats(true); if (getPetType() == SUMMON_PET && !current) //all (?) summon pets come with full health when called, but not when they are current - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + SetFullPower(POWER_MANA); else { uint32 savedhealth = fields[10].GetUInt32(); @@ -266,8 +266,8 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c setDeathState(JUST_DIED); else { - SetHealth(savedhealth > GetMaxHealth() ? GetMaxHealth() : savedhealth); - SetPower(POWER_MANA, savedmana > uint32(GetMaxPower(POWER_MANA)) ? GetMaxPower(POWER_MANA) : savedmana); + SetHealth(savedhealth); + SetPower(POWER_MANA, savedmana); } } @@ -599,7 +599,7 @@ void Pet::Update(uint32 diff) m_focusRegenTimer -= diff; else { - switch (getPowerType()) + switch (GetPowerType()) { case POWER_FOCUS: Regenerate(POWER_FOCUS); @@ -780,7 +780,7 @@ bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map) if (!Create(map->GenerateLowGuid<HighGuid::Pet>(), map, cinfo->Entry)) return false; - setPowerType(POWER_FOCUS); + SetPowerType(POWER_FOCUS); SetUInt32Value(UNIT_FIELD_PET_NAME_TIMESTAMP, 0); SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32(sObjectMgr->GetXPForLevel(getLevel()+1)*PET_XP_FACTOR)); @@ -1036,7 +1036,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) UpdateAllStats(); SetFullHealth(); - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + SetFullPower(POWER_MANA); return true; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d8bf94c7cb1..1050ba2ff7c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -591,8 +591,8 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac // apply original stats mods before spell loading or item equipment that call before equip _RemoveStatsMods() UpdateMaxHealth(); // Update max Health (for add bonus from stamina) SetFullHealth(); - if (getPowerType() == POWER_MANA) - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + if (GetPowerType() == POWER_MANA) + SetFullPower(POWER_MANA); // original spells LearnDefaultSkills(); @@ -2019,17 +2019,18 @@ void Player::RegenerateHealth() void Player::ResetAllPowers() { - SetHealth(GetMaxHealth()); - switch (getPowerType()) + SetFullHealth(); + + switch (GetPowerType()) { case POWER_MANA: - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + SetFullPower(POWER_MANA); break; case POWER_RAGE: SetPower(POWER_RAGE, 0); break; case POWER_ENERGY: - SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY)); + SetFullPower(POWER_ENERGY); break; case POWER_RUNIC_POWER: SetPower(POWER_RUNIC_POWER, 0); @@ -2453,10 +2454,10 @@ void Player::GiveLevel(uint8 level) // set current level health and mana/energy to maximum after applying all mods. SetFullHealth(); - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); - SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY)); + SetFullPower(POWER_MANA); + SetFullPower(POWER_ENERGY); if (GetPower(POWER_RAGE) > GetMaxPower(POWER_RAGE)) - SetPower(POWER_RAGE, GetMaxPower(POWER_RAGE)); + SetFullPower(POWER_RAGE); SetPower(POWER_FOCUS, 0); // update level to hunter/summon pet @@ -2681,11 +2682,11 @@ void Player::InitStatsForLevel(bool reapplyMods) // set current level health and mana/energy to maximum after applying all mods. SetFullHealth(); - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); - SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY)); + SetFullPower(POWER_MANA); + SetFullPower(POWER_ENERGY); if (GetPower(POWER_RAGE) > GetMaxPower(POWER_RAGE)) - SetPower(POWER_RAGE, GetMaxPower(POWER_RAGE)); - SetPower(POWER_FOCUS, GetMaxPower(POWER_FOCUS)); + SetFullPower(POWER_RAGE); + SetFullPower(POWER_FOCUS); SetPower(POWER_RUNIC_POWER, 0); // update level to hunter/summon pet @@ -4199,11 +4200,11 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness) // set health/powers (0- will be set in caller) if (restore_percent > 0.0f) { - SetHealth(uint32(GetMaxHealth()*restore_percent)); - SetPower(POWER_MANA, uint32(GetMaxPower(POWER_MANA)*restore_percent)); + SetHealth(GetMaxHealth() * restore_percent); + SetPower(POWER_MANA, GetMaxPower(POWER_MANA) * restore_percent); SetPower(POWER_RAGE, 0); - SetPower(POWER_ENERGY, uint32(GetMaxPower(POWER_ENERGY)*restore_percent)); - SetPower(POWER_FOCUS, uint32(GetMaxPower(POWER_FOCUS)*restore_percent)); + SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY) * restore_percent); + SetPower(POWER_FOCUS, GetMaxPower(POWER_FOCUS) * restore_percent); SetPower(POWER_LUNAR_POWER, 0); } @@ -24827,19 +24828,12 @@ void Player::ResurrectUsingRequestDataImpl() { ResurrectPlayer(0.0f, false); - if (GetMaxHealth() > _resurrectionData->Health) - SetHealth(_resurrectionData->Health); - else - SetFullHealth(); - - if (uint32(GetMaxPower(POWER_MANA)) > _resurrectionData->Mana) - SetPower(POWER_MANA, _resurrectionData->Mana); - else - SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + SetHealth(_resurrectionData->Health); + SetPower(POWER_MANA, _resurrectionData->Mana); SetPower(POWER_RAGE, 0); - SetPower(POWER_ENERGY, GetMaxPower(POWER_ENERGY)); - SetPower(POWER_FOCUS, GetMaxPower(POWER_FOCUS)); + SetFullPower(POWER_ENERGY); + SetFullPower(POWER_FOCUS); SetPower(POWER_LUNAR_POWER, 0); if (uint32 aura = _resurrectionData->Aura) @@ -26628,7 +26622,7 @@ void Player::ActivateTalentGroup(ChrSpecializationEntry const* spec) SendActionButtons(1); UpdateDisplayPower(); - Powers pw = getPowerType(); + Powers pw = GetPowerType(); if (pw != POWER_MANA) SetPower(POWER_MANA, 0); // Mana must be 0 even if it isn't the active power type. @@ -27321,7 +27315,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy pet->SetCreatorGUID(GetGUID()); pet->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, getFaction()); - pet->setPowerType(POWER_MANA); + pet->SetPowerType(POWER_MANA); pet->SetUInt64Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); pet->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pet->InitStatsForLevel(getLevel()); @@ -27337,7 +27331,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, 1000); pet->SetFullHealth(); - pet->SetPower(POWER_MANA, pet->GetMaxPower(POWER_MANA)); + pet->SetFullPower(POWER_MANA); pet->SetUInt32Value(UNIT_FIELD_PET_NAME_TIMESTAMP, uint32(time(nullptr))); // cast can't be helped in this case break; default: diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e3b4958b330..8233d7b2457 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -780,7 +780,7 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam } // Rage from Damage made (only from direct weapon damage) - if (cleanDamage && (cleanDamage->attackType == BASE_ATTACK || cleanDamage->attackType == OFF_ATTACK) && damagetype == DIRECT_DAMAGE && this != victim && getPowerType() == POWER_RAGE) + if (cleanDamage && (cleanDamage->attackType == BASE_ATTACK || cleanDamage->attackType == OFF_ATTACK) && damagetype == DIRECT_DAMAGE && this != victim && GetPowerType() == POWER_RAGE) { uint32 rage = uint32(GetBaseAttackTime(cleanDamage->attackType) / 1000.f * 1.75f); if (cleanDamage->attackType == OFF_ATTACK) @@ -5159,9 +5159,9 @@ void Unit::SendAttackStateUpdate(uint32 HitInfo, Unit* target, uint8 /*SwingType SendAttackStateUpdate(&dmgInfo); } -void Unit::setPowerType(Powers new_powertype) +void Unit::SetPowerType(Powers new_powertype) { - if (getPowerType() == new_powertype) + if (GetPowerType() == new_powertype) return; SetUInt32Value(UNIT_FIELD_DISPLAY_POWER, new_powertype); @@ -5235,7 +5235,7 @@ void Unit::UpdateDisplayPower() } } - setPowerType(displayPower); + SetPowerType(displayPower); } FactionTemplateEntry const* Unit::GetFactionTemplateEntry() const @@ -5923,7 +5923,7 @@ void Unit::SetMinion(Minion *minion, bool apply) // Ghoul pets have energy instead of mana (is anywhere better place for this code?) if (minion->IsPetGhoul()) - minion->setPowerType(POWER_ENERGY); + minion->SetPowerType(POWER_ENERGY); // Send infinity cooldown - client does that automatically but after relog cooldown needs to be set again SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(minion->GetUInt32Value(UNIT_CREATED_BY_SPELL)); @@ -8540,7 +8540,7 @@ void Unit::setDeathState(DeathState s) // without this when removing IncreaseMaxHealth aura player may stuck with 1 hp // do not why since in IncreaseMaxHealth currenthealth is checked SetHealth(0); - SetPower(getPowerType(), 0); + SetPower(GetPowerType(), 0); SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); // players in instance don't have ZoneScript, but they have InstanceScript @@ -9265,9 +9265,9 @@ bool Unit::HandleStatModifier(UnitMods unitMod, UnitModifierType modifierType, f case UNIT_MOD_RUNES: case UNIT_MOD_RUNIC_POWER: case UNIT_MOD_SOUL_SHARDS: - case UNIT_MOD_ECLIPSE: + case UNIT_MOD_LUNAR_POWER: case UNIT_MOD_HOLY_POWER: - case UNIT_MOD_ALTERNATIVE: + case UNIT_MOD_ALTERNATE: case UNIT_MOD_MAELSTROM: case UNIT_MOD_CHI: case UNIT_MOD_INSANITY: @@ -9508,7 +9508,7 @@ void Unit::SetPower(Powers power, int32 val) if (powerIndex == MAX_POWERS || powerIndex >= MAX_POWERS_PER_CLASS) return; - int32 maxPower = int32(GetMaxPower(power)); + int32 maxPower = GetMaxPower(power); if (maxPower < val) val = maxPower; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index f9096940b48..7caa345a89f 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -292,9 +292,9 @@ enum UnitMods UNIT_MOD_RUNES, UNIT_MOD_RUNIC_POWER, UNIT_MOD_SOUL_SHARDS, - UNIT_MOD_ECLIPSE, + UNIT_MOD_LUNAR_POWER, UNIT_MOD_HOLY_POWER, - UNIT_MOD_ALTERNATIVE, + UNIT_MOD_ALTERNATE, UNIT_MOD_MAELSTROM, UNIT_MOD_CHI, UNIT_MOD_INSANITY, @@ -1043,8 +1043,8 @@ class TC_GAME_API Unit : public WorldObject virtual float GetDamageMultiplierForTarget(WorldObject const* /*target*/) const { return 1.0f; } virtual float GetArmorMultiplierForTarget(WorldObject const* /*target*/) const { return 1.0f; } - Powers getPowerType() const { return Powers(GetUInt32Value(UNIT_FIELD_DISPLAY_POWER)); } - void setPowerType(Powers power); + Powers GetPowerType() const { return Powers(GetUInt32Value(UNIT_FIELD_DISPLAY_POWER)); } + void SetPowerType(Powers power); void UpdateDisplayPower(); int32 GetPower(Powers power) const; int32 GetMinPower(Powers power) const { return power == POWER_LUNAR_POWER ? -100 : 0; } @@ -1053,6 +1053,7 @@ class TC_GAME_API Unit : public WorldObject int32 CountPctFromMaxPower(Powers power, int32 pct) const { return CalculatePct(GetMaxPower(power), pct); } void SetPower(Powers power, int32 val); void SetMaxPower(Powers power, int32 val); + inline void SetFullPower(Powers power) { SetPower(power, GetMaxPower(power)); } // returns the change in power int32 ModifyPower(Powers power, int32 val); @@ -2027,15 +2028,15 @@ namespace Trinity { Unit const* a = objA->ToUnit(); Unit const* b = objB->ToUnit(); - float rA = (a && a->GetMaxPower(_power)) ? float(a->GetPower(_power)) / float(a->GetMaxPower(_power)) : 0.0f; - float rB = (b && b->GetMaxPower(_power)) ? float(b->GetPower(_power)) / float(b->GetMaxPower(_power)) : 0.0f; + float rA = a ? a->GetPowerPct(_power) : 0.0f; + float rB = b ? b->GetPowerPct(_power) : 0.0f; return _ascending ? rA < rB : rA > rB; } bool operator()(Unit const* a, Unit const* b) const { - float rA = a->GetMaxPower(_power) ? float(a->GetPower(_power)) / float(a->GetMaxPower(_power)) : 0.0f; - float rB = b->GetMaxPower(_power) ? float(b->GetPower(_power)) / float(b->GetMaxPower(_power)) : 0.0f; + float rA = a->GetPowerPct(_power); + float rB = b->GetPowerPct(_power); return _ascending ? rA < rB : rA > rB; } diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 4c1e90c2c1e..636a1e83fe1 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -77,9 +77,9 @@ void Vehicle::Install() if (_me->GetTypeId() == TYPEID_UNIT) { if (PowerDisplayEntry const* powerDisplay = sPowerDisplayStore.LookupEntry(_vehicleInfo->PowerDisplayID[0])) - _me->setPowerType(Powers(powerDisplay->PowerType)); + _me->SetPowerType(Powers(powerDisplay->PowerType)); else if (_me->getClass() == CLASS_ROGUE) - _me->setPowerType(POWER_ENERGY); + _me->SetPowerType(POWER_ENERGY); } _status = STATUS_INSTALLED; |
