cmangos / issues

This repository is used as a centralized point for all issues regarding CMaNGOS.
180 stars 47 forks source link

[CLASSIC][TBC][WOTLK] Vanish Spell is Broken #803

Closed trimken closed 5 years ago

trimken commented 8 years ago

All channel spell such as Mind Flay, Arcane Missiles etc, and instant spell such as Ice lance and Scorch break effect of vanish. For example Frosblolt and Firebolt evade good.

Sorry for my pure English.

ROKB commented 8 years ago

classic include same problem

trimken commented 8 years ago

Yea, i think this is problem for all cores. Vanish fully broken!!!

Periodic damage (DOT), didn't interrupt the stealth. (If rogue goes into the stealth(vanish) when he has DOT's, such as Shadow Word: Pain, pereodic damage didn't interrupt the stealth. All spells that cause damage interrupt the vanish. Vanish evades only Frostbolt & Firebolt.

I think problem in spell.cpp function - > void Spell::DoSpellHitOnUnit.... But I don't know how fix it.

void Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool isReflected) { if (!unit || !effectMask) return;

Unit* realCaster = GetAffectiveCaster(); ................................ etc

ROKB commented 8 years ago

i think vanish cant cancel cast. so can end casting. and hit spell. and remove vanish.

trimken commented 8 years ago

I found the solution for interrupt casting when player go into invisibility.

https://github.com/trimken/mangos-tbc/commit/84842822fac7caf67296518a25629452f83cba3f

ROKB commented 8 years ago

@trimken but have error in && (*iter)->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid() == unitTarget->GetGUIDLow()) line == has problem

trimken commented 8 years ago

My solution (https://github.com/trimken/mangos-tbc/commit/84842822fac7caf67296518a25629452f83cba3f) for Mangos TBC.

I'll try figure something out for Mangos Classic tomorrow.

ROKB commented 8 years ago

@trimken ok! im looking forward to that.. :D

Ve1vet commented 8 years ago

Lovelol makes patch for Faign Death/Shadowmeld/Invisibility/Stalth long time ago & it works perfect. I don't have a repo, so i can't give a link for commit :( Also, if you want, i can create topic with this patch on CMangos forum. Here is the code of patch:

--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -1121,11 +1121,21 @@ void Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool isReflected)

         if (!realCaster->IsFriendlyTo(unit))
         {
+
+            // Check if target is visible.
+            bool Visible = true;
+            if( (unit->HasAuraType(SPELL_AURA_MOD_INVISIBILITY) ||
+                 unit->HasAuraType(SPELL_AURA_MOD_STEALTH) ||
+                 unit->HasAura(20580) /* Shadowmeld */) &&
+                 !unit->isVisibleForOrDetect(m_caster, m_caster, true)){
+                Visible = false;
+            }
+
             // for delayed spells ignore not visible explicit target
-            if (m_spellInfo->speed > 0.0f && unit == m_targets.getUnitTarget() &&
-                    !unit->isVisibleForOrDetect(m_caster, m_caster, false))
-            {
-                realCaster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_EVADE);
+            if (m_spellInfo->speed > 0.0f && unit == m_targets.getUnitTarget() && !Visible){
+
+                // We can't send SPELL_MISS_EVADE because it will cause combat-log error
+                realCaster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_MISS);
                 ResetEffectDamageAndHeal();
                 return;
             }
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index cf2fb70..7ad7afc 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -3570,6 +3570,26 @@ void Aura::HandleFeignDeath(bool apply, bool Real)
     if (!Real)
         return;

+    // Interrupt cast if FD.
+    Unit *target = GetTarget();
+    Unit *caster = GetCaster();
+    // there is also a spell wich has TARGET_RANDOM_ENEMY_CHAIN_IN_AREA but it's unused. So not really necessary.
+    std::list<Unit*> targets;
+    MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, target, caster->GetMap()->GetVisibilityDistance());
+    MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(targets, u_check);
+    Cell::VisitAllObjects(target, searcher, caster->GetMap()->GetVisibilityDistance());
+    for (std::list<Unit*>::iterator iter = targets.begin(); iter != targets.end(); ++iter){
+
+        if (!(*iter)->IsNonMeleeSpellCasted(false))
+            continue;
+
+        for (uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++){
+            if( (*iter)->GetCurrentSpell(CurrentSpellTypes(i)) &&
+                (*iter)->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid() == target->GetGUIDLow() )
+                (*iter)->InterruptSpell(CurrentSpellTypes(CurrentSpellTypes(i)), false);
+        }
+    }
+
     GetTarget()->SetFeignDeath(apply, GetCasterGuid(), GetId());
 }

