PDA

Просмотр полной версии : [11649][fix] aura Master of Subtlety duration in seconds


Den
14.11.2010, 23:23
Должен идти отсчёт в секундах, у нас же тупо висит до окончания.

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 81bc6ff..fa7791f 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -3962,7 +3962,16 @@ void Aura::HandleModStealth(bool apply, bool Real)
{
// Master of Subtlety
if ((*i)->GetSpellProto()->SpellIconID == 2114)
+ {
target->CastSpell(target, 31666, true);
+ // duration aura in seconds
+ if (Aura* aura = target->GetAura(31665, EFFECT_INDEX_0))
+ {
+ aura->SetAuraMaxDuration(6*IN_MILLISECONDS);
+ aura->GetHolder()->RefreshHolder();
+ }
+ }
+
// Overkill
else if ((*i)->GetId() == 58426 && GetSpellProto()->SpellFamilyFlags & UI64LIT(0x0000000000400000))
{

Den
18.06.2011, 09:00
подтверждение : http://www.youtube.com/watch?v=vPtyigjz9AA

патч под 11642:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index a4e8b1d..9ee00b4 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -4449,7 +4449,14 @@ void Aura::HandleModStealth(bool apply, bool Real)
{
// Master of Subtlety
if ((*i)->GetSpellProto()->SpellIconID == 2114)
+ {
target->CastSpell(target, 31666, true);
+ if (SpellAuraHolder* holder = target->GetSpellAuraHolder(31665))
+ {
+ holder->SetAuraMaxDuration(6 * IN_MILLISECONDS);
+ holder->RefreshHolder();
+ }
+ }
// Overkill
else if ((*i)->GetId() == 58426 && GetSpellProto()->SpellFamilyFlags & UI64LIT(0x0000000000400000))
{

zergtmn
18.06.2011, 12:51
Компиляцию не проверяли? SetAuraMaxDuration перенесен в холдеры

Vladimir
19.06.2011, 02:31
31666 кастается на слетание stealth-а и имеет 6 sec длительность
У нас тик игнорируется и в целях надежности просто при снятии 31666 снимется и 31665 в Aura::HandleAuraPeriodicDummy. Горазда более логично иметь выставление
длительности там-же и без использования зашитых длительностей в коде.

С таким изменением в [11649]. Спасибо.