PDA

Просмотр полной версии : Вопрос по Attributes


Velvet
16.05.2012, 20:46
Копался в spell.dbc (TBC) чтобы посмотреть информацию по спелам, которые имеют эфект DISPEL_MAGIC.
И у всех спелов ( Mass Dispel / Dispel Magic / Devour Magic / Arcane Shot / Purge ) в поле Attributes вписано значение 0x10000, ну у Mass Dispel 0x20010000 -> 0x2000000 + 0x10000.

А в SharedDefines.h написана следующая вещь:

#define SPELL_ATTR_NOT_SHAPESHIFT 0x00010000 // 16 Not while shapeshifted

Взять Devour Magic у лока, а темболее его пэта Fellhunter( у которого этот спел) и в помине нет никаких форм.
Если взять приста, то Dispel и Mass Dispel должны кастоваться и в Shadowform, а это уже Shapeshift. А я сильно сомневаюсь, что Близарды такие идиоты.
У хантов ( Arcane Shot ) тоже нету никаких форм.
Единственное, у кого есть форма, это Шаман( Ghost Wolf ) -> Purge.

Исключение из этого всего состваил Маговский Spellsteal у которого атрибут 0x40000.

Собственно возникает дурацкий вопрос. Причём тут формы? И с чего вобще взяли, что этот атрибут отвечает за формы?
Заранее спасибо за разъяснения.

Lordronn
16.05.2012, 21:14
Этот атрибут значит, что спелл кастуется вне формы

Velvet
16.05.2012, 21:34
Этот атрибут значит, что спелл кастуется вне формы :mda:... ну да, зачем читать все сообщение? Лучше сразу написать какой попало ответ.
Я итак догадался что "Not while shapeshifted" это и означает.
Только все дело что у Локов нету форм вобще и куча спелов привязано к значению 0х10000. А диспел и масс диспел у которых этот атрибут должны кастоваться в Shadowform ( а это ниразу не отвечает требованию "Not while shapeshifted" ).

Lordronn
16.05.2012, 21:43
Этот аттрибут вроде не всегда значит "не в любой форме", он может значить "не в форме X"

Velvet
16.05.2012, 21:48
Допустим так. Но я наверное тупой... В упор не могу понять зачем локу делать проверку на Shadow Bolt, Searing Pain, etc., если у него нету форм в помине...

Den
16.05.2012, 21:55
Ну так все классовые спелы которые не требуют форм (за исключением некоторых положительных с использованием на себя) идут с аттрибутом SPELL_ATTR_NOT_SHAPESHIFT, а которые кастятся в формах идут без него. Можно догадаться, что это сделано для проверок.

Velvet
16.05.2012, 22:12
Ну так все классовые спелы которые не требуют форм (за исключением некоторых положительных с использованием на себя) идут с аттрибутом SPELL_ATTR_NOT_SHAPESHIFT, а которые кастятся в формах идут без него. Можно догадаться, что это сделано для проверок.

Пример спелов с этим атрибутом:
Dispel, Mass Dispel пристовский не положительные( можно кастовать в Shadowform -> Shapeshift ).
Ptayer of Healing пристовский положительный ( нельзя кастовать в Shadowform )
Healing Wave шамовский положительный ( нельзя кастовать в ghost wolf )
Lightning Bolt шамовский не положительный ( нельзя кастовать в ghost wolf )

WTF???=))) Уже каким то абсурдом попахивает...

Velvet
16.05.2012, 22:17
Всё я понял. Спасибо.
Я пример подобрал, теперь понял. Если спел требует форму кота, к примеру, он идёт без этого атрибута. Если не требует никакую форму, то идёт с этим атрибутом.

Название неок как и коммент для него.
Надо будет у себя переименовать в DO_NOT_REQ_SHAPESHIFT. Что-нибудь такое...

Den
16.05.2012, 22:36
А как же если спел кастуется и в форме и без ? Пример пристовский диспел.
То тогда добавляется еще один аттрибут SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT , выходит тема расскрыта ? ))

Velvet
16.05.2012, 22:41
Впринципе да :yes3: Но опять таки надо переименовать в что-нибудь типа SPELL_ATTR_EX2_NOT_NEED_SHAPELOST. Чтобы больше подходило по смыслу.
Ещё раз спасибо.

К примеру сразу нашёл ошибку, которая давно не давала покоя. Кто то вот тоже незная истинных значений атрибутов написал следующую проверку:
if(actAsShifted)
{
if (spellInfo->Attributes & SPELL_ATTR_NOT_SHAPESHIFT) // not while shapeshifted
return SPELL_FAILED_NOT_SHAPESHIFT;
else if (spellInfo->Stances != 0) // needs other shapeshift
return SPELL_FAILED_ONLY_SHAPESHIFT;
}

Как результат, когда в стелсе пытаешься сесть на маунта, вместо того, чтобы снялся стелс и начал кастоваться маунт тебя посылает вот такими красненькими букавками: "Not while shapeshift" =)))

Йоха
17.05.2012, 10:33
Допустим так. Но я наверное тупой... В упор не могу понять зачем локу делать проверку на Shadow Bolt, Searing Pain, etc., если у него нету форм в помине...

Здрасте как это нету, а это что по твоему ? Метаморфоза (http://ru.wowhead.com/spell=59672)

rsa
17.05.2012, 12:39
Как результат, когда в стелсе пытаешься сесть на маунта, вместо того, чтобы снялся стелс и начал кастоваться маунт тебя посылает вот такими красненькими букавками: "Not while shapeshift" =)))
как в анекдоте - "девушка, где вы взяли такие тонкие и кривые чулки?". ошибка уже 2 года как поправлена.
PS шэйпшифт-формы есть у всех, даже у паладина, а уж у лока-то всем известная метаморфоза.

Velvet
17.05.2012, 15:15
Здрасте как это нету, а это что по твоему ? Метаморфоза (http://ru.wowhead.com/spell=59672) Это ЛК уже или вобще ката, я хз. Я в первом посте написал "TBC" -> The Burning Crusade :)

ошибка уже 2 года как поправлена.
PS шэйпшифт-формы есть у всех, даже у паладина, а уж у лока-то всем известная метаморфоза. На ЛК может и исправлена, я не знаю, я ЛК не интересуюсь. А на Mangos-One он до сих пор есть.

partizanes
18.05.2012, 01:08
если верить коментам на том же wowhead то было оно и на 2.4.3
http://ru.wowhead.com/spell=59672#english-comments
Английские комментарии поиск по (Обновление 2.4.3)