Core/Spells: Include more than first 2 spell effects when determining if a spell is negative
Port From (https://github.com/TrinityCore/TrinityCore/commit/176c75e8dbad95bfdcd88034f75e1452997ddb07)
This commit is contained in:
@@ -23,6 +23,7 @@ using Game.DataStorage;
|
||||
using Game.Entities;
|
||||
using Game.Maps;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
@@ -510,21 +511,16 @@ namespace Game.Spells
|
||||
|
||||
public bool IsPositive()
|
||||
{
|
||||
return !HasAttribute(SpellCustomAttributes.Negative);
|
||||
for (var index = 0; index < NegativeEffects.Length; ++index)
|
||||
if (NegativeEffects.Get(index))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool IsPositiveEffect(uint effIndex)
|
||||
{
|
||||
switch (effIndex)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return !HasAttribute(SpellCustomAttributes.NegativeEff0);
|
||||
case 1:
|
||||
return !HasAttribute(SpellCustomAttributes.NegativeEff1);
|
||||
case 2:
|
||||
return !HasAttribute(SpellCustomAttributes.NegativeEff2);
|
||||
}
|
||||
return NegativeEffects.Get((int)effIndex);
|
||||
}
|
||||
|
||||
public bool IsChanneled()
|
||||
@@ -3528,6 +3524,7 @@ namespace Game.Spells
|
||||
public SpellAttr12 AttributesEx12 { get; set; }
|
||||
public SpellAttr13 AttributesEx13 { get; set; }
|
||||
public SpellCustomAttributes AttributesCu { get; set; }
|
||||
public BitSet NegativeEffects { get; set; } = new BitSet(SpellConst.MaxEffects);
|
||||
public ulong Stances { get; set; }
|
||||
public ulong StancesNot { get; set; }
|
||||
public SpellCastTargetFlags targets { get; set; }
|
||||
|
||||
@@ -2499,6 +2499,9 @@ namespace Game.Entities
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!spellInfo._IsPositiveEffect(effect.EffectIndex, false))
|
||||
spellInfo.NegativeEffects[(int)effect.EffectIndex] = true;
|
||||
}
|
||||
|
||||
// spells ignoring hit result should not be binary
|
||||
@@ -2587,15 +2590,6 @@ namespace Game.Entities
|
||||
spellInfo.AttributesCu |= SpellCustomAttributes.SchoolmaskNormalWithMagic;
|
||||
}
|
||||
|
||||
if (!spellInfo._IsPositiveEffect(0, false))
|
||||
spellInfo.AttributesCu |= SpellCustomAttributes.NegativeEff0;
|
||||
|
||||
if (!spellInfo._IsPositiveEffect(1, false))
|
||||
spellInfo.AttributesCu |= SpellCustomAttributes.NegativeEff1;
|
||||
|
||||
if (!spellInfo._IsPositiveEffect(2, false))
|
||||
spellInfo.AttributesCu |= SpellCustomAttributes.NegativeEff2;
|
||||
|
||||
if (talentSpells.Contains(spellInfo.Id))
|
||||
spellInfo.AttributesCu |= SpellCustomAttributes.IsTalent;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user