Core/Conditions: Initial support for UnitCondition.db2

Port From (https://github.com/TrinityCore/TrinityCore/commit/72286dc5e4fa5db2aff012d9cd496a8a6fc514c3)
This commit is contained in:
hondacrx
2022-02-26 17:32:19 -05:00
parent 3aad3e7e97
commit 26deeb7a1e
5 changed files with 387 additions and 8 deletions
+14 -6
View File
@@ -3222,21 +3222,29 @@ namespace Game.Spells
return false;
}
public uint GetSpellXSpellVisualId(WorldObject caster = null)
public uint GetSpellXSpellVisualId(WorldObject caster = null, WorldObject viewer = null)
{
foreach (SpellXSpellVisualRecord visual in _visuals)
{
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.CasterPlayerConditionID);
if (playerCondition == null || (caster && caster.GetTypeId() == TypeId.Player && ConditionManager.IsPlayerMeetingCondition(caster.ToPlayer(), playerCondition)))
return visual.Id;
var playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.CasterPlayerConditionID);
if (playerCondition != null)
if (!caster || !caster.IsPlayer() || !ConditionManager.IsPlayerMeetingCondition(caster.ToPlayer(), playerCondition))
continue;
var unitCondition = CliDB.UnitConditionStorage.LookupByKey(visual.CasterUnitConditionID);
if (unitCondition != null)
if (!caster || !caster.IsUnit() || !ConditionManager.IsUnitMeetingCondition(caster.ToUnit(), viewer.ToUnit(), unitCondition))
continue;
return visual.Id;
}
return 0;
}
public uint GetSpellVisual(WorldObject caster = null)
public uint GetSpellVisual(WorldObject caster = null, WorldObject viewer = null)
{
var visual = CliDB.SpellXSpellVisualStorage.LookupByKey(GetSpellXSpellVisualId(caster));
var visual = CliDB.SpellXSpellVisualStorage.LookupByKey(GetSpellXSpellVisualId(caster, viewer));
if (visual != null)
{
//if (visual.LowViolenceSpellVisualID && forPlayer.GetViolenceLevel() operator 2)