@@ -3726,9 +3746,28 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
 void Aura::HandleModStealth(bool apply, bool Real)
 {
     Unit* target = GetTarget();
+    Unit *caster = GetCaster();

     if (apply)
     {
+
+        // Interrupt cast if Stealth.
+        std::list<Unit*> targets;
+        MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, target, caster->GetMap()->GetVisibilityDistance());
+        MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(targets, u_check);
+        Cell::VisitAllObjects(target, searcher, caster->GetMap()->GetVisibilityDistance());
+        for (std::list<Unit*>::iterator iter = targets.begin(); iter != targets.end(); ++iter){
+
+            if (!(*iter)->IsNonMeleeSpellCasted(false))
+                continue;
+
+            for (uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++){
+                if( (*iter)->GetCurrentSpell(CurrentSpellTypes(i)) &&
+                    (*iter)->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid() == target->GetGUIDLow() )
+                    (*iter)->InterruptSpell(CurrentSpellTypes(CurrentSpellTypes(i)), false);
+            }
+        }
+
         // drop flag at stealth in bg
         target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION);
ROKB commented 8 years ago

@vovk ok i will try tomorrow.. :P thx to reply

ROKB commented 8 years ago

@vovk not work on cmangos-classic

.. \ .. \ src \ game \ SpellAuras.cpp (2324): error C2661: 'MaNGOS :: AnyUnfriendlyUnitInObjectRangeCheck :: AnyUnfriendlyUnitInObjectRangeCheck': overloaded functions are not used in the three parameters. 4> .. \ .. \ src \ game \ SpellAuras.cpp (2334): error C2666: 'ObjectGuid :: operator ==': a similar transformation in the two overloads. 4> c: \ com \ mangos-classic \ mangos-classic \ src \ game \ ObjectGuid.h (159): may be 'bool ObjectGuid :: operator == (const ObjectGuid &) const'. 4> C: \ com \ mangos-classic \ mangos-classic \ dep \ ACE_wrappers \ ace / Time_Value.h (317): or 'bool operator == (const ACE_Time_Value &, const ACE_Time_Value &)' 4> C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Include \ shared \ guiddef.h (192): or 'bool operator == (const GUID &, const GUID &)' 4> argument list '(ObjectGuid, uint32)' and (a) for that match 4> .. \ .. \ src \ game \ SpellAuras.cpp (2477): error C2661: 'MaNGOS :: AnyUnfriendlyUnitInObjectRangeCheck :: AnyUnfriendlyUnitInObjectRangeCheck': overloaded functions are not used in the three parameters. 4> .. \ .. \ src \ game \ SpellAuras.cpp (2487): error C2666: 'ObjectGuid :: operator ==': a similar transformation in the two overloads. 4> c: \ com \ mangos-classic \ mangos-classic \ src \ game \ ObjectGuid.h (159): may be 'bool ObjectGuid :: operator == (const ObjectGuid &) const'. 4> C: \ com \ mangos-classic \ mangos-classic \ dep \ ACE_wrappers \ ace / Time_Value.h (317): or 'bool operator == (const ACE_Time_Value &, const ACE_Time_Value &)' 4> C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Include \ shared \ guiddef.h (192): or 'bool operator == (const GUID &, const GUID &)' 4> argument list '(ObjectGuid, uint32)' and (a) for that match 4> 4> failed to build.

trimken commented 8 years ago

vovk, patch doesn't work for me (latest rev cmangos-tbc)

Ve1vet commented 8 years ago

Ok. I will update my repo to the latest rev this week & try to find problem.

ROKB commented 8 years ago

Still waiting

Ve1vet commented 8 years ago

I found a problem. Function AnyUnfriendlyUnitInObjectRangeCheck was reworked some time ago, so patch now should be like this. In your error mesage you can see it, now it takes 2 parameters instead 3.

And ofc @ROKB it is not good to rush people, especially when week isn't over... :-/

From 4c9b8c8b0f794611471a2fb7e0eae02a3f0ea284 Mon Sep 17 00:00:00 2001 From: Velvet Date: Sun, 29 Nov 2015 17:31:51 +0200

