*Correct positivity of some spells

--HG--
branch : trunk
This commit is contained in:
QAston
2009-04-14 19:09:08 +02:00
parent ecbaf6483d
commit 6c44316d8e
3 changed files with 32 additions and 14 deletions
+4
View File
@@ -0,0 +1,4 @@
DELETE FROM `spell_proc_event` WHERE `entry` IN (44545, 44543);
INSERT INTO `spell_proc_event` VALUES
(44545, 0x00, 3, 1049120, 4096, 0, 65536, 0x0000000, 0.000000, 15.000000, 0),
(44543, 0x00, 3, 1049120, 4096, 0, 65536, 0x0000000, 0.000000, 7.000000, 0),
+11 -13
View File
@@ -426,24 +426,22 @@ m_auraSlot(MAX_AURAS), m_auraLevel(1), m_procCharges(0), m_stackAmount(1),m_aura
// Aura is positive when it is casted by friend and at least one aura is positive
// or when it is casted by enemy and at least one aura is negative
bool swap=false;
if (!caster || caster==target)
m_positive=IsPositiveSpell(m_spellProto->Id);
if (!caster || caster==target) // caster == target - 1 negative effect is enough for aura to be negative
m_positive = false;
else
{
m_positive = !caster->IsHostileTo(m_target);
for (uint8 i=0;i<MAX_SPELL_EFFECTS;++i)
for (uint8 i=0;i<MAX_SPELL_EFFECTS;++i)
{
if (!(1<<i & GetEffectMask()))
continue;
if (m_positive == IsPositiveEffect(GetId(), i))
{
if (!(1<<i & GetEffectMask()))
continue;
if (m_positive == IsPositiveEffect(GetId(), i))
{
swap = true;
break;
}
swap = true;
break;
}
if (!swap)
m_positive=!m_positive;
}
if (!swap)
m_positive=!m_positive;
}
Aura::~Aura()
+17 -1
View File
@@ -676,7 +676,23 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex, bool deep)
{
case SPELLMOD_COST: // dependent from bas point sign (negative -> positive)
if(spellproto->CalculateSimpleValue(effIndex) > 0)
return false;
{
if (!deep)
{
bool negative = true;
for (uint8 i=0;i<MAX_SPELL_EFFECTS;++i)
{
if (i != effIndex)
if (IsPositiveEffect(spellId, i, true))
{
negative = false;
break;
}
}
if (negative)
return false;
}
}
break;
default:
break;