Jump to content

bulek

Members
  • Posts

    194
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by bulek

  1. updated patch for 9034 with some minor modifications by me:

    diff --git a/src/game/Player.cpp b/src/game/Player.cpp
    index 2d09f4f..ae8ba39 100644
    --- a/src/game/Player.cpp
    +++ b/src/game/Player.cpp
    @@ -3639,11 +3639,12 @@ bool Player::resetTalents(bool no_cost)
        */
    
    
    -    if(m_canTitanGrip)
    +    if(CanTitanGrip())
        {
    -        m_canTitanGrip = false;
    +        SetCanTitanGrip(false);
            if(sWorld.getConfig(CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET))
                AutoUnequipOffhandIfNeed();
    +        RemoveAurasDueToSpellByCancel(49152);
        }
    
        return true;
    @@ -6400,6 +6401,8 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
    
        // check some item equip limitations (in result lost CanTitanGrip at talent reset, for example)
        AutoUnequipOffhandIfNeed();
    +    if (CanTitanGrip() && IsTwoHandUsedInDualWield() && !HasAura(49152))
    +        CastSpell(this, 49152, true);
    
        // recent client version not send leave/join channel packets for built-in local channels
        UpdateLocalChannels( newZone );
    @@ -10606,6 +10609,14 @@ Item* Player::EquipItem( uint16 pos, Item *pItem, bool update )
        // only for full equip instead adding to stack
        GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry());
    
    +    // titans grip dmg penalty for 2h weapons
    +    if (CanTitanGrip())
    +    {
    +        ItemPrototype const *pProto = pItem->GetProto();
    +        if (pProto && pProto->InventoryType == INVTYPE_2HWEAPON && !HasAura(49152))
    +            CastSpell(this, 49152, true);
    +    }
    +
        return pItem;
    }
    
    @@ -10745,6 +10756,14 @@ void Player::RemoveItem( uint8 bag, uint8 slot, bool update )
            pItem->SetSlot( NULL_SLOT );
            if( IsInWorld() && update )
                pItem->SendCreateUpdateToPlayer( this );
    +
    +        // titans grip dmg penalty for 2h weapons removed if player does not have any
    +        if (HasAura(49152))
    +        {
    +            ItemPrototype const *pProto = pItem->GetProto();
    +            if (pProto && pProto->InventoryType == INVTYPE_2HWEAPON && !IsTwoHandUsedInDualWield())
    +                RemoveAurasDueToSpellByCancel(49152);
    +        }
        }
    }
    
    @@ -19325,7 +19344,7 @@ void Player::AutoUnequipOffhandIfNeed()
            return;
    
        // need unequip offhand for 2h-weapon without TitanGrip (in any from hands)
    -    if (CanTitanGrip() || (offItem->GetProto()->InventoryType != INVTYPE_2HWEAPON && !IsTwoHandUsed()))
    +    if (CanTitanGrip() || !((IsTwoHandUsedInDualWield() && offItem->GetProto()->InventoryType != INVTYPE_NON_EQUIP) || offItem->GetProto()->InventoryType == INVTYPE_2HWEAPON))
            return;
    
        ItemPosCountVec off_dest;
    diff --git a/src/game/Player.h b/src/game/Player.h
    index 75e8e31..a57b086 100644
    --- a/src/game/Player.h
    +++ b/src/game/Player.h
    @@ -1269,6 +1269,12 @@ class MANGOS_DLL_SPEC Player : public Unit
                Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
                return mainItem && mainItem->GetProto()->InventoryType == INVTYPE_2HWEAPON && !CanTitanGrip();
            }
    +        bool IsTwoHandUsedInDualWield() const
    +        {
    +            Item* offItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
    +            Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
    +            return mainItem && mainItem->GetProto()->InventoryType == INVTYPE_2HWEAPON || offItem && offItem->GetProto()->InventoryType == INVTYPE_2HWEAPON;
    +        }
            void SendNewItem( Item *item, uint32 count, bool received, bool created, bool broadcast = false );
            bool BuyItemFromVendor(uint64 vendorguid, uint32 item, uint8 count, uint8 bag, uint8 slot);
    
    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index d11576e..3fbe545 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -6954,8 +6954,15 @@ void Spell::EffectActivateRune(uint32  eff_idx)
    
    void Spell::EffectTitanGrip(uint32 /*eff_idx*/)
    {
    -    if (unitTarget && unitTarget->GetTypeId() == TYPEID_PLAYER)
    -        ((Player*)unitTarget)->SetCanTitanGrip(true);
    +    if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
    +        return;
    +
    +    Player *p_target = (Player*)unitTarget;
    +    p_target->SetCanTitanGrip(true);
    +
    +    // titans grip dmg penalty for 2h weapons
    +    if (!unitTarget->HasAura(49152) && p_target->IsTwoHandUsedInDualWield())
    +        unitTarget->CastSpell(unitTarget, 49152, true);
    }
    
    void Spell::EffectRenamePet(uint32 /*eff_idx*/)
    

    confirmed works for me^_^

  2.         if (apply)
           {
               GameObject* obj = m_target->GetGameObject(48018);
               if (obj [b]&& m_target->GetDistance(obj) <= 40.0f[/b])
                   ((Player*)m_target)->TeleportTo(obj->GetMapId(),obj->GetPositionX(),obj->GetPositionY(),obj->GetPositionZ(),obj->GetOrientation());
           }

    works with 90xx mangos?

  3. diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 993753e..93ba68b 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -2974,6 +2974,7 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
        switch(form)
        {
            case FORM_CAT:
    +        case FORM_SHADOW_DANCE:
                PowerType = POWER_ENERGY;
                break;
            case FORM_BEAR:
    @@ -3040,7 +3041,8 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
            if(m_target->m_ShapeShiftFormSpellId)
                m_target->RemoveAurasDueToSpell(m_target->m_ShapeShiftFormSpellId, this);
    
    -        m_target->SetByteValue(UNIT_FIELD_BYTES_2, 3, form);
    +        // For Shadow Dance we must apply Stealth form (30) instead of current (13)
    +        m_target->SetByteValue(UNIT_FIELD_BYTES_2, 3, (form == FORM_SHADOW_DANCE) ? uint8(FORM_STEALTH) : form);
    
            if(modelid > 0)
                m_target->SetDisplayId(modelid);
    @@ -3105,6 +3107,10 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
                            m_target->SetPower(POWER_RAGE, Rage_val);
                        break;
                    }
    +                // Shadow Dance - apply stealth mode stand flag
    +                case FORM_SHADOW_DANCE:
    +                    m_target->SetStandFlags(UNIT_STAND_FLAGS_CREEP);
    +                    break;
                    default:
                        break;
                }
    @@ -3137,6 +3143,10 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
                    if(Aura* dummy = m_target->GetDummyAura(37324) )
                        m_target->CastSpell(m_target, 37325, true, NULL, dummy);
                    break;
    +            // Shadow Dance - remove stealth mode stand flag
    +            case FORM_SHADOW_DANCE:
    +                m_target->RemoveStandFlags(UNIT_STAND_FLAGS_CREEP);
    +                break;
                default:
                    break;
            }
    

    thank you works with 9013 mangos:)

  4. patch works with 900x mangos?

    any updates/news

    and this part correct, typo fix

     
    +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;
    +    }
    +}
    +

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