Subject: [PATCH] 1

src/game/Spell.cpp | 14 +++++++++++--- src/game/SpellAuras.cpp | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-)

diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 18a8c7c..19c8061 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -1145,11 +1145,19 @@ void Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool isReflected)

         if (!realCaster->IsFriendlyTo(unit))
         {
+            // Check if target is visible.
+            bool Visible = true;
+            if( ( unit->HasAuraType(SPELL_AURA_MOD_INVISIBILITY) ||
+                unit->HasAuraType(SPELL_AURA_MOD_STEALTH) ||
+                unit->HasAura(20580) /* Shadowmeld */ ) &&
+                !unit->isVisibleForOrDetect(m_caster, m_caster, true) ){
+                Visible = false;
+            }
             // for delayed spells ignore not visible explicit target
-            if (speed > 0.0f && unit == m_targets.getUnitTarget() &&
-                    !unit->isVisibleForOrDetect(m_caster, m_caster, false))
+            if (speed > 0.0f && unit == m_targets.getUnitTarget() && !Visible)
             {
-                realCaster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_EVADE);
+                // We can't send SPELL_MISS_EVADE because it will cause combat-log error
+                realCaster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_MISS);
                 ResetEffectDamageAndHeal();
                 return;
             }
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 36dc25e..66eb5bc 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -3606,6 +3606,25 @@ void Aura::HandleFeignDeath(bool apply, bool Real)
 {
     if (!Real)
         return;
+    // Interrupt cast if FD.
+    Unit *target = GetTarget();
+    Unit *caster = GetCaster();
+    // there is also a spell wich has TARGET_RANDOM_ENEMY_CHAIN_IN_AREA but it's unused. So not really necessary.
+    std::list<Unit*> targets;
+    MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, caster->GetMap()->GetVisibilityDistance());
+    MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(targets, u_check);
+    Cell::VisitAllObjects(target, searcher, caster->GetMap()->GetVisibilityDistance());
+    for( std::list<Unit*>::iterator iter = targets.begin(); iter != targets.end(); ++iter ){
+
+        if( !( *iter )->IsNonMeleeSpellCasted(false) )
+            continue;
+
+        for( uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++ ){
+            if( ( *iter )->GetCurrentSpell(CurrentSpellTypes(i)) &&
+               ( *iter )->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid() == target->GetGUIDLow() )
+               ( *iter )->InterruptSpell(CurrentSpellTypes(CurrentSpellTypes(i)), false);
+        }
+    }

     GetTarget()->SetFeignDeath(apply, GetCasterGuid());
 }
@@ -3756,9 +3775,27 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
 void Aura::HandleModStealth(bool apply, bool Real)
 {
     Unit* target = GetTarget();
+    Unit *caster = GetCaster();

-    if (apply)
+    if( apply )
     {
+
+        // Interrupt cast if Stealth.
+        std::list<Unit*> targets;
+        MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, caster->GetMap()->GetVisibilityDistance());
+        MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(targets, u_check);
+        Cell::VisitAllObjects(target, searcher, caster->GetMap()->GetVisibilityDistance());
+        for( std::list<Unit*>::iterator iter = targets.begin(); iter != targets.end(); ++iter ){
+
+            if( !( *iter )->IsNonMeleeSpellCasted(false) )
+                continue;
+
+            for( uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++ ){
+                if( ( *iter )->GetCurrentSpell(CurrentSpellTypes(i)) &&
+                   ( *iter )->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid() == target->GetGUIDLow() )
+                   ( *iter )->InterruptSpell(CurrentSpellTypes(CurrentSpellTypes(i)), false);
+            }
+        }
         // drop flag at stealth in bg
         target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION);
ROKB commented 8 years ago

@vovk thx to work.. i'll be check tomorrow :P

ROKB commented 8 years ago

