Jump to content

MrLama

Members
  • Posts

    50
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by MrLama

  1. What bug does the patch fix? What features does the patch add? Increases the damage done by your Seal of Righteousness by 15%. Missing DBC entry workaround. For which repository revision was the patch created? 8994 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. --- Who has been writing this patch? Please include either forum user names or email addresses. Me Link to patch: http://pastebin.com/m483951c0 diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 186d538..2651b7e 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1376,6 +1376,8 @@ void Aura::HandleAddModifier(bool apply, bool Real) if(m_modifier.m_miscvalue >= MAX_SPELLMOD) return; + uint64 modMaskAddition = 0; + uint64 modMask2Addition = 0; if (apply) { // Add custom charges for some mod aura @@ -1392,6 +1394,14 @@ void Aura::HandleAddModifier(bool apply, bool Real) case 57761: // Fireball! SetAuraCharges(1); break; + case 20224: // Seals of the Pure (Rank 1) + case 20225: // Seals of the Pure (Rank 2) + case 20330: // Seals of the Pure (Rank 3) + case 20331: // Seals of the Pure (Rank 4) + case 20332: // Seals of the Pure (Rank 5) + if( m_effIndex == 0 ) + modMaskAddition = UI64LIT(0x20000000) << 32; + break; } SpellModifier *mod = new SpellModifier; @@ -1410,8 +1420,8 @@ void Aura::HandleAddModifier(bool apply, bool Real) return; } - mod->mask = (uint64)ptr[0] | (uint64)ptr[1]<<32; - mod->mask2= (uint64)ptr[2]; + mod->mask = (uint64)ptr[0] | (uint64)ptr[1]<<32 | modMaskAddition; + mod->mask2 = (uint64)ptr[2] | modMask2Addition; // prevent expire spell mods with (charges > 0 && m_stackAmount > 1) // all this spell expected expire not at use but at spell proc event check
  2. What bug does the patch fix? What features does the patch add? While Clearcasting from Elemental Focus is active, you deal % more spell damage. Missing DBC entry workaround. For which repository revision was the patch created? 8994 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. --- Who has been writing this patch? Please include either forum user names or email addresses. Me Link to patch: http://pastebin.com/m178ff86c diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 186d538..b229aa1 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -5617,6 +5657,25 @@ void Aura::HandleModDamagePercentDone(bool apply, bool Real) return; } + // Elemental Oath - Damage increase on Clearcasting + if ( GetId() == 16246 ) + { + Unit::AuraList const& auras = m_target->GetAurasByType(SPELL_AURA_PROC_TRIGGER_SPELL); + for ( Unit::AuraList::const_iterator i = auras.begin(); i != auras.end(); i++ ) + { + switch((*i)->GetId()) + { + case 51466: + case 51470: + m_modifier.m_amount += (*i)->GetSpellProto()->CalculateSimpleValue(1); + break; + default: + continue; + } + break; + } + } +
  3. What bug does the patch fix? What features does the patch add? implemented mana restore part for Empowered Fire For which repository revision was the patch created? 8994 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. --- Who has been writing this patch? Please include either forum user names or email addresses. Me DB part ( it is PROC_FLAG_TAKEN_ANY_DAMAGE + PROC_FLAG_ON_TRAP_ACTIVATION otherwise it doesn't work for me ) : DELETE FROM spell_proc_event WHERE entry = 12654; INSERT INTO spell_proc_event (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES ('12654', '0', '3', '134217728', '0', '0', '3145728', '0', '0', '100', '0'); Core part: diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 35a478b..11f3afc 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3016,6 +3024,7 @@ void Spell::EffectEnergize(uint32 i) break; case 31930: // Judgements of the Wise case 63375: // Improved Stormstrike + case 67545: // Empowered Fire damage = damage * unitTarget->GetCreateMana() / 100; break; default: diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 5bcac41..bf9ab45 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5386,6 +5386,36 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu CastSpell(this, 28682, true, castItem, triggeredByAura); return (procEx & PROC_EX_CRITICAL_HIT); // charge update only at crit hits, no hidden cooldowns } + // Empowered Fire ( mana regen ) + case 12654: + { + Unit* caster = triggeredByAura->GetCaster(); + // it should not be triggered from other ignites + if ( caster && pVictim && caster->GetGUID() == pVictim->GetGUID() ) + { + Unit::AuraList const& auras = caster->GetAurasByType(SPELL_AURA_ADD_FLAT_MODIFIER); + for ( Unit::AuraList::const_iterator i = auras.begin(); i != auras.end(); i++ ) + { + switch((*i)->GetId()) + { + case 31656: + case 31657: + case 31658: + { + if( roll_chance_i( int32((*i)->GetSpellProto()->procChance)) ) + { + caster->CastSpell( caster, 67545, true ); + return true; + } + else + return false; + + } + } + } + } + return false; + } // Glyph of Ice Block case 56372: {
  4. Thanks, this is good to know.
  5. Yes, it needs something like this or this is the way how I solved it diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index f7ce356..5a53afe 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2439,6 +2439,7 @@ void Spell::cancel() void Spell::cast(bool skipCheck) { SetExecutedCurrently(true); + bool immidiateHandle = true; // update pointers base at GUIDs to prevent access to non-existed already object UpdatePointers(); @@ -2488,6 +2489,8 @@ void Spell::cast(bool skipCheck) AddPrecastSpell(23230); // Blood Fury - Healing Reduction else if(m_spellInfo->Id == 20594) // Stoneskin AddTriggeredSpell(65116); // Stoneskin - armor 10% for 8 sec + else if (m_spellInfo->Id == 14157) + immidiateHandle = false; // Ruthlessness add combo point break; } case SPELLFAMILY_MAGE: @@ -2556,6 +2567,8 @@ void Spell::cast(bool skipCheck) // Heroism else if (m_spellInfo->Id == 32182) AddPrecastSpell(57723); // Exhaustion + else if (m_spellInfo->Id == 63685) + immidiateHandle = false; // Frozen Power root effect break; } default: @@ -2592,7 +2619,7 @@ void Spell::cast(bool skipCheck) SendSpellGo(); // we must send smsg_spell_go packet before m_castItem delete in TakeCastItem()... // Okay, everything is prepared. Now we need to distinguish between immediate and evented delayed spells - if (m_spellInfo->speed > 0.0f) + if (m_spellInfo->speed > 0.0f || !immidiateHandle) { // Remove used for cast item if need (it can be already NULL after TakeReagents call
  6. there is little catch about it. It scales with 37,7% spellpower OR 22% attack power per tick ( which gives higher bonus to healing is added).
  7. I got a message from a player with a request to fix this so I did it without looking for patch. Often it is the fastest way Personaly, I don't care which name patch would carry. I just shared my idea hoping somebody finds it useful
  8. I was writing this path myself. If there if some similiarity to other patch it's purely coincidental, because I wasn't aware that other patch exists up to this moment
  9. What bug does the patch fix? What features does the patch add? Effect proc of Glyph of Blocking when Shield Slam is used UPDATE: added Glyph of Devastate For which repository revision was the patch created? 8994 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. --- Who has been writing this patch? Please include either forum user names or email addresses. Me DB part DELETE FROM spell_proc_event WHERE entry = 58375; INSERT INTO spell_proc_event (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES ('58375', '0', '4', '0', '512', '0', '16', '0', '0', '100', '0'); DELETE FROM spell_proc_event WHERE entry = 58388; INSERT INTO spell_proc_event (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES ('58388', '0', '4', '0', '64', '0', '16', '0', '0', '100', '0'); Core part diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 5bcac41..d221882 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5452,20 +5452,32 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu break; } - // Sweeping Strikes - if (dummySpell->Id == 12328) - { - // prevent chain of triggered spell from same triggered spell - if(procSpell && procSpell->Id == 26654) - return false; - - target = SelectNearbyTarget(pVictim); - if(!target) - return false; - - triggered_spell_id = 26654; - break; - } + switch ( dummySpell->Id ) + { + case 12328: // Sweeping Strikes + { + // prevent chain of triggered spell from same triggered spell + if(procSpell && procSpell->Id == 26654) + return false; + + target = SelectNearbyTarget(pVictim); + if(!target) + return false; + + triggered_spell_id = 26654; + break; + } + case 58375: // Glyph of Blocking + { + triggered_spell_id = 58374; + break; + } + case 58388: // Glyph of Devastate + { + triggered_spell_id = 58567; + break; + } + } break; } case SPELLFAMILY_WARLOCK:
  10. What bug does the patch fix? What features does the patch add? Adds Faerie Fire (Feral) damage, when in bear form. For which repository revision was the patch created? 8994 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. --- Who has been writing this patch? Please include either forum user names or email addresses. Me DB part DELETE FROM spell_bonus_data WHERE entry = 60089; INSERT INTO spell_bonus_data VALUES (60089,0,0,0.05,"Druid - Faerie Fire (Feral)"); Core part diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index f7ce356..1b0aadf 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2522,6 +2522,14 @@ void Spell::cast(bool skipCheck) } break; } + case SPELLFAMILY_DRUID: + { + // Faerie Fire (Feral) + if( m_spellInfo->Id == 16857 && m_caster->m_form != FORM_CAT ) + AddTriggeredSpell(60089); + + break; + } case SPELLFAMILY_ROGUE: // Fan of Knives (main hand) if (m_spellInfo->Id == 51723 && m_caster->GetTypeId() == TYPEID_PLAYER &&
  11. Where pls? Because I am currently running with this patch succesfuly
  12. small update to previous post. Added scaling damage with stack amount to periodic damage of Seal of Corruption / Vengeace Also bump
  13. I updated patch. Hope KAPATEJIb doesn't mind ( db part is in the first post ) compatible revision 8994 added proc conditions for periodic damage Holy Vengenace and Blood Corruption added Hammer of the Righteous as condition to Seal of Command multitarget proc added scaling damage with stack amount to periodic damage of Seal of Corruption / Vengeace minor modifications to multiplication in formulas (float * float and int * int instead of float * int ) Here is link ( forum diff doesn't like those brackets ][ for some reason ) http://pastebin.com/m5a19897e diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index f7ce356..d2679bf 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2576,6 +2576,20 @@ void Spell::cast(bool skipCheck) FillTargetMap(); + // let not attack nearby enemies when Seal of Command is not triggered by single target attack + if (m_spellInfo->Id == 20424) + { + bool aoeAttack = false; + if( m_caster->FindCurrentSpellBySpellId(53385) ) // Divine Storm + aoeAttack = true; + if( m_caster->FindCurrentSpellBySpellId(53595) ) // Hammer of the Righteous + aoeAttack = true; + + if( aoeAttack ) + for (int numTargets = m_UniqueTargetInfo.size(); numTargets > 1; numTargets--) + m_UniqueTargetInfo.pop_back(); + } + if(m_spellState == SPELL_STATE_FINISHED) // stop cast if spell marked as finish somewhere in FillTargetMap { SetExecutedCurrently(false); diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 186d538..2ae265a 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -4782,6 +4782,22 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real) } break; } + case SPELLFAMILY_PALADIN: + { + // Holy Vengeance / Blood Corruption + if ( m_spellProto->SpellIconID == 2292 && m_spellProto->SpellVisual[0] == 7902 ) + { + if (caster->GetTypeId() != TYPEID_PLAYER) + return; + // AP * 0.025 + SPH * 0.013 bonus per tick + float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = ((Player*)caster)->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) + + ((Player*)caster)->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellProto), GetTarget()); + m_modifier.m_amount += int32(GetStackAmount()) * (int32(ap * 0.025f) + int32(holy * 13 / 1000)); + return; + } + break; + } default: break; } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 35a478b..64f160e 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -641,8 +641,16 @@ void Spell::EffectSchoolDMG(uint32 effect_idx) } case SPELLFAMILY_PALADIN: { + // Judgement of Righteousness - receive benefit from Spell Damage and Attack power + if (m_spellInfo->Id == 20187) + { + 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.2f) + int32(holy * 32 / 100); + } // 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 & UI64LIT(0x800000000)) && m_spellInfo->SpellIconID==2292) + else if ((m_spellInfo->SpellFamilyFlags & UI64LIT(0x800000000)) && m_spellInfo->SpellIconID==2292) { uint32 debuf_id; switch(m_spellInfo->Id) @@ -1836,14 +1844,6 @@ void Spell::EffectDummy(uint32 i) switch(m_spellInfo->Id) { - // Judgement of Righteousness (0.2*$AP+0.32*$SPH) holy added in spellDamagBonus - case 20187: - { - if (!unitTarget) - return; - m_damage+=int32(0.2f*m_caster->GetTotalAttackPowerValue(BASE_ATTACK)); - return; - } case 31789: // Righteous Defense (step 1) { if (m_caster->GetTypeId() != TYPEID_PLAYER) @@ -2664,8 +2664,16 @@ void Spell::EffectHeal( uint32 /*i*/ ) int32 addhealth = damage; + // Seal of Light proc + if (m_spellInfo->Id == 20167) + { + float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellInfo)) + + caster->SpellBaseHealingBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); + addhealth += int32(ap * 0.15) + int32(holy * 15 / 100); + } // Vessel of the Naaru (Vial of the Sunwell trinket) - if (m_spellInfo->Id == 45064) + else if (m_spellInfo->Id == 45064) { // Amount of heal - depends from stacked Holy Energy int damageAmount = 0; @@ -4654,12 +4662,13 @@ void Spell::EffectWeaponDmg(uint32 i) } case SPELLFAMILY_PALADIN: { - // Seal of Command - receive benefit from Spell Damage and Healing - if(m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000002000000)) + // Judgement of Command - receive benefit from Spell Damage and Attack Power + if(m_spellInfo->SpellFamilyFlags & UI64LIT(0x00020000000000)) { - spellBonusNeedWeaponDamagePercentMod = true;// apply weaponDamagePercentMod to spell_bonus (and then to all bonus, fixes and weapon already have applied) - spell_bonus += int32(0.23f*m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo))); - spell_bonus += int32(0.29f*m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget)); + float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + + m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); + spell_bonus += int32(ap * 0.08f) + int32(holy * 13 / 100); } break; } @@ -4805,18 +4814,6 @@ void Spell::EffectWeaponDmg(uint32 i) if(m_caster->GetTypeId()==TYPEID_PLAYER) ((Player*)m_caster)->AddComboPoints(unitTarget, 1); } - else if(m_spellInfo->SpellFamilyName==SPELLFAMILY_PALADIN) - { - // Judgement of Blood/of the Martyr backlash damage (33%) - if(m_spellInfo->SpellFamilyFlags & 0x0000000800000000LL && m_spellInfo->SpellIconID==153) - { - int32 damagePoint = m_damage * 33 / 100; - if(m_spellInfo->Id == 31898) - m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true); - else - m_caster->CastCustomSpell(m_caster, 53725, &damagePoint, NULL, NULL, true); - } - } // take ammo if(m_attackType == RANGED_ATTACK && m_caster->GetTypeId() == TYPEID_PLAYER) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index bc98152..8bbbfdb 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1649,7 +1649,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons if ((spellInfo_1->SpellIconID == 1487) && (spellInfo_2->SpellIconID == 1487)) return false; - } + // Seal of Corruption + if (spellInfo_1->SpellIconID == 2292 && spellInfo_2->SpellIconID == 2292) + return false; + } // Blessing of Sanctuary (multi-family check, some from 16 spell icon spells) if (spellInfo_2->Id == 67480 && spellInfo_1->Id == 20911) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 5bcac41..1640625 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6095,8 +6095,8 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu { if(effIndex != 0) // effect 1,2 used by seal unleashing code return false; - - triggered_spell_id = 31803; + if( ( procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT ) || ( procSpell && procSpell->Id == 53595 ) ) + triggered_spell_id = 31803; // Add 5-stack effect int8 stacks = 0; @@ -6196,7 +6196,8 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu if(effIndex != 0) // effect 1,2 used by seal unleashing code return false; - triggered_spell_id = 53742; + if( ( procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT ) || ( procSpell && procSpell->Id == 53595 ) ) + triggered_spell_id = 53742; // Add 5-stack effect int8 stacks = 0; @@ -9003,17 +9004,6 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM break; } case SPELL_DAMAGE_CLASS_MELEE: - { - // Judgement of Command proc always crits on stunned target - if(spellProto->SpellFamilyName == SPELLFAMILY_PALADIN) - { - if(spellProto->SpellFamilyFlags & 0x0000000000800000LL && spellProto->SpellIconID == 561) - { - if(pVictim->hasUnitState(UNIT_STAT_STUNNED)) - return true; - } - } - } case SPELL_DAMAGE_CLASS_RANGED: { if (pVictim)
  14. Ok, I modified code a little (updated first post) and added Sheath of Light too. It has same effect as Righteous Vengeance but it is periodic heal.
  15. Performed little modifications - one if instead of two in for loop - changed calculation to work with unmodified aura damage, because modifications will be applied later on new aura.
  16. What bug does the patch fix? What features does the patch add? It replaces old formula ${0.10*$AP+0.10*$SPH} ( patch 3.1.3 ) with a new one 2% of maximum health ( patch 3.2.x) For which repository revision was the patch created? Rev. 8918 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. --- Who has been writing this patch? Please include either forum user names or email addresses. Myself diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index a43c520..69f1770 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5892,14 +5951,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu // Judgement of Light case 20185: { - // Get judgement caster - Unit *caster = triggeredByAura->GetCaster(); - if (!caster) - return false; - float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK); - int32 holy = caster->SpellBaseDamageBonus(SPELL_SCHOOL_MASK_HOLY) + - caster->SpellBaseDamageBonusForVictim(SPELL_SCHOOL_MASK_HOLY, this); - basepoints0 = int32(ap*0.10f + 0.10f*holy); + basepoints0 = int32( pVictim->GetMaxHealth() * 2 / 100 ); pVictim->CastCustomSpell(pVictim, 20267, &basepoints0, NULL, NULL, true, NULL, triggeredByAura); return true; }
  17. But where to add damage from the first weapon effect when only calculated weapon effect is the last one?
  18. I don't know. I just modified hardcoded trigger and said to myself " It was hardcoded for some reason"
  19. Here is my fix. SpellEffects.cpp, EffectWeaponDmg() + case SPELLFAMILY_HUNTER: + { + // Kill Shot + if( m_spellInfo->SpellFamilyFlags & UI64LIT(0x80000000000000) ) + { + spellBonusNeedWeaponDamagePercentMod = true; + spell_bonus += m_spellInfo->EffectBasePoints[0]; + spell_bonus += int32( 0.2f * m_caster->GetTotalAttackPowerValue(RANGED_ATTACK) ); + } + break; + } case SPELLFAMILY_PALADIN:
  20. And I forgot to mention that DoT from SoV / SoCorr should be triggered only from autoattack and Hammer of the Righteous. Unit.cpp, HandleDummyAuraProc() // Seal of Vengeance (damage calc on apply aura) case 31801: { if(effIndex != 0) // effect 1,2 used by seal unleashing code return false; + if( ( procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT ) || ( procSpell && procSpell->Id == 53595 ) ) triggered_spell_id = 31803; // Seal of Corruption (damage calc on apply aura) case 53736: { if(effIndex != 0) // effect 1,2 used by seal unleashing code return false; + if( ( procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT ) || ( procSpell && procSpell->Id == 53595 ) ) triggered_spell_id = 53742;
  21. Thanks for a nice patch. Just a little reminder to Holy Vengeance/ Blood Corruption. It seems to me that you left out a caster->SpellBaseDamageBonusForVictim( GetSpellSchoolMask( m_spellProto ), GetTarget() ) in holy calculation. And maybe to make it complete you can add Seal of Light functionality? Here is my solution: SpellEffect.cpp void Spell::EffectHeal( uint32 /*i*/ ) { if (unitTarget && unitTarget->isAlive() && damage >= 0) { // Try to get original caster Unit *caster = m_originalCasterGUID ? m_originalCaster : m_caster; // Skip if m_originalCaster not available if (!caster) return; int32 addhealth = damage; + // Seal of Light proc + if ( m_spellInfo->Id == 20167 ) + { + float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellInfo)) + + caster->SpellBaseHealingBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); + addhealth += int32( ap * 0.15 ) + int32(holy * 15 / 100 ); + } // Vessel of the Naaru (Vial of the Sunwell trinket) - if (m_spellInfo->Id == 45064) + else if (m_spellInfo->Id == 45064) and delete entry from spell_bonus_data for 20167 (don't know why DB koeficients are ignored)
  22. They can miss and be resisted because I have this check if ( IsPositiveSpell(spell->Id) && IsFriendlyTo(pVictim) ) instead of classic one if ( IsPositiveSpell(spell->Id)) and later there is no friendly check
  23. Here is my parcial hack fix to mirror image: It summons 3 ghosts ( default visage ) and they cast. SpellEfects.cpp EffectSummonType() case SUMMON_TYPE_GUARDIAN2: case SUMMON_TYPE_GUARDIAN3: + case 1021: //SUMMON_TYPE_MIRROR_IMAGE for future // Jewelery statue case (totem like) if(m_spellInfo->SpellIconID == 2056) EffectSummonTotem(i); else EffectSummonGuardian(i); break; EffectSummonGuardian() if (m_caster->GetTypeId() == TYPEID_PLAYER && (duration <= 0 || GetSpellRecoveryTime(m_spellInfo) == 0)) - if(m_caster->FindGuardianWithEntry(pet_entry)) + if(m_caster->FindGuardianWithEntry(pet_entry) && pet_entry != 31216 ) return; // find old guardian, ignore summon spawnCreature->InitStatsForLevel(level, m_caster); +if( pet_entry == 31216 ) +{ + spawnCreature->SetBonusDamage( int32( m_caster->SpellBaseDamageBonus( SPELL_SCHOOL_MASK_FROST ) * 0.33f ) ); + spawnCreature->SetCreateMana(28 + 30 * level); + if (addSpell( 59637 ) ) + ToggleAutocast( 59637, true ); + + if (addSpell( 59638 ) ) + ToggleAutocast( 59638, true ); +}
  24. Dispel Magic can dispell immunity spell because of this piece of code in SpellMissInfo Unit::SpellHitResult() if (IsPositiveSpell(spell->Id)) return SPELL_MISS_NONE; Now I use this instead and problem solved if (IsPositiveSpell(spell->Id) && IsFriendlyTo(pVictim)) return SPELL_MISS_NONE; For Mass Dispel I used hacky way ( it includes pevious code ) // Mass Dispel bypass immunity if( !( spell->Id == 32375 || spell->Id == 32592 || spell->Id == 39897 ) ) { // Check for immune if (pVictim->IsImmunedToSpell(spell)) { if( spell->Id == 64382 ) pVictim->RemoveSpellsCausingAura(SPELL_AURA_MECHANIC_IMMUNITY); return SPELL_MISS_IMMUNE; } // All positive spells can`t miss // TODO: client not show miss log for this spells - so need find info for this in dbc and use it! if (IsPositiveSpell(spell->Id) && IsFriendlyTo(pVictim)) return SPELL_MISS_NONE; // Check for immune if (pVictim->IsImmunedToDamage(GetSpellSchoolMask(spell))) return SPELL_MISS_IMMUNE; } else if (IsPositiveSpell(spell->Id) && IsFriendlyTo(pVictim)) return SPELL_MISS_NONE;
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use