diff options
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.cpp | 25 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 2 |
5 files changed, 26 insertions, 15 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 6ae0b678972..8601d242322 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -23,6 +23,8 @@ #include "Player.h" #include "ViewerDependentValues.h" +// This file is automatically generated, DO NOT EDIT + #if TRINITY_COMPILER == TRINITY_COMPILER_GNU #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -690,7 +692,10 @@ void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi data << uint32(UnlockedEssenceMilestones[i]); } data.FlushBits(); - data.WriteBit(Enabled); + if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) + { + data.WriteBit(Enabled); + } for (std::size_t i = 0; i < SelectedEssences.size(); ++i) { SelectedEssences[i].WriteCreate(data, owner, receiver); @@ -700,7 +705,7 @@ void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const { - UpdateMask<10> allowedMaskForTarget({ 0x0000001Fu }); + UpdateMask<10> allowedMaskForTarget({ 0x0000001Du }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } @@ -708,13 +713,13 @@ void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fi void AzeriteItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<10>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= { 0x000003E0u }; + allowedMaskForTarget |= { 0x000003E2u }; } void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(UpdateMask<10>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - changesMask &= { 0xFFFFFC1Fu }; + changesMask &= { 0xFFFFFC1Du }; } void AzeriteItemData::WriteUpdate(ByteBuffer& data, UpdateMask<10> const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const @@ -1055,7 +1060,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi for (std::size_t i = 0; i < 7; ++i) { data << int32(BonusResistanceMods[i]); - data << int32(PowerCostModifier[i]); + data << int32(ManaCostModifier[i]); } } data << int32(BaseMana); @@ -1084,7 +1089,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi data << float(Lifesteal); data << float(MinRangedDamage); data << float(MaxRangedDamage); - data << float(ManaCostModifierModifier); + data << float(ManaCostMultiplier); data << float(MaxHealthModifier); } data << float(HoverHeight); @@ -1606,7 +1611,7 @@ void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<189> const& changesMask, } if (changesMask[101]) { - data << float(ManaCostModifierModifier); + data << float(ManaCostMultiplier); } if (changesMask[102]) { @@ -1761,7 +1766,7 @@ void UnitData::WriteUpdate(ByteBuffer& data, UpdateMask<189> const& changesMask, } if (changesMask[182 + i]) { - data << int32(PowerCostModifier[i]); + data << int32(ManaCostModifier[i]); } } } @@ -1866,7 +1871,7 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(Lifesteal); Base::ClearChangesMask(MinRangedDamage); Base::ClearChangesMask(MaxRangedDamage); - Base::ClearChangesMask(ManaCostModifierModifier); + Base::ClearChangesMask(ManaCostMultiplier); Base::ClearChangesMask(MaxHealthModifier); Base::ClearChangesMask(HoverHeight); Base::ClearChangesMask(MinItemLevelCutoff); @@ -1896,7 +1901,7 @@ void UnitData::ClearChangesMask() Base::ClearChangesMask(StatNegBuff); Base::ClearChangesMask(Resistances); Base::ClearChangesMask(BonusResistanceMods); - Base::ClearChangesMask(PowerCostModifier); + Base::ClearChangesMask(ManaCostModifier); _changesMask.ResetAll(); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index cf79965d3ef..d932a27339e 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -25,6 +25,8 @@ #include "UpdateField.h" #include "UpdateMask.h" +// This file is automatically generated, DO NOT EDIT + class AreaTrigger; class AzeriteEmpoweredItem; class AzeriteItem; @@ -353,7 +355,7 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<189> UpdateField<float, 96, 98> Lifesteal; UpdateField<float, 96, 99> MinRangedDamage; UpdateField<float, 96, 100> MaxRangedDamage; - UpdateField<float, 96, 101> ManaCostModifierModifier; + UpdateField<float, 96, 101> ManaCostMultiplier; UpdateField<float, 96, 102> MaxHealthModifier; UpdateField<float, 96, 103> HoverHeight; UpdateField<int32, 96, 104> MinItemLevelCutoff; @@ -384,7 +386,7 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<189> UpdateFieldArray<int32, 4, 154, 163> StatNegBuff; UpdateFieldArray<int32, 7, 167, 168> Resistances; UpdateFieldArray<int32, 7, 167, 175> BonusResistanceMods; - UpdateFieldArray<int32, 7, 167, 182> PowerCostModifier; + UpdateFieldArray<int32, 7, 167, 182> ManaCostModifier; void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 387df09eb7f..7a9e1cf7ae3 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1087,7 +1087,7 @@ class TC_GAME_API Unit : public WorldObject // returns the change in power int32 ModifyPower(Powers power, int32 val); - void ApplyModPowerCostModifier(SpellSchools school, int32 mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PowerCostModifier, school), mod, apply); } + void ApplyModManaCostModifier(SpellSchools school, int32 mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ManaCostModifier, school), mod, apply); } uint32 GetBaseAttackTime(WeaponAttackType att) const; void SetBaseAttackTime(WeaponAttackType att, uint32 val); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 377a9135ba0..c7c9ceebb43 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -4424,11 +4424,15 @@ void AuraEffect::HandleModPowerCost(AuraApplication const* aurApp, uint8 mode, b if (!(mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK)) return; + // handled in SpellInfo::CalcPowerCost, this is only for client UI + if (!(GetMiscValueB() & (1 << POWER_MANA))) + return; + Unit* target = aurApp->GetTarget(); for (int i = 0; i < MAX_SPELL_SCHOOL; ++i) if (GetMiscValue() & (1 << i)) - target->ApplyModPowerCostModifier(SpellSchools(i), GetAmount(), apply); + target->ApplyModManaCostModifier(SpellSchools(i), GetAmount(), apply); } void AuraEffect::HandleArenaPreparation(AuraApplication const* aurApp, uint8 mode, bool apply) const diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index c58ae80fa1a..ee06f6e7d3f 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3835,7 +3835,7 @@ std::vector<SpellPowerCost> SpellInfo::CalcPowerCost(Unit const* caster, SpellSc } if (power->PowerType == POWER_MANA) - flatMod *= 1.0f + caster->m_unitData->ManaCostModifierModifier; + flatMod *= 1.0f + caster->m_unitData->ManaCostMultiplier; // this is wrong powerCost += flatMod; } |