4> .. \ .. \ src \ game \ SpellAuras.cpp (2333): error C2666: 'ObjectGuid :: operator ==': a similar transformation in the two overloads. 4> c: \ com \ mangos-classic \ mangos-classic \ src \ game \ ObjectGuid.h (159): may be 'bool ObjectGuid :: operator == (const ObjectGuid &) const'. 4> C: \ com \ mangos-classic \ mangos-classic \ dep \ ACE_wrappers \ ace / Time_Value.h (317): or 'bool operator == (const ACE_Time_Value &, const ACE_Time_Value &)' 4> C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Include \ shared \ guiddef.h (192): or 'bool operator == (const GUID &, const GUID &)' 4> argument list '(ObjectGuid, uint32)' and (a) for that match 4> .. \ .. \ src \ game \ SpellAuras.cpp (2487): error C2666: 'ObjectGuid :: operator ==': a similar transformation in the two overloads. 4> c: \ com \ mangos-classic \ mangos-classic \ src \ game \ ObjectGuid.h (159): may be 'bool ObjectGuid :: operator == (const ObjectGuid &) const'. 4> C: \ com \ mangos-classic \ mangos-classic \ dep \ ACE_wrappers \ ace / Time_Value.h (317): or 'bool operator == (const ACE_Time_Value &, const ACE_Time_Value &)' 4> C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Include \ shared \ guiddef.h (192): or 'bool operator == (const GUID &, const GUID &)' 4> argument list '(ObjectGuid, uint32)' and (a) for that match 4> 4> failed to build.

Ve1vet commented 8 years ago

I'll try to make this patch for classic. For TBC last pach should work.

Ve1vet commented 8 years ago

For classic. In classic there is no convertation uint32 <-> ObjactGuid, so compiller can't compare this string: ( iter )->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid() == target->GetGUIDLow() I add this string: uint32 curTarget = ( iter )->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid(); To conver ObjectGuid to uint32. So now should work, so you can try test it.

From 08bd28f48e4cfa854d159c34194e71c7f21b3828 Mon Sep 17 00:00:00 2001 From: Velvet Date: Tue, 1 Dec 2015 03:42:50 +0200 Subject: [PATCH] 1

---
 src/game/Spell.cpp      | 15 ++++++++++++---
 src/game/SpellAuras.cpp | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 3610a39..a81283a 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -1133,11 +1133,20 @@ void Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool isReflected)

         if (!realCaster->IsFriendlyTo(unit))
         {
+            // Check if target is visible.
+            bool Visible = true;
+            if( ( unit->HasAuraType(SPELL_AURA_MOD_INVISIBILITY) ||
+                unit->HasAuraType(SPELL_AURA_MOD_STEALTH) ||
+                unit->HasAura(20580) /* Shadowmeld */ ) &&
+                !unit->isVisibleForOrDetect(m_caster, m_caster, true) ){
+                Visible = false;
+                
+            }
             // for delayed spells ignore not visible explicit target
-            if (speed > 0.0f && unit == m_targets.getUnitTarget() &&
-                    !unit->isVisibleForOrDetect(m_caster, m_caster, false))
+            if (speed > 0.0f && unit == m_targets.getUnitTarget() && !Visible)
             {
-                realCaster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_EVADE);
+                // We can't send SPELL_MISS_EVADE because it will cause combat-log error
+                realCaster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_MISS);
                 ResetEffectDamageAndHeal();
                 return;
             }
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 22c52d5..18b8829 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2304,6 +2304,25 @@ void Aura::HandleFeignDeath(bool apply, bool Real)
     if (!Real)
         return;

+    // Interrupt cast if FD.
+    Unit *target = GetTarget();
+    Unit *caster = GetCaster();
+    // there is also a spell wich has TARGET_RANDOM_ENEMY_CHAIN_IN_AREA but it's unused. So not really necessary.
+    std::list<Unit*> targets;
+    MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, caster->GetMap()->GetVisibilityDistance());
+    MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(targets, u_check);
+    Cell::VisitAllObjects(target, searcher, caster->GetMap()->GetVisibilityDistance());
+    for( std::list<Unit*>::iterator iter = targets.begin(); iter != targets.end(); ++iter ){
+        if( !( *iter )->IsNonMeleeSpellCasted(false) )
+            continue;
+        
+        for( uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++ ){
+            uint32 curTarget = ( *iter )->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid();
+            if( ( *iter )->GetCurrentSpell(CurrentSpellTypes(i)) && curTarget == target->GetGUIDLow() )
+                ( *iter )->InterruptSpell(CurrentSpellTypes(CurrentSpellTypes(i)), false);
+        }
+    }
+
     GetTarget()->SetFeignDeath(apply, GetCasterGuid());
 }

@@ -2436,9 +2455,25 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
 void Aura::HandleModStealth(bool apply, bool Real)
 {
     Unit* target = GetTarget();
+    Unit *caster = GetCaster();

     if (apply)
     {
+        // Interrupt cast if Stealth.
+        std::list<Unit*> targets;
+        MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(target, caster->GetMap()->GetVisibilityDistance());
+        MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(targets, u_check);
+        Cell::VisitAllObjects(target, searcher, caster->GetMap()->GetVisibilityDistance());
+        for( std::list<Unit*>::iterator iter = targets.begin(); iter != targets.end(); ++iter ){
+            if( !( *iter )->IsNonMeleeSpellCasted(false) )
+                continue;
+            
+            for( uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; i++ ){
+                uint32 curTarget = ( *iter )->GetCurrentSpell(CurrentSpellTypes(i))->m_targets.getUnitTargetGuid();
+                if( ( *iter )->GetCurrentSpell(CurrentSpellTypes(i)) && curTarget == target->GetGUIDLow() )
+                    ( *iter )->InterruptSpell(CurrentSpellTypes(CurrentSpellTypes(i)), false);
+            }
+        }
         // drop flag at stealth in bg
         target->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION);

-- 
1.9.5.msysgit.1
ROKB commented 8 years ago

@vovk has crash

Fault address: 0000000077A98FD1 01:0000000000077FD1 C:\Windows\SYSTEM32\ntdll.dll

Registers: RAX:000000007222FD52 RBX:0000000000000000 RCX:0000000006DBF1A0 RDX:0000000000000000 RSI:000007FEECA771BC RDI:0000000006DBF8F8 R8: 0000000000000000 R9: 0000000000000000 R10:0000000000000246 R11:0000000000415780 R12:0000000000000000 R13:0000000000414878 R14:0000000000000000 R15:0000005800000001 CS:RIP:0033:0000000077A98FD1 SS:RSP:002B:0000000006DBF7B0 RBP:00414770 DS:002B ES:002B FS:0053 GS:002B Flags:00000202

Call stack: Address Frame Function SourceFile 0000000077A98FD1 0000000006DBF8A0 RtlIsDosDeviceName_U+1F5B1 0000000077943028 0000000006DBF8D0 BaseFormatTimeOut+4E8 000007FEECA772E1 0000000006DBF980 ?EnableTracing@Concurrency@@YAJXZ+241 000007FEECA7717A 0000000006DBF9C0 ?EnableTracing@Concurrency@@YAJXZ+DA 000007FEECA849BF 0000000006DBFA10 ?ResetDefaultSchedulerPolicy@Scheduler@Concurrency@@SAXXZ+200F 000007FEECA83C06 0000000006DBFA60 ?ResetDefaultSchedulerPolicy@Scheduler@Concurrency@@SAXXZ+1256 000007FEECA722DA 0000000006DBFA90 ?_CheckTaskCollection@_UnrealizedChore@details@Concurrency@@IEAAXXZ+76A 000007FEECA7AE98 0000000006DBFAF0 ?try_lock@critical_section@Concurrency@@QEAA_NXZ+3C 000007FEEEEDCDC5 0000000006DBFB40 _Thrd_yield+18D 000007FEEEEDCF80 0000000006DBFB90 _Mtx_trylock+28 00000001400834CF 0000000006DBFC10 ??1CreatureEventAI@@UEAA@XZ+80F 00000001400227DA 0000000006DBFC40 0001:00000000000217DA C:\tt\mangosd.exe 000007FEECA92925 0000000006DBFCB0 _initterm_e+199 000007FEECA92ADE 0000000006DBFCE0 exit+11E 0000000077A443A1 0000000006DBFE00 LdrShutdownProcess+1D1 0000000077A441B0 0000000006DBFE30 RtlExitUserProcess+90 0000000077940F3F 0000000006DBFE60 GetNumberOfConsoleFonts+CF 0000000077954803 0000000006DBFF50 CtrlRoutine+1D3 000000007791652D 0000000006DBFF80 BaseThreadInitThunk+D

0000000077A4C541 0000000006DBFFD0 RtlUserThreadStart+21

Local Variables And Parameters

Call stack: Address Frame Function SourceFile 0000000077A98FD1 0000000006DBF8A0 RtlIsDosDeviceName_U+1F5B1

0000000077943028 0000000006DBF8D0 BaseFormatTimeOut+4E8

000007FEECA772E1 0000000006DBF980 ?EnableTracing@Concurrency@@YAJXZ+241

000007FEECA7717A 0000000006DBF9C0 ?EnableTracing@Concurrency@@YAJXZ+DA

000007FEECA849BF 0000000006DBFA10 ?ResetDefaultSchedulerPolicy@Scheduler@Concurrency@@SAXXZ+200F

000007FEECA83C06 0000000006DBFA60 ?ResetDefaultSchedulerPolicy@Scheduler@Concurrency@@SAXXZ+1256

000007FEECA722DA 0000000006DBFA90 ?_CheckTaskCollection@_UnrealizedChore@details@Concurrency@@IEAAXXZ+76A

000007FEECA7AE98 0000000006DBFAF0 ?try_lock@critical_section@Concurrency@@QEAA_NXZ+3C

000007FEEEEDCDC5 0000000006DBFB40 _Thrd_yield+18D

000007FEEEEDCF80 0000000006DBFB90 _Mtx_trylock+28

00000001400834CF 0000000006DBFC10 ??1CreatureEventAI@@UEAA@XZ+80F

00000001400227DA 0000000006DBFC40 0001:00000000000217DA C:\tt\mangosd.exe

000007FEECA92925 0000000006DBFCB0 _initterm_e+199

000007FEECA92ADE 0000000006DBFCE0 exit+11E

0000000077A443A1 0000000006DBFE00 LdrShutdownProcess+1D1

0000000077A441B0 0000000006DBFE30 RtlExitUserProcess+90

0000000077940F3F 0000000006DBFE60 GetNumberOfConsoleFonts+CF

0000000077954803 0000000006DBFF50 CtrlRoutine+1D3

000000007791652D 0000000006DBFF80 BaseThreadInitThunk+D

0000000077A4C541 0000000006DBFFD0 RtlUserThreadStart+21

ROKB commented 8 years ago

2015-12-01 17:40:25 WORLD: Received opcode CMSG_ZONEUPDATE: newzone is 12 2015-12-01 17:40:25 STORAGE: DestroyZoneLimitedItem in map 0 and area 12 2015-12-01 17:40:25 Creature movement start script 1126001 at point 1 for Creature (Entry: 11260 Guid: 80127). 2015-12-01 17:40:25 WORLD: Received opcode CMSG_JOIN_CHANNEL (151, 0x97) 2015-12-01 17:40:25 WORLD: Received opcode CMSG_JOIN_CHANNEL (151, 0x97) 2015-12-01 17:40:26 DB-SCRIPTS: Process table dbscripts_on_creature_movement id 1126001, command 1 for source Creature (Entry: 11260 Guid: 80127) (in world), target Creature (Entry: 11260 Guid: 80127) (in world) 2015-12-01 17:40:26 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 196 Guid: 79971) 2015-12-01 17:40:26 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 196 Guid: 79971) 2015-12-01 17:40:26 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 951 Guid: 79969) 2015-12-01 17:40:26 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 951 Guid: 79969) 2015-12-01 17:40:31 WORLD: got cast spell packet, spellId - 7266, data length = 8 2015-12-01 17:40:31 Sending SMSG_SPELL_START id=7266 2015-12-01 17:40:31 Sending SMSG_SPELL_GO id=7266 2015-12-01 17:40:31 Spell 7266 Effect0 : 83 Targets: Player TestTR (Guid: 9), -, - 2015-12-01 17:40:31 Gameobject (Entry: 21680 Guid: 900161) enters grid[15,31] 2015-12-01 17:40:32 WORLD: received CMSG_DUEL_ACCEPTED 2015-12-01 17:40:32 Player 1 is: 9 (TestTR) 2015-12-01 17:40:32 Player 2 is: 8 (RogueTR) 2015-12-01 17:40:34 Map::GetHitPosition vmaps corrects gained with static objects! new dest coords are X:-8994.124023 Y:-252.969345 Z:73.008598 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 823 Guid: 79942) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 823 Guid: 79942) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 925 Guid: 79967) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 925 Guid: 79967) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 911 Guid: 79964) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 911 Guid: 79964) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 952 Guid: 79968) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 952 Guid: 79968) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 459 Guid: 79966) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 459 Guid: 79966) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 197 Guid: 79970) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 197 Guid: 79970) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 5895 Guid: 590017) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 5895 Guid: 590017) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 11940 Guid: 79949) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 11940 Guid: 79949) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 196 Guid: 79971) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 196 Guid: 79971) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player RogueTR (Guid: 8) to Creature (Entry: 951 Guid: 79969) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 951 Guid: 79969) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 823 Guid: 79942) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 823 Guid: 79942) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 925 Guid: 79967) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 925 Guid: 79967) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 911 Guid: 79964) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 911 Guid: 79964) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 952 Guid: 79968) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 952 Guid: 79968) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 459 Guid: 79966) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 459 Guid: 79966) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 197 Guid: 79970) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 197 Guid: 79970) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 5895 Guid: 590017) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 5895 Guid: 590017) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 11940 Guid: 79949) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 11940 Guid: 79949) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 951 Guid: 79969) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 951 Guid: 79969) 2015-12-01 17:40:35 WORLD: Received opcode CMSG_QUESTGIVER_STATUS_QUERY - for Player TestTR (Guid: 9) to Creature (Entry: 196 Guid: 79971) 2015-12-01 17:40:35 WORLD: Sent SMSG_QUESTGIVER_STATUS for Creature (Entry: 196 Guid: 79971) 2015-12-01 17:40:36 WORLD: got cast spell packet, spellId - 25307, data length = 8 2015-12-01 17:40:36 Sending SMSG_SPELL_START id=25307 2015-12-01 17:40:37 WORLD: got cast spell packet, spellId - 1857, data length = 6 2015-12-01 17:40:37 Sending SMSG_SPELL_START id=1857 2015-12-01 17:40:37 STORAGE: DestroyItemCount item = 5140, count = 1 2015-12-01 17:40:37 Sending SMSG_SPELL_GO id=1857 2015-12-01 17:40:37 Spell 1857 Effect0 : 64 Targets: Player RogueTR (Guid: 8), -, - 2015-12-01 17:40:37 Sending SMSG_SPELL_GO id=11329 2015-12-01 17:40:37 Spell 11329 Effect1 : 6 Targets: Player RogueTR (Guid: 8), -, - 2015-12-01 17:40:37 Spell: Aura is: 16 2015-12-01 17:40:37 Aura: construct Spellid : 11329, Aura : 16 Target : 1 Damage : 360 2015-12-01 17:40:37 Spell 11329 Effect2 : 6 Targets: Player RogueTR (Guid: 8), -, - 2015-12-01 17:40:37 Spell: Aura is: 31 2015-12-01 17:40:37 Aura: construct Spellid : 11329, Aura : 31 Target : 1 Damage : 0

Ve1vet commented 8 years ago

@ROKB write me on cmangos forum(Velvet).

ROKB commented 8 years ago

@vovk private massage?

ROKB commented 8 years ago

http://imgur.com/WF01FMc

Ve1vet commented 8 years ago

@ROKB yes, private message. I need your help for testing, because i don't have spase on my computer for client + server. And yes i knew that the problem in that string. I'll find the way to conver ObjectGuid in uint32 with your help.

ROKB commented 8 years ago

@vovk ok what am i do just message?

ROKB commented 8 years ago

@vovk any answer??

ROKB commented 8 years ago

anyone here?

trimken commented 8 years ago

still not working

ROKB commented 8 years ago

@trimken any progress?? lol..

SilvioDoMine commented 8 years ago

I tried do this at Eluna Cmangos and when I use Stealth to cancel any cast, the mangosd just crash

SilvioDoMine commented 8 years ago

Funny, this on TBC works perfecly. This should be on the main repository. Its a good fix.

Phatcat commented 8 years ago

Eluna cmangos is not part of cmangos. That is a seperate project.

What do you mean that it works perfectly on TBC? Why is this issue open, then? TBC is one of our main repositories. What exactly should be on the TBC repo?

SilvioDoMine commented 8 years ago

@Phatcat I was testing this FIX of Stealth/Feign Death by @vovk on the last revision of cmagos-tbc. With it, the Stealth and Feign Death Cancel the enemy cast when you use the ability.

https://github.com/cmangos/issues/issues/803#issuecomment-160422780 (TBC Code)

Phatcat commented 8 years ago

How about the crash reported as a result by it?

Phatcat commented 8 years ago

Okay, I see the crash is associated with the classic port of that fix.

SilvioDoMine commented 8 years ago

@Phatcat Yes, the crash is associated with the classic core. The TBC works perfectly.

BenDol commented 5 years ago

this still a valid issue?

BenDol commented 5 years ago

Tested the issue again on the latest TBC core / db with no issues. I couldn't reproduce it with any DOTs or channeling spells.