Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи на рассмотрении (http://mangos.ytdb.ru/forumdisplay.php?f=49)
-   -   [patch] Savage Combat (http://mangos.ytdb.ru/showthread.php?t=3253)

Den 20.12.2010 09:27

[patch] Savage Combat
 
http://www.wowhead.com/spell=51682
http://www.wowhead.com/spell=58413
Заброшенный талант, а точнее его вторая часть работы.
Когда на цель налаживаются такие яды как - Mind-numbing Poison, Deadly Poison, Wound Poison, Crippling Poison, а проще говоря когда цель AURA_STATE_DEADLY_POISON , на неё должен налаживатся дебаф.

патч для удаление дебафа когда c цели сняты эффекты ядов:

PHP код:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index f5cc0c7
..27b7666 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -8609,+8609,30 @@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
             break;
         }
         case 
SPELLFAMILY_ROGUE:
+        {
+            
// remove debuf savage combat
+            if (GetSpellProto()->SpellFamilyName == SPELLFAMILY_ROGUE && GetSpellProto()->SpellFamilyFlags UI64LIT(0x0008000010014000))
+            {
+                
// search poison
+                bool found false;
+                
Unit::SpellAuraHolderMap const& auras m_target->GetSpellAuraHolderMap();
+                for(
Unit::SpellAuraHolderMap::const_iterator itr auras.begin(); itr!=auras.end(); ++itr)
+                {
+                    if(
itr->second->GetSpellProto()->Dispel == DISPEL_POISON)
+                    {
+                        
found true;
+                        break;
+                    }
+                }
+
+                if(!
found)
+                {
+                    
m_target->RemoveAurasDueToSpell(58684);      // Savage Combat rank 1
+                    m_target->RemoveAurasDueToSpell(58683);      // Savage Combat rank 2
+                }
+            }
             
// Sprint (skip non player casted spells by category)
-            if (GetSpellProto()->SpellFamilyFlags UI64LIT(0x0000000000000040) && GetSpellProto()->Category == 44)
+            else if (
GetSpellProto()->SpellFamilyFlags UI64LIT(0x0000000000000040) && GetSpellProto()->Category == 44)
             {
                 if(!
apply || m_target->HasAura(58039))      // Glyph of Blurred Speed
                     
spellId1 61922;                       // Sprint (waterwalk)
@@ -8620,+8642,@@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
             else
                 return;
             break;
+        }    
         case 
SPELLFAMILY_HUNTER:
         {
             
// The Beast Within and Bestial Wrath - immunity 

sql для наложение дебафа:

Код:

DELETE FROM `spell_proc_event` WHERE `entry` IN (51682, 58413);
INSERT INTO `spell_proc_event` VALUES
(51682, 0x00,  8, 0x10014000, 0x10014000, 0x10014000, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000,  0),
(58413, 0x00,  8, 0x10014000, 0x10014000, 0x10014000, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000,  0);


zergtmn 20.12.2010 11:32

Цитата:

GetSpellProto()->SpellFamilyName == SPELLFAMILY_ROGUE
дважды проверяешь
Цитата:

if(itr->second->GetSpellProto()->Dispel == DISPEL_POISON)
Здесь надо проверять SpellFamilyName == SPELLFAMILY_ROGUE и flags1 & 0x80000

Den 09.03.2011 20:47

Выходит вот так ?

PHP код:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 67fe692
..9911b3d 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -9008,+9008,31 @@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
             break;
         }
         case 
SPELLFAMILY_ROGUE:
+        {
+            
// remove debuf savage combat
+            if (GetSpellProto()->SpellFamilyFlags UI64LIT(0x0008000010014000))
+            {
+                
// search poison
+                bool found false;
+                
Unit::SpellAuraHolderMap const& auras m_target->GetSpellAuraHolderMap();
+                for (
Unit::SpellAuraHolderMap::const_iterator itr auras.begin(); itr != auras.end(); ++itr)
+                {
+                    
uint32 flags1 m_target->HasAuraState(AURA_STATE_DEADLY_POISON);
+                    if (
itr->second->GetSpellProto()->SpellFamilyName == SPELLFAMILY_ROGUE && (flags1 & (0x80000)))
+                    {
+                        
found true;
+                        break;
+                    }
+                }
+
+                if (!
found)
+                {
+                    
m_target->RemoveAurasDueToSpell(58684); // Savage Combat rank 1
+                    m_target->RemoveAurasDueToSpell(58683); // Savage Combat rank 2
+                }
+            }
             
// Sprint (skip non player casted spells by category)
-            if (GetSpellProto()->SpellFamilyFlags UI64LIT(0x0000000000000040) && GetSpellProto()->Category == 44)
+            else if (
GetSpellProto()->SpellFamilyFlags UI64LIT(0x0000000000000040) && GetSpellProto()->Category == 44)
             {
                 if(!
apply || m_target->HasAura(58039))      // Glyph of Blurred Speed
                     
spellId1 61922;                       // Sprint (waterwalk)
@@ -9019,+9042,@@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
             else
                 return;
             break;
+        }
         case 
SPELLFAMILY_HUNTER:
         {
             switch (
GetId()) 


Den 29.07.2011 21:58

Примерно в последних 50-ти - 60-ти коммитах, случилось нечто такое магическое , что привело к нерабочему состоянию таланта Жар битвы, а точнее он не стал прокать. Будет время просмотрю, или я отстал от чего-то? О_о Потому что на 11692 ревизии проблем с проком этого таланта нету.

Laise 29.07.2011 22:12

на 11760 тоже не должно быть проблем

rsa 29.07.2011 23:45

Цитата:

Сообщение от Laise (Сообщение 24375)
на 11760 тоже не должно быть проблем

после 11737 с проками полная и откровенная задница, по крайней мере стаки модификаторов сниматься перестали вообще. 11760 выглядит логично, но судя по коду после него все подобные проки надо прописывать вручную...

Laise 30.07.2011 07:42

Цитата:

Сообщение от rsa (Сообщение 24376)
после 11737 с проками полная и откровенная задница, по крайней мере стаки модификаторов сниматься перестали вообще. 11760 выглядит логично, но судя по коду после него все подобные проки надо прописывать вручную...

проки для спеллов с зарядами и имеющие SPELL_AURA_ADD_FLAT_MODIFIER, SPELL_AURA_ADD_PCT_MODIFIER, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE должны сниматься без каких либо изменений в базе(после 11761). Все остальные спеллы которые работали ранее тоже без изменений. Надо вручную прописывать только те спеллы которым обязателен прок в конце каста и без зарядов или modifier аур.Ну и если какие то из этих спеллов надо перенести на on-hit.

rsa 30.07.2011 15:41

Цитата:

Сообщение от Laise (Сообщение 24379)
должны сниматься без каких либо изменений в базе(после 11761). Все остальные спеллы которые работали ранее тоже без изменений.

однако ж не снимаются. проверялось на проке от Огненного шара (сломался четко в 11737) - глыбы можно кидать очередью. да и вообще коммит без подпрыгиваний не компилится, почему - я в бранче отписал...

Laise 30.07.2011 16:58

48108 вообще не имеет ни прок флага(надо добавить в базу) ни зарядов(в коде ему потом заряд добавили).. Кроме этого и еще 2х спеллов, ауры этих 3 типов с зарядами все имеют прок флаги, так что там вряд ли придется добавлять в базу очень много
---
после 11762 должно компилиться

rsa 30.07.2011 17:43

по issues в R2 таких спеллов явно больше десятка, а по моим прикидкам - штук 40. я еще сделал вручную Shadow Trance - но так мы до ручки докатимся. "работало же!" :)

Laise 30.07.2011 18:01

Цитата:

Сообщение от rsa (Сообщение 24390)
по issues в R2 таких спеллов явно больше десятка, а по моим прикидкам - штук 40. я еще сделал вручную Shadow Trance - но так мы до ручки докатимся. "работало же!" :)

в Aura::HandleAddModifier вроде список, там где заряды добавили, остальное надо по 1 отлавливать..и как бы да, неплохо бы id того что туда не входит подкинуть((откуда там 40?)
edit: в 11764 добавлено из Aura::HandleAddModifier
---
можно переехать в приват/комменты к коммитам? а то тут немного не по теме..


Текущее время: 04:15. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS