diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 23 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 24 | ||||
-rw-r--r-- | src/game/SpellMgr.h | 1 |
3 files changed, 23 insertions, 25 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 0a462bc273a..c378c01371e 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -940,19 +940,20 @@ void Aura::_RemoveAura() if(slot >= MAX_AURAS) // slot not set return; - AuraSlotEntry *entry = m_target->GetVisibleAura(slot); - if(!entry) //slot already removed-shouldn't happen - return; - - entry->m_slotAuras[GetEffIndex()]=NULL; //unregister aura + bool lastaura=true; - bool lastaura = true; - for(uint8 i = 0; i < 3; ++i) //check slot for more auras of the spell + AuraSlotEntry *entry = m_target->GetVisibleAura(slot); + if (entry) { - if(entry->m_slotAuras[i]) + entry->m_slotAuras[GetEffIndex()]=NULL; //unregister aura + for(uint8 i = 0; i < 3; ++i) //check slot for more auras of the spell { - lastaura = false; - break; + if(entry->m_slotAuras[i]) + { + lastaura = false; + break; + } + } } @@ -977,7 +978,7 @@ void Aura::_RemoveAura() foundMask|=(*i).second->GetAuraStateMask(); } // Remove only aurastates which were not found - foundMask&=~GetAuraStateMask(); + foundMask = GetAuraStateMask() &~foundMask; if (foundMask) m_target->ApplyModFlag(UNIT_FIELD_AURASTATE, foundMask, false); } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 4ba282a6aab..01bf60ccde1 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -620,7 +620,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) case SPELLFAMILY_PALADIN: { // Judgement of Vengeance/Corruption ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance/Blood Corruption on the target - if((m_spellInfo->SpellFamilyFlags[1] & 0x800) && m_spellInfo->SpellIconID==2292) + if((m_spellInfo->SpellFamilyFlags[1] & 0x400000) && m_spellInfo->SpellIconID==2292) { float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + @@ -639,21 +639,17 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) if(stacks) damage += damage * stacks * 10 /100; } - // Avenger's Shield ($m1+0.07*$SPH+0.07*$AP) - ranged sdb for future + // Avenger's Shield ($m1+0.07*$SPH+0.07*$AP) else if(m_spellInfo->SpellFamilyFlags[0] & 0x4000) { float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); - int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + - m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); - damage += int32(ap * 0.07f) + int32(holy * 7 / 100); + damage += int32(ap * 0.07f); } - // Hammer of Wrath ($m1+0.15*$SPH+0.15*$AP) - ranged type sdb future fix + // Hammer of Wrath ($m1+0.15*$SPH+0.15*$AP) else if(m_spellInfo->SpellFamilyFlags[1] & 0x00000080) { float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); - int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + - m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); - damage += int32(ap * 0.15f) + int32(holy * 15 / 100); + damage += int32(ap * 0.15f); } // Hammer of the Righteous else if(m_spellInfo->SpellFamilyFlags[1]&0x00040000) @@ -5148,26 +5144,26 @@ void Spell::EffectScriptEffect(uint32 effIndex) if (aura->GetCasterGUID() != m_caster->GetGUID()) continue; // Search only Serpent Sting, Viper Sting, Scorpid Sting auras - uint64 familyFlag = aura->GetSpellProto()->SpellFamilyFlags; - if (!(familyFlag & 0x000000800000C000LL)) + flag96 familyFlag = aura->GetSpellProto()->SpellFamilyFlags; + if (!(familyFlag[1] & 0x00000080 || familyFlag[0] & 0x0000C000)) continue; // Refresh aura duration aura->RefreshAura(); // Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting. - if (familyFlag & 0x0000000000004000LL && aura->GetEffIndex() == 0) + if (familyFlag[0] & 0x4000 && aura->GetEffIndex() == 0) { spellId = 53353; // 53353 Chimera Shot - Serpent basePoint = aura->GetModifier()->m_amount * 5 * 40 / 100; } // Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting. - if (familyFlag & 0x0000008000000000LL && aura->GetEffIndex() == 0) + if (familyFlag[1] & 0x00000080 && aura->GetEffIndex() == 0) { spellId = 53358; // 53358 Chimera Shot - Viper basePoint = aura->GetModifier()->m_amount * 4 * 60 / 100; } // Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute. - if (familyFlag & 0x0000000000008000LL) + if (familyFlag[0] & 0x00008000) spellId = 53359; // 53359 Chimera Shot - Scorpid // ?? nothing say in spell desc (possibly need addition check) //if (familyFlag & 0x0000010000000000LL || // dot diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 75615eaf3a0..19eddbe368a 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -573,6 +573,7 @@ enum ProcFlags PROC_FLAG_TAKEN_OFFHAND_HIT = 0x00400000, // 22 Taken off-hand melee attacks(not used) PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks +// PROC_FLAG_DEATH = 0x01000000 }; #define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \ |