Jump to content

Recommended Posts

  • 39 years later...
  • 2 weeks later...
  • 3 weeks later...
Posted
Lava Lash is working if you have an explicit Off-hand weapon equipped, but it does not work with One-hand weapons.

This is the way it should be? or One-hand should do the same work?

Posted
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.

Posted

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

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

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))

Posted
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

  • 1 month later...
Posted

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.

  • 3 weeks later...
Posted
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?

Posted

(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.

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.

Posted
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
   }

  • 3 weeks later...
Posted
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.

Posted

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))

Posted
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.

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