Тема: 25d cooldown
Показать сообщение отдельно
Старый 09.12.2012, 23:43   #1
roman
Гость
 
Сообщений: n/a
Сообщение 25d cooldown

У некоторых способностей после применения, кулдаун - 25 дней (например Цепная молния шамана).

Код:
14dc6d929f226b86745d7dd0a134f9a866d7f790
 src/game/Player.cpp | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 445a8ea..bd59146 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -19909,6 +19909,12 @@ void Player::AddSpellMod(Aura* aura, bool apply)
     Modifier const* mod = aura->GetModifier();
     uint16 Opcode= (mod->m_auraname == SPELL_AURA_ADD_FLAT_MODIFIER) ? SMSG_SET_FLAT_SPELL_MODIFIER : SMSG_SET_PCT_SPELL_MODIFIER;
 
+    uint32 modTypeCount = 0;    // count of mods per one mod->op
+    WorldPacket data(Opcode, 4 + 4 + 1 + 1 + 4);
+    data << uint32(1);          // count of different mod->op's in packet
+    size_t writePos = data.wpos();
+    data << uint32(modTypeCount);
+    data << uint8(mod->m_miscvalue);
     for(int eff = 0; eff < 96; ++eff)
     {
         uint64 _mask = 0;
@@ -19928,15 +19934,14 @@ void Player::AddSpellMod(Aura* aura, bool apply)
                     val += (*itr)->GetModifier()->m_amount;
             }
             val += apply ? mod->m_amount : -(mod->m_amount);
-            WorldPacket data(Opcode, 4 + 4 + 1 + 1 + 4);
-            data << uint32(1);
-            data << uint32(1);
-            data << uint8(mod->m_miscvalue);
+
             data << uint8(eff);
-            data << int32(val);
-            SendDirectMessage(&data);
+            data << float(val);
+            ++modTypeCount;
         }
     }
+    data.put<uint32>(writePos, modTypeCount);
+    SendDirectMessage(&data);
 
     if (apply)
         m_spellMods[mod->m_miscvalue].push_back(aura);
Автор патча: amaru
http://paste2.org/p/2559240

Последний раз редактировалось roman; 09.12.2012 в 23:45.
  Ответить с цитированием