Core/Spells: Implemented SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED
Port From (https://github.com/TrinityCore/TrinityCore/commit/076c63c766d10697cea17da8bd5194862a682cbe)
This commit is contained in:
@@ -1771,7 +1771,7 @@ namespace Framework.Constants
|
|||||||
ImpliedTargeting = 0x800, // Implied Targeting (Client Only)
|
ImpliedTargeting = 0x800, // Implied Targeting (Client Only)
|
||||||
MeleeChainTargeting = 0x1000, // Melee Chain Targeting
|
MeleeChainTargeting = 0x1000, // Melee Chain Targeting
|
||||||
SpellHasteAffectsPeriodic = 0x2000, // Spell Haste Affects Periodic
|
SpellHasteAffectsPeriodic = 0x2000, // Spell Haste Affects Periodic
|
||||||
NotAvailableWhileCharmed = 0x4000, /*Nyi*/ // Not Available While Charmed
|
NotAvailableWhileCharmed = 0x4000, // Not Available While Charmed
|
||||||
TreatAsAreaEffect = 0x8000, /*Nyi*/ // Treat As Area Effect
|
TreatAsAreaEffect = 0x8000, /*Nyi*/ // Treat As Area Effect
|
||||||
AuraAffectsNotJustReqEquippedItem = 0x10000, // Aura Affects Not Just Req. Equipped Item
|
AuraAffectsNotJustReqEquippedItem = 0x10000, // Aura Affects Not Just Req. Equipped Item
|
||||||
AllowWhileFleeing = 0x20000, // Allow While Fleeing
|
AllowWhileFleeing = 0x20000, // Allow While Fleeing
|
||||||
|
|||||||
@@ -1096,6 +1096,9 @@ namespace Game.Entities
|
|||||||
if (spellInfo == null)
|
if (spellInfo == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (spellInfo.HasAttribute(SpellAttr5.NotAvailableWhileCharmed))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!Global.ConditionMgr.IsObjectMeetingVehicleSpellConditions(vehicle.GetEntry(), spellId, this, vehicle))
|
if (!Global.ConditionMgr.IsObjectMeetingVehicleSpellConditions(vehicle.GetEntry(), spellId, this, vehicle))
|
||||||
{
|
{
|
||||||
Log.outDebug(LogFilter.Condition, "VehicleSpellInitialize: conditions not met for Vehicle entry {0} spell {1}", vehicle.ToCreature().GetEntry(), spellId);
|
Log.outDebug(LogFilter.Condition, "VehicleSpellInitialize: conditions not met for Vehicle entry {0} spell {1}", vehicle.ToCreature().GetEntry(), spellId);
|
||||||
|
|||||||
@@ -110,6 +110,9 @@ namespace Game.Entities
|
|||||||
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, _unit.GetMap().GetDifficultyID());
|
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, _unit.GetMap().GetDifficultyID());
|
||||||
if (spellInfo != null)
|
if (spellInfo != null)
|
||||||
{
|
{
|
||||||
|
if (spellInfo.HasAttribute(SpellAttr5.NotAvailableWhileCharmed))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (spellInfo.IsPassive())
|
if (spellInfo.IsPassive())
|
||||||
_unit.CastSpell(_unit, spellInfo.Id, new CastSpellExtraArgs(true));
|
_unit.CastSpell(_unit, spellInfo.Id, new CastSpellExtraArgs(true));
|
||||||
else
|
else
|
||||||
@@ -142,6 +145,9 @@ namespace Game.Entities
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (spellInfo.HasAttribute(SpellAttr5.NotAvailableWhileCharmed))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (spellInfo.IsPassive())
|
if (spellInfo.IsPassive())
|
||||||
{
|
{
|
||||||
_unit.CastSpell(_unit, spellInfo.Id, new CastSpellExtraArgs(true));
|
_unit.CastSpell(_unit, spellInfo.Id, new CastSpellExtraArgs(true));
|
||||||
|
|||||||
@@ -4703,6 +4703,9 @@ namespace Game.Spells
|
|||||||
Unit unitCaster = m_caster.ToUnit();
|
Unit unitCaster = m_caster.ToUnit();
|
||||||
if (unitCaster != null)
|
if (unitCaster != null)
|
||||||
{
|
{
|
||||||
|
if (m_spellInfo.HasAttribute(SpellAttr5.NotAvailableWhileCharmed) && unitCaster.IsCharmed())
|
||||||
|
return SpellCastResult.Charmed;
|
||||||
|
|
||||||
// only check at first call, Stealth auras are already removed at second call
|
// only check at first call, Stealth auras are already removed at second call
|
||||||
// for now, ignore triggered spells
|
// for now, ignore triggered spells
|
||||||
if (strict && !_triggeredCastFlags.HasFlag(TriggerCastFlags.IgnoreShapeshift))
|
if (strict && !_triggeredCastFlags.HasFlag(TriggerCastFlags.IgnoreShapeshift))
|
||||||
@@ -5659,7 +5662,7 @@ namespace Game.Spells
|
|||||||
return SpellCastResult.NoPet;
|
return SpellCastResult.NoPet;
|
||||||
|
|
||||||
if (!pet.GetCharmerGUID().IsEmpty())
|
if (!pet.GetCharmerGUID().IsEmpty())
|
||||||
return SpellCastResult.Charmed;
|
return SpellCastResult.AlreadyHaveCharm;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AuraType.ModPossess:
|
case AuraType.ModPossess:
|
||||||
@@ -5671,7 +5674,7 @@ namespace Game.Spells
|
|||||||
return SpellCastResult.BadTargets;
|
return SpellCastResult.BadTargets;
|
||||||
|
|
||||||
if (!unitCaster1.GetCharmerGUID().IsEmpty())
|
if (!unitCaster1.GetCharmerGUID().IsEmpty())
|
||||||
return SpellCastResult.Charmed;
|
return SpellCastResult.AlreadyHaveCharm;
|
||||||
|
|
||||||
if (spellEffectInfo.ApplyAuraName == AuraType.ModCharm || spellEffectInfo.ApplyAuraName == AuraType.ModPossess)
|
if (spellEffectInfo.ApplyAuraName == AuraType.ModCharm || spellEffectInfo.ApplyAuraName == AuraType.ModPossess)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user