Jump to content

Arthorius

Members
  • Posts

    10
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by Arthorius

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

    fix pet action bar saving and loading.

    For which repository revision was the patch created?

    8967

    Who has been writing this patch? Please include either forum user names or email addresses.

    Arthorius

    http://filebeam.com/e3189d1f61705b159e2f9f9ab3b66b40

    diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp
    index 1a9af67..063a00d 100644
    --- a/src/game/Pet.cpp
    +++ b/src/game/Pet.cpp
    @@ -414,8 +414,7 @@ void Pet::SavePetToDB(PetSaveMode mode)
                << curmana << ", "
                << GetPower(POWER_HAPPINESS) << ", '";
    
    -        // save only spell slots from action bar
    -        for(uint32 i = ACTION_BAR_INDEX_PET_SPELL_START; i < ACTION_BAR_INDEX_PET_SPELL_END; ++i)
    +        for(uint32 i = ACTION_BAR_INDEX_START; i < ACTION_BAR_INDEX_END; ++i)
            {
                ss << uint32(m_charmInfo->GetActionBarEntry(i)->GetType()) << " "
                   << uint32(m_charmInfo->GetActionBarEntry(i)->GetAction()) << " ";
    diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp
    index 57b0489..4d6c2b3 100644
    --- a/src/game/PetHandler.cpp
    +++ b/src/game/PetHandler.cpp
    @@ -341,6 +341,12 @@ void WorldSession::HandlePetSetAction( WorldPacket & recv_data )
            if(position >= MAX_UNIT_ACTION_BAR_INDEX)
                return;
    
    +        // in the normal case, comand and reaction buttons can only be moved, not removed
    +        // at moving count ==2, at removing count == 1
    +        // ignore attempt to remove command|reaction buttons (not possible at normal case)
    +        if((act_state == ACT_COMMAND || act_state == ACT_REACTION) && count == 1)
    +            return;
    +
            //if it's act for spell (en/disable/cast) and there is a spell given (0 = remove spell) which pet doesn't know, don't add
            if(!((act_state == ACT_ENABLED || act_state == ACT_DISABLED || act_state == ACT_PASSIVE) && spell_id && !pet->HasSpell(spell_id)))
            {
    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index b5112b6..ed15152 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -11631,12 +11631,12 @@ void CharmInfo::LoadPetActionBar(const std::string& data )
    
        Tokens tokens = StrSplit(data, " ");
    
    -    if (tokens.size() != (ACTION_BAR_INDEX_PET_SPELL_END-ACTION_BAR_INDEX_PET_SPELL_START)*2)
    +    if (tokens.size() != (ACTION_BAR_INDEX_END-ACTION_BAR_INDEX_START)*2)
            return;                                             // non critical, will reset to default
    
        int index;
        Tokens::iterator iter;
    -    for(iter = tokens.begin(), index = ACTION_BAR_INDEX_PET_SPELL_START; index < ACTION_BAR_INDEX_PET_SPELL_END; ++iter, ++index )
    +    for(iter = tokens.begin(), index = ACTION_BAR_INDEX_START; index < ACTION_BAR_INDEX_END; ++iter, ++index )
        {
            // use unsigned cast to avoid sign negative format use at long-> ActiveStates (int) conversion
            uint8 type  = atol((*iter).c_str());
    

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

    Implement Call of the Elements, Call of the Ancestors, Call of the Spirits

    For which repository revision was the patch created?

    8967

    Who has been writing this patch? Please include either forum user names or email addresses.

    Arthorius

    http://filebeam.com/b07d6a41c23d318fb6b947a81c198d27

    diff --git a/src/game/Player.cpp b/src/game/Player.cpp
    index e89b34f..5872cc6 100644
    --- a/src/game/Player.cpp
    +++ b/src/game/Player.cpp
    @@ -5667,6 +5667,15 @@ void Player::removeActionButton(uint8 button)
        sLog.outDetail( "Action Button '%u' Removed from Player '%u'", button, GetGUIDLow() );
    }
    
    +uint32 Player::GetActionByActionButton(uint8 button)
    +{
    +    ActionButtonList::iterator buttonItr = m_actionButtons.find(button);
    +    if (buttonItr==m_actionButtons.end())
    +        return 0;
    +
    +    return buttonItr->second.GetAction();
    +}
    +
    bool Player::SetPosition(float x, float y, float z, float orientation, bool teleport)
    {
        // prevent crash when a bad coord is sent by the client
    diff --git a/src/game/Player.h b/src/game/Player.h
    index e1b4a27..718d497 100644
    --- a/src/game/Player.h
    +++ b/src/game/Player.h
    @@ -1657,6 +1657,7 @@ class MANGOS_DLL_SPEC Player : public Unit
            ActionButton* addActionButton(uint8 button, uint32 action, uint8 type);
            void removeActionButton(uint8 button);
            void SendInitialActionButtons() const;
    +        uint32 GetActionByActionButton(uint8 button);
    
            PvPInfo pvpInfo;
            void UpdatePvP(bool state, bool ovrride=false);
    diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h
    index 9052f38..d91af78 100644
    --- a/src/game/SharedDefines.h
    +++ b/src/game/SharedDefines.h
    @@ -624,7 +624,7 @@ enum SpellEffects
        SPELL_EFFECT_SELF_RESURRECT            = 94,
        SPELL_EFFECT_SKINNING                  = 95,
        SPELL_EFFECT_CHARGE                    = 96,
    -    SPELL_EFFECT_97                        = 97,
    +    SPELL_EFFECT_SUMMON_ALL_TOTEMS         = 97,
        SPELL_EFFECT_KNOCK_BACK                = 98,
        SPELL_EFFECT_DISENCHANT                = 99,
        SPELL_EFFECT_INEBRIATE                 = 100,
    diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
    index a130bfc..419c7b4 100644
    --- a/src/game/Spell.cpp
    +++ b/src/game/Spell.cpp
    @@ -494,6 +494,10 @@ void Spell::FillTargetMap()
            if(IsAreaAuraEffect(m_spellInfo->Effect[i]))
                AddUnitTarget(m_caster, i);
    
    +        // SPELL_EFFECT_SUMMON_ALL_TOTEMS not have any implicit target
    +        if(m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON_ALL_TOTEMS)
    +            AddUnitTarget(m_caster, i);
    +
            std::list<Unit*> tmpUnitMap;
    
            // TargetA/TargetB dependent from each other, we not switch to full support this dependences
    diff --git a/src/game/Spell.h b/src/game/Spell.h
    index 0965114..2666fd5 100644
    --- a/src/game/Spell.h
    +++ b/src/game/Spell.h
    @@ -304,6 +304,7 @@ class Spell
            void EffectPlayerPull(uint32 i);
            void EffectDispelMechanic(uint32 i);
            void EffectSummonDeadPet(uint32 i);
    +        void EffectSummonAllTotems(uint32 i);
            void EffectDestroyAllTotems(uint32 i);
            void EffectDurabilityDamage(uint32 i);
            void EffectSkill(uint32 i);
    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index c899656..e79d5ab 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -154,7 +154,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
        &Spell::EffectSelfResurrect,                            // 94 SPELL_EFFECT_SELF_RESURRECT
        &Spell::EffectSkinning,                                 // 95 SPELL_EFFECT_SKINNING
        &Spell::EffectCharge,                                   // 96 SPELL_EFFECT_CHARGE
    -    &Spell::EffectUnused,                                   // 97 SPELL_EFFECT_97
    +    &Spell::EffectSummonAllTotems,                          // 97 SPELL_EFFECT_SUMMON_ALL_TOTEMS
        &Spell::EffectKnockBack,                                // 98 SPELL_EFFECT_KNOCK_BACK
        &Spell::EffectDisEnchant,                               // 99 SPELL_EFFECT_DISENCHANT
        &Spell::EffectInebriate,                                //100 SPELL_EFFECT_INEBRIATE
    @@ -6540,6 +6540,31 @@ void Spell::EffectSummonDeadPet(uint32 /*i*/)
        pet->SavePetToDB(PET_SAVE_AS_CURRENT);
    }
    
    +void Spell::EffectSummonAllTotems(uint32 i)
    +{
    +    if(m_caster->GetTypeId() != TYPEID_PLAYER)
    +        return;
    +
    +    switch(m_spellInfo->Id)
    +    {
    +        case 66842:         // Call of the Elements
    +        case 66843:         // Call of the Ancestors
    +        case 66844:         // Call of the Spirits
    +        {
    +            for(int32 slot = 0; slot != MAX_TOTEM; ++slot)
    +            {
    +                uint8 button = m_spellInfo->EffectMiscValue[i]+slot+132;
    +                uint32 spell_id = ((Player*)m_caster)->GetActionByActionButton(button);
    +                if(spell_id)
    +                    m_caster->CastSpell(unitTarget,spell_id,true);
    +            }
    +            break;
    +        }
    +        default:
    +            break;
    +    }
    +}
    +
    void Spell::EffectDestroyAllTotems(uint32 /*i*/)
    {
        int32 mana = 0;
    

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

    Implement 4 pieces bonus

    For which SubVersion revision was the patch created?

    5734

    Is there a thread in the bug report section? If yes, please add a link to the thread.

    http://mangosproject.org/trac/ticket/3012

    Who has been writing this patch? Please include either forum user names or email addresses.

    Arthorius

    Index: src/game/Unit.cpp
    ===================================================================
    --- src/game/Unit.cpp        (revision 5734)
    +++ src/game/Unit.cpp        (working copy)
    @@ -5050,6 +5050,14 @@
                                            CastCustomSpell(this, 39373, &healamount, NULL, NULL, true, castItem, triggeredByAura);
                                            return;
                                    }
    +                                // Vestments of Faith (Priest Tier 3) - 4 pieces bonus
    +                                case 28809:
    +                                {
    +                                        if (!pVictim || !pVictim->isAlive())
    +                                                return;
    +                                        CastSpell(pVictim,28810,true,castItem,triggeredByAura,triggeredByAura->GetCasterGUID());
    +                                        return;
    +                                }
                            }
    
                            //Prayer of Mending

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