diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-06-27 15:29:30 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-06-27 15:29:30 +0200 |
commit | 60400d25f5fff2dabd4aa74bbdbc0d2370360a35 (patch) | |
tree | 54f2ae7ecfdbe1387d6d6e39a4168a9385b1f230 /src/server/game/Spells/SpellEffects.cpp | |
parent | e0f3291eab271cb7dc5f39abfc7e2a4744be6ee0 (diff) |
Core/Players: Implemented PlayerDataElementAccount, PlayerDataElementCharacter, PlayerDataFlagAccount and PlayerDataFlagCharacter
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index eb983373d24..6baa049f831 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -423,10 +423,10 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //332 SPELL_EFFECT_332 &Spell::EffectNULL, //333 SPELL_EFFECT_333 &Spell::EffectNULL, //334 SPELL_EFFECT_334 - &Spell::EffectNULL, //335 SPELL_EFFECT_335 - &Spell::EffectNULL, //336 SPELL_EFFECT_336 - &Spell::EffectNULL, //337 SPELL_EFFECT_337 - &Spell::EffectNULL, //338 SPELL_EFFECT_338 + &Spell::EffectSetPlayerDataElementAccount, //335 SPELL_EFFECT_SET_PLAYER_DATA_ELEMENT_ACCOUNT + &Spell::EffectSetPlayerDataElementCharacter, //336 SPELL_EFFECT_SET_PLAYER_DATA_ELEMENT_CHARACTER + &Spell::EffectSetPlayerDataFlagAccount, //337 SPELL_EFFECT_SET_PLAYER_DATA_FLAG_ACCOUNT + &Spell::EffectSetPlayerDataFlagCharacter, //338 SPELL_EFFECT_SET_PLAYER_DATA_FLAG_CHARACTER &Spell::EffectNULL, //339 SPELL_EFFECT_UI_ACTION &Spell::EffectNULL, //340 SPELL_EFFECT_340 &Spell::EffectLearnWarbandScene, //341 SPELL_EFFECT_LEARN_WARBAND_SCENE @@ -6111,9 +6111,7 @@ void Spell::EffectModifyCooldowns() if (bitIndex < 0 || uint32(bitIndex) >= sizeof(flag128) * 8) return false; - flag128 reqFlag; - reqFlag[bitIndex / 32] = 1u << (bitIndex % 32); - return bool(spellOnCooldown->SpellFamilyFlags & reqFlag); + return (spellOnCooldown->SpellFamilyFlags[bitIndex / 32] & 1u << (bitIndex % 32)) != 0; }, Milliseconds(damage)); } @@ -6216,3 +6214,51 @@ void Spell::EffectLearnWarbandScene() target->GetSession()->GetCollectionMgr()->AddWarbandScene(effectInfo->MiscValue); } + +void Spell::EffectSetPlayerDataElementAccount() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* target = Object::ToPlayer(unitTarget); + if (!target) + return; + + target->SetDataElementAccount(effectInfo->MiscValue, int64(damage)); +} + +void Spell::EffectSetPlayerDataElementCharacter() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* target = Object::ToPlayer(unitTarget); + if (!target) + return; + + target->SetDataElementCharacter(effectInfo->MiscValue, int64(damage)); +} + +void Spell::EffectSetPlayerDataFlagAccount() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* target = Object::ToPlayer(unitTarget); + if (!target) + return; + + target->SetDataFlagAccount(effectInfo->MiscValue, damage != 0); +} + +void Spell::EffectSetPlayerDataFlagCharacter() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* target = Object::ToPlayer(unitTarget); + if (!target) + return; + + target->SetDataFlagCharacter(effectInfo->MiscValue, damage != 0); +} |