Jump to content

Possible fix - Shadow Dance


Auntie Mangos

Recommended Posts

If i may try to quote Vladimir in a gramatically more correct form:

Spell has aura SPELL_AURA_MOD_IGNORE_SHAPESHIFT that provides removing form requirement for spells.

So setting form is clearly a horrible hack.

Note the words "horrible hack"...

This is no solution, it's a workaround.

Someone better find out WHY you cannot cast said spells when in Shadow Dance instead of overwriting this form and pretend that everything is cool.

Is it blocked by server or already by client?

It might be a similar problem as Warrior's Charge enabling taltents that need an invisible aura to be sent to client before you can even use the action button...

Link to comment
Share on other sites

  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

I agree. I also believe you're correct about the aura. Since it does mimic the same problems, it's most likely being blocked by the client. I'm simply keeping the post up so people can review it and possible get something better going. At least, for the time being; it's better than nothing.

Link to comment
Share on other sites

  • 2 weeks later...

any news/updates?

test this?

this is no my code :)

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 3a0862d..0d28cb8 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2637,6 +2637,9 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
        case FORM_SHADOW:
        case FORM_STEALTH:
            break;
+        case FORM_SHADOWDANCE:
+            PowerType = POWER_ENERGY;
+            break;
        case FORM_TREE:
            modelid = 864;
            break;
@@ -2682,7 +2685,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_SHADOWDANCE) ? uint8(FORM_STEALTH) : form);

        if(modelid > 0)
            m_target->SetDisplayId(modelid);
@@ -2747,6 +2751,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_SHADOWDANCE:
+                    m_target->SetStandFlags(UNIT_STAND_FLAGS_CREEP);
+                    break;
                default:
                    break;
            }
@@ -2779,6 +2787,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_SHADOWDANCE:
+                m_target->RemoveStandFlags(UNIT_STAND_FLAGS_CREEP);
+                break;
            default:
                break;
        }
diff --git a/src/game/Unit.h b/src/game/Unit.h
index faefbef..3f0e578 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -167,6 +167,7 @@ enum ShapeshiftForm
    FORM_GHOUL              = 0x07,
    FORM_DIREBEAR           = 0x08,
    FORM_CREATUREBEAR       = 0x0E,
+    FORM_SHADOWDANCE        = 0x0D,
    FORM_CREATURECAT        = 0x0F,
    FORM_GHOSTWOLF          = 0x10,
    FORM_BATTLESTANCE       = 0x11,

Link to comment
Share on other sites

  • 2 weeks later...
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;
        }

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...
I added it (manually) and it didnt gave any error.

Try adding it again.

========== Build: 11 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

luck

edit: btw, i tested it, it "works" but not like it should be.

When you enter shadow dance, you are NOT stealthed (which is ok) but you have like... stealth movements, (while walking, etc)

but yeah, it kinda works.

As I will add it manually? Can someone guide me? plz

sorry for English

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
  • 1 month later...
  • 3 weeks later...

When you click Shadow Dance, it applies a feature of stealth (Skill bar), nothing more can come from it. What the form does is apply the aura (Apply Aura: Shapeshift Ignored SpellClass - Wowhead), giving the player access to the skills. You need to add some things to the original Stealth "form" that can make this executable and not just Shadow Dance because Shadow Dance does multiple things so it needs to be applied in the places it affects.

Link to comment
Share on other sites

  • 4 weeks later...

I have been testing in lastest rev, patch posted above works up to a certain point, because for example:

1. You are in Stealth form with Master of Subtlety

2. Use Shadowdance............................................+

------------------------------------------------------------

3. Shadowdance buff replace stealth buff, Master of Subtlety remains

It looks like cannot be at the same time

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