Jump to content

MrLama

Members
  • Posts

    50
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by MrLama

  1. What bug does the patch fix? What features does the patch add?

    implement Death Rune Mastery, Reaping, Blood of the North

    For which repository revision was the patch created?

    10199

    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

    Core:

    http://pastebin.com/AZynWbkS

    DB (9 slot spell family mask):

    DELETE FROM spell_proc_event WHERE entry IN (54639, 49467, 49208);

    INSERT INTO spell_proc_event VALUES

    /* Death Rune Mastery*/

    (49467, 0, 15, 16, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),

    /* Blood of the North*/

    (54639, 0, 15, 4194304, 0, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),

    /*Reaping*/

    (49208, 0, 15, 4194304, 0, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

    DB (3 slot spell family mask):

    DELETE FROM spell_proc_event WHERE entry IN (54639, 49467, 49208);

    INSERT INTO spell_proc_event VALUES

    /* Death Rune Mastery*/

    (49467, 0, 15, 16, 131072, 0, 0, 0, 0, 0, 0),

    /* Blood of the North*/

    (54639, 0, 15, 4194304, 65536, 0, 0, 0, 0, 0, 0),

    /*Reaping*/

    (49208, 0, 15, 4194304, 65536, 0, 0, 0, 0, 0, 0);

  2. What bug does the patch fix? What features does the patch add?

    Repentance should remove Righteous Vengeance but not other way

    For which repository revision was the patch created?

    9765

    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

    diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
    index 5a41f3b..5994c3b 100644
    --- a/src/game/SpellMgr.cpp
    +++ b/src/game/SpellMgr.cpp
    @@ -1948,6 +1948,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
                     if ((spellInfo_1->SpellIconID == 3025 && spellInfo_2->SpellIconID == 2292) ||
                         (spellInfo_1->SpellIconID == 2292 && spellInfo_2->SpellIconID == 3025))
                         return false;
    +
    +				 // Repentance removes Righteous Vengeance
    +				 if (spellInfo_1->Id == 20066 && spellInfo_2->Id == 61840)
    +					 return true;
                }
    
                // Blessing of Sanctuary (multi-family check, some from 16 spell icon spells)
    

  3. What bug does the patch fix? What features does the patch add?

    Adds spellpower coefficient to generic judgement spell. (Cannot be handled trough database due to melee nature of spell)

    For which repository revision was the patch created?

    9765

    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

    Core

    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index ccfe63a..21276c2 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -748,7 +748,10 @@ void Spell::EffectSchoolDMG(SpellEffectIndex effect_idx)
                    else if (m_spellInfo->Id == 54158)
                    {
                        // [1 + 0.25 * SPH + 0.16 * AP]
    -                    damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.16f);
    +                    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.16f) + int32(holy * 25 / 100);
                    }
                    break;
                }
    

    DB

    DELETE FROM spell_bonus_data WHERE entry = 54158;
    

  4. What bug does the patch fix? What features does the patch add?

    added socket from blacksmith shouldn't break socket bonus

    For which repository revision was the patch created?

    9605

    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

    http://pastebin.com/PZm0z3ne

    diff --git a/src/game/Item.cpp b/src/game/Item.cpp
    index 2f5deaa..0a05fa5 100644
    --- a/src/game/Item.cpp
    +++ b/src/game/Item.cpp
    @@ -868,6 +868,7 @@ bool Item::GemsFitSockets() const
                }
            }
    
    +        SocketColor = SocketColor ? SocketColor : PRISMATIC_SOCKET; 
            fits &= (GemColor & SocketColor) ? true : false;
        }
        return fits;
    diff --git a/src/game/Item.h b/src/game/Item.h
    index fcf6418..cca82f3 100644
    --- a/src/game/Item.h
    +++ b/src/game/Item.h
    @@ -174,7 +174,7 @@ enum EnchantmentSlot
    };
    
    #define MAX_VISIBLE_ITEM_OFFSET       2                     // 2 fields per visible item (entry+enchantment)
    -
    +#define PRISMATIC_SOCKET			  14					// 1110 mask = blue(1) yellow(1) red(1) meta(0)
    #define MAX_GEM_SOCKETS               MAX_ITEM_PROTO_SOCKETS// (BONUS_ENCHANTMENT_SLOT-SOCK_ENCHANTMENT_SLOT) and item proto size, equal value expected
    
    enum EnchantmentOffset
    

  5. What bug does the patch fix? What features does the patch add?

    rename missleading name for MECHANIC_PACIFY to MECHANIC_SLOWATTACK because it is used solely by auras SPELL_AURA_MOD_HASTE and SPELL_AURA_MOD_RANGED_HASTE and removing this mechanic from mask MECHANIC_NOT_REMOVED_BY_SHAPESHIFT ( example: proc spell Chilled from Ice Armor is not removed by shapeshift now)

    For which repository revision was the patch created?

    9549

    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

    http://pastebin.com/uNr1k2Cw

  6. I replaced part ( in laise's patch ) where is casted 54171 with code below to make glyph working

    @@ -3169,8 +3173,18 @@ void Spell::finish(bool ok)
    
        // Heal caster for all health leech from all targets
        if (m_healthLeech)
    -        m_caster->DealHeal(m_caster, uint32(m_healthLeech), m_spellInfo);
    -
    +    {
    +        // Divine Storm heal calculation
    +        if (m_spellInfo->Id == 53385)
    +        {
    +            SpellEffectIndex healEffIndex = EFFECT_INDEX_1;
    +            int32 healAmount = m_caster->CalculateSpellDamage(m_spellInfo, healEffIndex, m_currentBasePoints[healEffIndex], m_caster);
    +            healAmount = int32(m_healthLeech * healAmount / 100);
    +            m_caster->CastCustomSpell(m_caster, 54171, &healAmount, NULL, NULL, true);
    +        }
    +        else
    +            m_caster->DealHeal(m_caster, uint32(m_healthLeech), m_spellInfo);
    +    }
        if (IsMeleeAttackResetSpell())
        {
            m_caster->resetAttackTimer(BASE_ATTACK);
    

  7. What bug does the patch fix? What features does the patch add?

    Implements dispel resist to Spellsteal

    For which repository revision was the patch created?

    9235

    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 ( but got idea from EffectDispel )

    http://pastebin.com/m41d96d5d

    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index 90c8577..a34df1a 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    -6834,29 +6834,33 @@ void Spell::EffectStealBeneficialBuff(uint32 i)
        // Ok if exist some buffs for dispel try dispel it
        if (!steal_list.empty())
        {
    -        std::list < std::Pair<uint32,uint64> > success_list;
    -        int32 list_size = steal_list.size();
    +        std::list < std::Pair<uint32,uint64> > success_list;// (spell_id,casterGuid)
    +        std::list < uint32 > fail_list;                     // spell_id
            // Dispell N = damage buffs (or while exist buffs for dispel)
    -        for (int32 count=0; count < damage && list_size > 0; ++count)
    +		for (int32 count=0; count < damage && !steal_list.empty(); ++count)
            {
                // Random select buff for dispel
    -            Aura *aur = steal_list[urand(0, list_size-1)];
    -            // Not use chance for steal
    -            // TODO possible need do it
    -            success_list.push_back( std::Pair<uint32,uint64>(aur->GetId(),aur->GetCasterGUID()));
    +            std::vector<Aura*>::iterator steal_itr = steal_list.begin();
    +            std::advance(steal_itr,urand(0, steal_list.size()-1));
    
    -            // Remove buff from list for prevent doubles
    -            for (std::vector<Aura *>::iterator j = steal_list.begin(); j != steal_list.end(); )
    -            {
    -                Aura *stealed = *j;
    -                if (stealed->GetId() == aur->GetId() && stealed->GetCasterGUID() == aur->GetCasterGUID())
    -                {
    -                    j = steal_list.erase(j);
    -                    --list_size;
    -                }
    -                else
    -                    ++j;
    -            }
    +            Aura *aur = *steal_itr;
    +			// remove entry from steal_list
    +            steal_list.erase(steal_itr);
    +
    +            SpellEntry const* spellInfo = aur->GetSpellProto();
    +            // Base dispel chance
    +            int32 miss_chance = 0;
    +            // Apply dispel mod from aura caster
    +            if (Unit *caster = aur->GetCaster())
    +			{
    +				if ( Player* modOwner = caster->GetSpellModOwner() )
    +                    modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_RESIST_DISPEL_CHANCE, miss_chance, this);
    +			}
    +            // Try dispel
    +            if (roll_chance_i(miss_chance))
    +                fail_list.push_back(spellInfo->Id);
    +            else
    +                success_list.push_back(std::Pair<uint32,uint64>(aur->GetId(),aur->GetCasterGUID()));
            }
            // Really try steal and send log
            if (!success_list.empty())
    -6877,6 +6881,18 @@ void Spell::EffectStealBeneficialBuff(uint32 i)
                }
                m_caster->SendMessageToSet(&data, true);
            }
    +		// Send fail log to client
    +        if (!fail_list.empty())
    +        {
    +            // Failed to steal
    +            WorldPacket data(SMSG_DISPEL_FAILED, 8+8+4+4*fail_list.size());
    +            data << uint64(m_caster->GetGUID());            // Caster GUID
    +            data << uint64(unitTarget->GetGUID());          // Victim GUID
    +            data << uint32(m_spellInfo->Id);                // Steal spell id
    +            for (std::list< uint32 >::iterator j = fail_list.begin(); j != fail_list.end(); ++j)
    +				data << uint32(*j);                         // Spell Id
    +            m_caster->SendMessageToSet(&data, true);
    +        }
        }
    }
    

  8. Same as in MeleeSpellMissChance topic, dosen't work as intended.

    Moob miss very very mutch on level 80.

    Could you be more specific, please? :)

    //edit

    I can see a problem now ( I think ), mobs can have low weapon skill thus they miss a lot. I didn't find this because I tested only between players or player'S hit chance against mob but not the other way.

    Thanks

  9. Very interesting indeed, going by those 2 different formulas.

    Lets say your player level is 80 and target mob is level 81:

    5% + (Defense Skill - Weapon Skill)*.1% = 5% + (405-400)*.1% = 5.5%

    5% + (Defense Skill - Weapon Skill)*.04% = 5% + (405-400)*0.04% = 5.2%

    level 80 player against a level 82 target mob yields:

    5% + (Defense Skill - Weapon Skill)*.1% = 5% + (410-400)*.1% = 6%

    5% + (Defense Skill - Weapon Skill)*.04% = 5% + (410-400)*0.04% = 5.4%

    level 80 player against a level 83 mob (raid boss) gives:

    6% + (Defense Skill - Weapon Skill - 10)*.4% = 6% + (415-400-10)*.4% = 8%

    Going by these facts from Wowwiki:

    Applying these formulas gives the following base miss rate for a Level 80 character with a 400 Weapon Skill:

    * v. Level 80 mob: 5.0% / dual-wield: 24%

    * v. Level 81 mob: 5.5% / dual-wield: 24.5%

    * v. Level 82 mob: 6.0% / dual-wield: 25% (level of most heroic bosses)

    * v. Level 83 mob: 8.0% / dual-wield: 27% (level of raid bosses)

    I would say 5% + (Defense Skill - Weapon Skill)*.1% should be the correct formula :)

    Ok, updated first post to match better formula :)

  10. What bug does the patch fix? What features does the patch add?

    - Fixes proc of Shield of the Templar talent to be triggered only by Avenger's Shield

    For which repository revision was the patch created?

    Rev. 9100

    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

    DELETE FROM spell_proc_event WHERE entry IN (53709, 53710, 53711);
    INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
    ('53709', '0', '10', '16384', '0', '0', '256', '0', '0', '0', '0');
    
    DELETE FROM  `spell_chain` WHERE `spell_id` IN (53709, 53710, 53711);
    INSERT INTO `spell_chain` (`spell_id`, `prev_spell`, `first_spell`, `rank`, `req_spell`) VALUES
    ('53709', '0', '53709', '1', '0'),
    ('53710', '53709', '53709','2', '0'),
    ('53711', '53710', '53709', '3', '0');
    

  11. Bump and here is alsou my patch :)

    revision 9037

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 77ade4c..5b2ac72 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -3008,7 +3008,7 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
                    case FORM_DIREBEAR:
                    {
                        // get furor proc chance
    -                    uint32 FurorChance = 0;
    +                    int32 FurorChance = 0;
                        Unit::AuraList const& mDummy = m_target->GetAurasByType(SPELL_AURA_DUMMY);
                        for(Unit::AuraList::const_iterator i = mDummy.begin(); i != mDummy.end(); ++i)
                        {
    @@ -3023,7 +3023,7 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
                        {
                            m_target->SetPower(POWER_ENERGY, 0);
                            if(urand(1,100) <= FurorChance)
    -                            m_target->CastSpell(m_target, 17099, true, NULL, this);
    +                            m_target->CastCustomSpell(m_target, 17099, &FurorChance, NULL, NULL, true, NULL, this);
                        }
                        else
                        {
    
    

  12. What bug does the patch fix? What features does the patch add?

    Chance to restore power on HoT tick while having Revitalize talent

    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 IN (48545,48544,48539);
    INSERT INTO spell_proc_event (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES 
    ('48539', '0', '7', '16', '67108864', '0', '2359296', '0', '0', '5', '0'),
    ('48544', '0', '7', '16', '67108864', '0', '2359296', '0', '0', '10', '0'),
    ('48545', '0', '7', '16', '67108864', '0', '2359296', '0', '0', '15', '0');
    

    Core part

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 186d538..e6d456f 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -6786,6 +6845,7 @@ void Aura::PeriodicTick()
    
                int32 gain = m_target->ModifyHealth(pdamage);
    
    +			pCaster->ProcDamageAndSpell( m_target, PROC_FLAG_ON_DO_PERIODIC, PROC_FLAG_ON_TAKE_PERIODIC, PROC_EX_NONE, gain, BASE_ATTACK, m_spellProto );
                // add HoTs to amount healed in bgs
                if( pCaster->GetTypeId() == TYPEID_PLAYER )
                    if( BattleGround *bg = ((Player*)pCaster)->GetBattleGround() )
    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index 35a478b..383b92f 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -3015,7 +3023,9 @@ void Spell::EffectEnergize(uint32 i)
                level_multiplier = 4;
                break;
            case 31930:                                         // Judgements of the Wise
    +		case 48542:											// Revitalize
            case 63375:                                         // Improved Stormstrike
                damage = damage * unitTarget->GetCreateMana() / 100;
                break;
            default:
    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index 5bcac41..bdc3a3a 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -7638,6 +7680,25 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, uint32 damage, Aura
            case 6953:                                          // Warbringer
                RemoveAurasAtMechanicImmunity(IMMUNE_TO_ROOT_AND_SNARE_MASK,0,true);
                return true;
    +		case 7010:											// Revitalize (rank 1)
    +		case 7011:											// Revitalize (rank 2)
    +		case 7012:											// Revitalize (rank 3)
    +		{
    +			switch( pVictim->getPowerType() )
    +			{
    +				case POWER_MANA:
    +					triggered_spell_id = 48542; break;
    +				case POWER_RAGE:
    +					triggered_spell_id = 48541; break;
    +				case POWER_ENERGY:
    +					triggered_spell_id = 48540; break;
    +				case POWER_RUNIC_POWER:
    +					triggered_spell_id = 48543; break;
    +				default:
    +					return false;
    +			}
    +			break;
    +		}
            case 8152:                                          // Serendipity
            {
                // if heal your target over maximum health
    

  13. the damage increase value is stored in effect 1, so use instead:

    (*i)->GetSpellProto()->CalculateSimpleValue(1);

    I know it is effIndex 1 but today I was in a good mood and I wanted 1 little bit differently, so I used effIndex of that Clearcasting aura, which is 1 too :)

    //udpated fist post to use CalculateSimpleValue()

    //updated to use 1 instead effIndex... i liked it though :)

×
×
  • 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