diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 39 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 5 | ||||
-rw-r--r-- | src/game/Unit.cpp | 22 |
3 files changed, 60 insertions, 6 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 5f39e3f585c..9313b7e6fd4 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1162,6 +1162,7 @@ void Aura::HandleAddModifier(bool apply, bool Real) case 57761: // Fireball! SetAuraCharges(1); break; + } SpellModifier *mod = new SpellModifier; @@ -1955,6 +1956,44 @@ void Aura::HandleAuraDummy(bool apply, bool Real) if(caster) caster->CastSpell(caster,13138,true,NULL,this); return; + case 34026: // kill command + { + Unit * pet = m_target->GetPet(); + if (!pet) + return; + + m_target->CastSpell(m_target,34027,true,NULL,this); + + // set 3 stacks and 3 charges (to make all auras not disappear at once) + Aura* owner_aura = m_target->GetAura(34027,0); + Aura* pet_aura = pet->GetAura(58914,0); + if( owner_aura ) + { + owner_aura->SetStackAmount(owner_aura->GetSpellProto()->StackAmount); + } + if( pet_aura ) + { + pet_aura->SetAuraCharges(0); + pet_aura->SetStackAmount(owner_aura->GetSpellProto()->StackAmount); + } + return; + } + case 55198: // Tidal Force + { + m_target->CastSpell(m_target,55166,true,NULL,this); + // set 3 stacks and 3 charges (to make all auras not disappear at once) + Aura* owner_aura = m_target->GetAura(55166,0); + if( owner_aura ) + { + // This aura lasts 2 sec, need this hack to properly proc spells + // TODO: drop aura charges for ApplySpellMod in ProcDamageAndSpell + SetAuraDuration(owner_aura->GetAuraDuration()); + // Make aura be not charged-this prevents removing charge on not crit spells + owner_aura->SetAuraCharges(0); + owner_aura->SetStackAmount(owner_aura->GetSpellProto()->StackAmount); + } + return; + } case 39850: // Rocket Blast if(roll_chance_i(20)) // backfire stun m_target->CastSpell(m_target, 51581, true, NULL, this); diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 9a9682a1b16..e42e5dc4488 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2395,11 +2395,6 @@ void SpellMgr::LoadSpellCustomAttr() if(spellInfo->SpellFamilyFlags[2] & 0x100) spellInfo->MaxAffectedTargets = 2; break; - case SPELLFAMILY_PRIEST: - // Penance - if (spellInfo->SpellFamilyFlags[1] & 0x800000) - spellInfo->AttributesEx5 |= SPELL_ATTR_EX5_START_PERIODIC_AT_APPLY; - break; } } } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ba88aa1cde3..720bcc55a0d 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5388,6 +5388,18 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu target = this; break; } + // Kill command + case 58914: + { + // Remove aura stack from pet + RemoveSingleSpellAurasFromStack(58914); + Unit* owner = GetOwner(); + if(!owner) + return true; + // reduce the owner's aura stack + owner->RemoveSingleSpellAurasFromStack(34027); + return true; + } // Vampiric Touch (generic, used by some boss) case 52723: case 60501: @@ -6345,8 +6357,16 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu triggered_spell_id = 16086; break; } + // Tidal Force + case 55198: + { + // Remove aura stack from caster + RemoveSingleSpellAurasFromStack(55166); + // drop charges + return false; + } // Totemic Power (The Earthshatterer set) - case 28823: + case 28823: { if( !pVictim ) return false; |