Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи на рассмотрении (http://mangos.ytdb.ru/forumdisplay.php?f=49)
-   -   [patch] Shaman T10 Elemental 2P Bonus (http://mangos.ytdb.ru/showthread.php?t=4844)

Den 03.07.2011 17:27

[patch] Shaman T10 Elemental 2P Bonus
 
Кое-какая информация по опкоду SMSG_MODIFY_COOLDOWN , была взята отсюда: http://ru-mangos.ru/showthread.php?t=2708

Автор: ?
Код:

diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp
index 92347ec..024a02b 100644
--- a/src/game/UnitAuraProcHandler.cpp
+++ b/src/game/UnitAuraProcHandler.cpp
@@ -2385,6 +2385,23 @@ SpellAuraProcResult Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura
                    basepoints[0] = int32(triggerAmount * damage / 100) / GetSpellAuraMaxTicks(triggered_spell_id);
                    break;
                }
+                // Item - Shaman T10 Elemental 2P Bonus
+                case 70811:
+                {
+                    // Lightning Bolt == 0x0000000000000001,  Chain Lightning == 0x0000000000000002
+                    if (procSpell->IsFitToFamilyMask(UI64LIT(0x0000000000000003)))
+                    {
+                        uint32 cooldown = ((Player*)this)->GetSpellCooldownDelay(16166);
+                        ((Player*)this)->AddSpellCooldown(16166, 0, uint32(time(NULL) + cooldown));
+
+                        WorldPacket data(SMSG_MODIFY_COOLDOWN, 4 + 8 + 4);
+                        data << uint32(16166);
+                        data << uint64(GetObjectGuid());
+                        data << int32(-2000);
+                        ((Player*)this)->GetSession()->SendPacket(&data);
+                        return SPELL_AURA_PROC_OK;
+                    }
+                }
            }
            // Storm, Earth and Fire
            if (dummySpell->SpellIconID == 3063)


Amaru 04.07.2011 21:12

не понятно.

спеллу выставляется такой же кулдаун, какой и был.
клиенту высылается обновление кулдауна, хотя это не произошло.
и что клиент будет думать, если оставшееся кд, например, 1 секунда, а ему приходит изменение на -2 сек?
конверт uint64(GetObjectGuid()) вроде бы не нужен, не так ли?
зачем обрабатывать прок, если кд на спелле нет?
не хватает break в case

2000 хранится в basepoints, а прок можно было бы запилить в spell_proc_event

Den 04.07.2011 22:11

Ну попробуйте.

зачем break после return ? О_о

add
Цитата:

Сообщение от Amaru (Сообщение 23857)
а прок можно было бы запилить в spell_proc_event

имхо лишние записи в бд, не к чему .

Vipertv 05.07.2011 10:01

До использования таких вещей как ((Player*)this), возможно стоит проверять на соответствие GetTypeId к TYPEID_PLAYER. Это позволит избежать хоть и маловероятного но все-таки краша.

Den 20.07.2011 18:52

Хм... это не мое "творение"... патч с ссылкой на http://ru-mangos.ru/showthread.php?t=2708 случайно залетел в папку /мои_патчи, и при чем довольна таки давно лежал там. Может быть с гетмангоса или с форка какого.

Amaru 21.07.2011 22:42

Цитата:

Сообщение от Den (Сообщение 23871)
Ну попробуйте.
зачем break после return ? О_о.

потому что если спелл не чайник и не болт, то при наличии кода после этого кейса на прок, свитч провалится дальше.

имхо, треш а не патч :bad:

HuntsMan 22.07.2011 01:53

А почему бы момент с отсылкой пакета SMSG_MODIFY_COOLDOWN не перенести в AddSpellCooldown?


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

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