Jump to content

[7252] [BUG] Lava Lash


Auntie Mangos

Recommended Posts

  • 39 years later...
  • 2 weeks later...
  • 3 weeks later...
This is the way it should be? or One-hand should do the same work?

he's refering to off hand weapons and one hand weapons, if you have an off hand in the off hand slot it works, if you have a one hand weapon in the off hand slot it doesn't work. that's the bug. Its not working on non-explicit offhand weapons, like one handers.

Link to comment
Share on other sites

// Lava Lash
           if (m_spellInfo->SpellFamilyFlags2 & 0x00000004)
           {
               if (m_caster->GetTypeId()!=TYPEID_PLAYER)
                   return;
               Item *item = ((Player*)m_caster)->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
               if (item)
               {
                   // Damage is increased if your off-hand weapon is enchanted with Flametongue.
                   Unit::AuraList const& auraDummy = m_caster->GetAurasByType(SPELL_AURA_DUMMY);
                   for(Unit::AuraList::const_iterator itr = auraDummy.begin(); itr != auraDummy.end(); ++itr)
                   {
                       if( (*itr)->GetSpellProto()->SpellFamilyName==SPELLFAMILY_SHAMAN &&
                           (*itr)->GetSpellProto()->SpellFamilyFlags & 0x0000000000200000LL &&
                           (*itr)->GetCastItemGUID() == item->GetGUID())
                       {
                          m_damage += m_damage * damage / 100;
                          return;
                       }
                   }
               }
               return;
           }
           break;

maybe use

  
 SpellEntry const *spellInfo = sSpellStore.LookupEntry( triggered_spell_id );
if(spellInfo->AttributesEx3 & SPELL_ATTR_EX3_REQ_OFFHAND)
       {
           Item* item = ((Player*)m_caster)->GetWeaponForAttack(OFF_ATTACK);

           // skip spell if no weapon in slot or broken
           if(!item || item->IsBroken() )
               return;

           // skip spell if weapon not fit to triggered spell
           if(!item->IsFitToSpellRequirements(spellInfo))
               return;
       }

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Temporary hack patch:

--- Item.cpp.1    2009-06-02 20:56:46.000000000 +0700
+++ Item.cpp    2009-06-02 20:54:27.000000000 +0700
@@ -745,6 +745,15 @@
      (spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON && IsWeaponVellum())))
        return true;

+    //Lava Lash
+    if (spellInfo->Id==60103) {
+    if (spellInfo->EquippedItemClass==ITEM_CLASS_WEAPON) {
+        return true;
+    } else {
+        return false;
+    }
+    }
+
    if (spellInfo->EquippedItemClass != -1)                 // -1 == any item class
    {
        if(spellInfo->EquippedItemClass != int32(proto->Class))

Link to comment
Share on other sites

Temporary hack patch:

--- Item.cpp.1    2009-06-02 20:56:46.000000000 +0700
+++ Item.cpp    2009-06-02 20:54:27.000000000 +0700
@@ -745,6 +745,15 @@
      (spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON && IsWeaponVellum())))
        return true;

+    //Lava Lash
+    if (spellInfo->Id==60103) {
+    if (spellInfo->EquippedItemClass==ITEM_CLASS_WEAPON) {
+        return true;
+    } else {
+        return false;
+    }
+    }
+
    if (spellInfo->EquippedItemClass != -1)                 // -1 == any item class
    {
        if(spellInfo->EquippedItemClass != int32(proto->Class))

Tested and works

Link to comment
Share on other sites

  • 1 month later...

Maybe a better fix would be

@@ -763,11 +763,12 @@ bool Item::IsFitToSpellRequirements(SpellEntry const* spellInfo) const
        }
    }

    if(spellInfo->EquippedItemInventoryTypeMask != 0)       // 0 == any inventory type
    {
-        if((spellInfo->EquippedItemInventoryTypeMask  & (1 << proto->InventoryType)) == 0)
+        if(!((spellInfo->EquippedItemInventoryTypeMask & (1 << proto->InventoryType)) ||
+           (spellInfo->EquippedItemInventoryTypeMask & (1 << 22) && proto->InventoryType == 13)))
            return false;                                   // inventory type not present in mask
    }

    return true;
}

(check one-hand weapons (type = 13) when looking for offhand weapons (type = 22)). But it's still a nuisance because Lava Lash is the only used spell that requires such a check.

Link to comment
Share on other sites

  • 3 weeks later...
Maybe a better fix would be

@@ -763,11 +763,12 @@ bool Item::IsFitToSpellRequirements(SpellEntry const* spellInfo) const
        }
    }

    if(spellInfo->EquippedItemInventoryTypeMask != 0)       // 0 == any inventory type
    {
-        if((spellInfo->EquippedItemInventoryTypeMask  & (1 << proto->InventoryType)) == 0)
+        if(!((spellInfo->EquippedItemInventoryTypeMask & (1 << proto->InventoryType)) ||
+           (spellInfo->EquippedItemInventoryTypeMask & (1 << 22) && proto->InventoryType == 13)))
            return false;                                   // inventory type not present in mask
    }

    return true;
}

(check one-hand weapons (type = 13) when looking for offhand weapons (type = 22)). But it's still a nuisance because Lava Lash is the only used spell that requires such a check.

Anyone know if this fix works?

Link to comment
Share on other sites

Anyone know if this fix works?

Wouldn't have posted it if it didn't do what was advertised ;)

Shiv (http://www.wowhead.com/?spell=5938) works the same way; although I don't know how it's currently handled in the core. Maybe it can provide an hint on how to fix Lava Lash.

Shiv has EquippedItemInventoryTypeMask = 0, so it'll pass over this block completely:

   if(spellInfo->EquippedItemInventoryTypeMask != 0)       // 0 == any inventory type
   {
       if((spellInfo->EquippedItemInventoryTypeMask  & (1 << proto->InventoryType)) == 0)
           return false;                                   // inventory type not present in mask
   }

Link to comment
Share on other sites

  • 3 weeks later...
Why offhand interpreted as _any_ weapon in offhand? Base at spell data this must be _real_ offhand weapon only. And i not see any references that this not like way.

This is the way it worked prior to patch to 3.0.8. And in 3.0.8 patch notes,

Lava Lash - Fixed a bug which allowed you to use the ability even if you had a shield in offhand. Now requires a 1hand axe, fist or dagger to be able to be used.

no mention that the weapon had to be specifically an off-hand weapon only item.

Link to comment
Share on other sites

try test something like this

diff --git a/src/game/Item.cpp b/src/game/Item.cpp
index 52ed24b..e9475e1 100644
--- a/src/game/Item.cpp
+++ b/src/game/Item.cpp
@@ -741,6 +741,10 @@ bool Item::IsFitToSpellRequirements(SpellEntry const* spellInfo) const
{
    ItemPrototype const* proto = GetProto();

+    //Lava Lash
+    if (spellInfo->Id==60103 && spellInfo->EquippedItemClass==ITEM_CLASS_WEAPON)
+         return true;
+
    if (spellInfo->EquippedItemClass != -1)                 // -1 == any item class
    {
        if(spellInfo->EquippedItemClass != int32(proto->Class))

Link to comment
Share on other sites

no mention that the weapon had to be specifically an off-hand weapon only item.

Agree, i think we must see the difference between the offhand meele attack and the offhand item inventory slot. Many item slot types (one hand, offhand, etc) can be used for the offhand meele attack.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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