MrLama
-
Posts
50 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by MrLama
-
-
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:
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; + } + } +
-
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: {
-
better use AddTriggeredSpell(), that way it always procs after the original spell its done
Thanks, this is good to know.
-
probably the damage part of the spell breaks roots early (race condition)
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
-
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).
-
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
-
are you sure? i saw the same patch here http://spezies0815.datearea.de/ and it's not your....!
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
-
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:
-
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 &&
-
thank you but you have also some typpos like missing ";"
Where pls? Because I am currently running with this patch succesfuly
-
small update to previous post.
Added scaling damage with stack amount to periodic damage of Seal of Corruption / Vengeace
Also bump
-
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 )
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)
-
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.
-
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.
-
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; }
-
Sry wrong topic
-
very good idea but
m_spellInfo->SpellFamilyFlags & UI64LIT(0x80000000000000) ) + { + spellBonusNeedWeaponDamagePercentMod = true; + spell_bonus += m_spellInfo->EffectBasePoints[0]; + spell_bonus += int32( 0.2f * m_caster->GetTotalAttackPowerValue(RANGED_ATTACK) ); + }
hack fix?:confused:
But where to add damage from the first weapon effect when only calculated weapon effect is the last one?
-
Updated for 8882. Also added seal of light fix
maybe this should be handled by spell_proc_event table?
I don't know. I just modified hardcoded trigger and said to myself " It was hardcoded for some reason"
-
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:
-
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;
-
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)
-
Good idea, but you forgot - dispel should be considered as negative spell if target isn't friendly. So dispel and mass dispel can be resisted. With your patch it never be resisted (because they still positive).
need something like
case SPELL_EFFECT_DISPEL: { if (m_caster->IsFriendlyTo(pVictim)) return true; else return false; break; }
in bool IsPositiveEffect (SpellMgr.cpp)
But this doesn't work because m_caster and pVictim isn't declared in SpellMgr.cpp
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
-
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 ); +}
-
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;
[Fix] Seals of the Pure
in ... under reviewOld
Posted
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