Core/Players: Implemented PlayerDataElementAccount, PlayerDataElementCharacter, PlayerDataFlagAccount and PlayerDataFlagCharacter

Port From (https://github.com/TrinityCore/TrinityCore/commit/60400d25f5fff2dabd4aa74bbdbc0d2370360a35)
This commit is contained in:
Hondacrx
2025-08-19 16:29:13 -04:00
parent df197587a3
commit a9fc9f454f
18 changed files with 710 additions and 26 deletions
+53 -3
View File
@@ -5899,9 +5899,7 @@ namespace Game.Spells
if (bitIndex < 0 || bitIndex >= sizeof(uint) * 8)
return false;
FlagArray128 reqFlag = new();
reqFlag[bitIndex / 32] = 1u << (bitIndex % 32);
return (spellOnCooldown.SpellFamilyFlags & reqFlag);
return (spellOnCooldown.SpellFamilyFlags[bitIndex / 32] & 1u << (bitIndex % 32)) != 0;
}, TimeSpan.FromMilliseconds(damage));
}
@@ -6003,6 +6001,58 @@ namespace Game.Spells
target.GetSession().GetCollectionMgr().AddWarbandScene((uint)effectInfo.MiscValue);
}
[SpellEffectHandler(SpellEffectName.SetPlayerDataElementAccount)]
void EffectSetPlayerDataElementAccount()
{
if (effectHandleMode != SpellEffectHandleMode.HitTarget)
return;
Player target = unitTarget?.ToPlayer();
if (target == null)
return;
target.SetDataElementAccount((uint)effectInfo.MiscValue, (long)damage);
}
[SpellEffectHandler(SpellEffectName.SetPlayerDataElementCharacter)]
void EffectSetPlayerDataElementCharacter()
{
if (effectHandleMode != SpellEffectHandleMode.HitTarget)
return;
Player target = unitTarget?.ToPlayer();
if (target == null)
return;
target.SetDataElementCharacter((uint)effectInfo.MiscValue, (long)damage);
}
[SpellEffectHandler(SpellEffectName.SetPlayerDataFlagAccount)]
void EffectSetPlayerDataFlagAccount()
{
if (effectHandleMode != SpellEffectHandleMode.HitTarget)
return;
Player target = unitTarget?.ToPlayer();
if (target == null)
return;
target.SetDataFlagAccount((uint)effectInfo.MiscValue, damage != 0);
}
[SpellEffectHandler(SpellEffectName.SetPlayerDataFlagCharacter)]
void EffectSetPlayerDataFlagCharacter()
{
if (effectHandleMode != SpellEffectHandleMode.HitTarget)
return;
Player target = unitTarget?.ToPlayer();
if (target == null)
return;
target.SetDataFlagCharacter((uint)effectInfo.MiscValue, damage != 0);
}
}
public class DispelableAura