diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-05-01 22:26:53 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-05-01 22:26:53 +0200 |
| commit | a39d0db9ec64f6bf38716abaade5b7835f2db338 (patch) | |
| tree | 1e18f96b3600ab02d9cb8fc6288ac0cded23b6ce /src/server/game/Entities | |
| parent | cdc6719b8368907292f090978f6bdd6b8c73834d (diff) | |
Core/Spells: Implemented evoker empower spell mechanic
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
5 files changed, 10 insertions, 1 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 9c39a8c7d99..dbb69e78ce6 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -542,6 +542,7 @@ bool Creature::InitEntry(uint32 entry, CreatureData const* data /*= nullptr*/) SetModRangedHaste(1.0f); SetModHasteRegen(1.0f); SetModTimeRate(1.0f); + SetSpellEmpowerStage(-1); SetSpeedRate(MOVE_WALK, creatureInfo->speed_walk); SetSpeedRate(MOVE_RUN, creatureInfo->speed_run); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 85f9cdaf74d..ea0adbb522d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -281,6 +281,7 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) m_legacyRaidDifficulty = DIFFICULTY_10_N; m_lastPotionId = 0; + m_empowerMinHoldStagePercent = 1.0f; m_auraBaseFlatMod.fill(0.0f); m_auraBasePctMod.fill(1.0f); @@ -2404,6 +2405,7 @@ void Player::InitStatsForLevel(bool reapplyMods) SetModRangedHaste(1.0f); SetModHasteRegen(1.0f); SetModTimeRate(1.0f); + SetSpellEmpowerStage(-1); // reset size before reapply auras SetObjectScale(1.0f); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 758c3ccd28a..988b2852022 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1952,6 +1952,9 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> void SetLastPotionId(uint32 item_id) { m_lastPotionId = item_id; } void UpdatePotionCooldown(Spell* spell = nullptr); + float GetEmpowerMinHoldStagePercent() const { return m_empowerMinHoldStagePercent; } + void SetEmpowerMinHoldStagePercent(float empowerMinHoldStagePercent) { m_empowerMinHoldStagePercent = empowerMinHoldStagePercent; } + void SetResurrectRequestData(WorldObject const* caster, uint32 health, uint32 mana, uint32 appliedAura); void ClearResurrectRequestData() { @@ -3078,6 +3081,7 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> std::unordered_map<uint32 /*overridenSpellId*/, std::unordered_set<uint32> /*newSpellId*/> m_overrideSpells; uint32 m_lastPotionId; // last used health/mana potion in combat, that block next potion use std::unordered_map<uint32, StoredAuraTeleportLocation> m_storedAuraTeleportLocations; + float m_empowerMinHoldStagePercent; SpecializationInfo _specializationInfo; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a5a0b56df0e..55a697f32db 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3071,7 +3071,7 @@ void Unit::FinishSpell(CurrentSpellTypes spellType, SpellCastResult result /*= S return; if (spellType == CURRENT_CHANNELED_SPELL) - spell->SendChannelUpdate(0); + spell->SendChannelUpdate(0, result); spell->finish(result); } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 3a01deadd62..cae58533142 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1429,6 +1429,8 @@ class TC_GAME_API Unit : public WorldObject RemoveDynamicUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ChannelObjects), index); } void ClearChannelObjects() { ClearDynamicUpdateFieldValues(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ChannelObjects)); } + int8 GetSpellEmpowerStage() const { return m_unitData->SpellEmpowerStage; } + void SetSpellEmpowerStage(int8 stage) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::SpellEmpowerStage), stage); } void SetCurrentCastSpell(Spell* pSpell); void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed = true, bool withInstant = true); |
