|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Как отредактировать урон у спелла босса? 4.3.4 |
Как отредактировать урон у спелла босса? 4.3.4 |
Предоставленной Вами информации недостаточно для выработки однозначного заключения. Данная способность на восемь секунд накладывает на цель периодическую ауру-пустышку, что означает реализацию ее механики работы при помощи специального сценария в базе или даже ядре. Некоторые поля способности заполнены, но штатно использоваться, согласно ее настройкам, не могут, что, в свою очередь, еще раз намекает на использование этих параметров сценарием ядра. Скорее всего урон наносится другой способностью, применение которой предположительно вызывает сценарий данной: '75591'. В описании также присутствует ссылка на `BasePoints` первого эффекта способности '69483'. Предоставьте аналогичную информацию по этим двум способностям для получения более конкретных рекомендаций.
Сообщение # 2 написано 02.02.2018 в 23:59
|
Предоставленной Вами информации недостаточно для выработки однозначного заключения. Данная способность на восемь секунд накладывает на цель периодическую ауру-пустышку, что означает реализацию ее механики работы при помощи специального сценария в базе или даже ядре. Некоторые поля способности заполнены, но штатно использоваться, согласно ее настройкам, не могут, что, в свою очередь, еще раз намекает на использование этих параметров сценарием ядра. Скорее всего урон наносится другой способностью, применение которой предположительно вызывает сценарий данной: '75591'. В описании также присутствует ссылка на `BasePoints` первого эффекта способности '69483'. Предоставьте аналогичную информацию по этим двум способностям для получения более конкретных рекомендаций.
Добавлено (03.02.2018, 09:35) Предоставленной Вами информации недостаточно для выработки однозначного заключения. Данная способность на восемь секунд накладывает на цель периодическую ауру-пустышку, что означает реализацию ее механики работы при помощи специального сценария в базе или даже ядре. Некоторые поля способности заполнены, но штатно использоваться, согласно ее настройкам, не могут, что, в свою очередь, еще раз намекает на использование этих параметров сценарием ядра. Скорее всего урон наносится другой способностью, применение которой предположительно вызывает сценарий данной: '75591'. В описании также присутствует ссылка на `BasePoints` первого эффекта способности '69483'. Предоставьте аналогичную информацию по этим двум способностям для получения более конкретных рекомендаций.
Сообщение # 3 написано 03.02.2018 в 09:35
|
К сожалению, однозначности все еще нет. Проблема в том, что исходная способность разными способами ссылается на две другие, различные, но идентичные по генерируемому функционалу, записи. Выглядит это примерно так:
Исходная(75592) в поле `TriggerSpell[0]` ссылается на Имплементацию_1(75591), которая наносит 20к урона и восполняет заклинателю 100к здоровья за каждую пораженную цель в радиусе '15' от исходной цели способности. Имплементация_1 (и, скорее всего, Исходная) в своем описании ссылается на `BasePoints[0] + EffectDieSides[0]` Пустышки(69483), что в пересчете, по всей видимости, дает 14250-15270 ед. урона, что противоречит настройкам Имплементации_1. Пустышка в поле `TriggerSpell[0]`, в свою очередь, ссылается на Имплементацию_2(69482), которая наносит уже 15к урона и восполняет заклинателю 75к здоровья, опять же, за каждую пораженную цель, но в радиусе уже '10' от исходной цели способности. Заметьте, что значения этих параметров явно противоречат таковым у Имплементации_1, однако проблема в том, что, согласно предоставленной информации, обе имплементации совершенно равнозначны, поскольку при штатной обработке Исходной способности не будет вызвана ни одна(/1). Замысел, впрочем, уже можно представить: Исходная способность, судя по всему, посылает некий снаряд средней скорости полета. Снаряд попадает в цель, которая, по истечению 8 сек., спровоцирует нанесение некоторого (неопределенного на данный момент) урона всем враждебным заклинателю целям (включая себя) в неопределенном (опять же) радиусе вокруг себя, при этом заклинатель восполнит пятикратное общему нанесенному урону количество здоровья (в общем, пример реализации стандартной механики "получил - отбежал"). Чтобы иметь возможность утверждать что-то более конкретное однозначно, необходимо дифференцировать имплементации, дабы определить, какая из них действительно используется. Сделать это можно двумя способами: 1) Вменяемо. Найти сценарий, контролирующий поведение Исходной способности (посмотреть `world.spell_script{s | _names}` на предмет наличия ключей '75592'/'69483' для начала) и просмотреть логику, в нем содержащуюся(/1). 2) Менее вменяемо. Проводить "полевые испытания" и сравнивать получаемые значения с теми, что я привел выше, таким образом, возможно, определяя, какая из двух (если используется действительно только одна) имплементаций подходит больше. Впрочем, рассчитывать на это я бы не стал(/1). /1: Все заявления, помеченные этой сноской, основываются на предположении, что `SPELL_AURA_PERIODIC_DUMMY` не приводит при стандартной обработке ядром к срабатыванию зависимой способности (Trigger Spell), особенно учитывая, что шанс срабатывания в `.dbc` помечен как нулевой. Это, впрочем, может быть переопределено в таблице `world.spell_proc(_event)`, однако намек на то, что близзардский исходник был имплементирован особым сценарием, силы не утрачивает. Если же это не так, и этот тип аур может штатно вызвать срабатывание зависимой способности (этого я просто не помню сейчас, к сожалению) - поправить урон Исходной можно простым изменением `BasePoints[0]` Имплементации_1 (нелишним будет отметить, впрочем, что описание способности продолжит содержать несоответствующую реальности информацию). П.С: Всю неразбериху можно было бы элегантно объяснить тем, что Пустышка - на самом деле не пустышка, а исходная для нормального уровня сложности, а оригинальная Исходная, соответственно, - для героической, однако этой теории катастрофически не хватает данных о сложности для Имплементации_2, аналогичных таковым у Имплементации_1. В этом случае косяки описания всех способностей можно было бы списать на банальные (и нередкие, кстати) проявления лени создавшего способности сотрудника Метелицы. |
p620, p620,
Я попробовал изменить урон с помощью этого кода: Код case 75592: //test spellInfo->Effects[EFFECT_0].BasePoints = 1; break; case 75591: //test spellInfo->Effects[EFFECT_0].BasePoints = 1; break; case 69483: //test spellInfo->Effects[EFFECT_0].BasePoints = 1; break; case 69482: //test spellInfo->Effects[EFFECT_0].BasePoints = 1; break; case 75117: //test spellInfo->Effects[EFFECT_0].BasePoints = 1; break; Урон изменился да,но не достаточно,он изменился с 9000+ на 400+,а мне надо что бы был урон 10+. Я предпологаю что нужно убрать таким кодом еще и Multiple = 5 (есть в Spellwork после BasePoints) Но какой код что бы убрать это умножение? Код spellInfo->Effects[EFFECT_1].Multiple = 0; |
Этот коэффициент в данном случае отвечает за количество здоровья, восполняемого заклинателем на единицу нанесенного способностью урона; за скалирование самого урона он не отвечает. То, что Вы вставили в, я так полагаю, какой-то обработчик способностей, есть очень грубый хак, от которого, я надеюсь, после проведения своих тестов Вы избавитесь. И если урон после этого действительно не изменился надлежащим образом - наличие дополнительных настроек этих способностей где-то в базе/ядре просто гарантируется. Их нужно найти, просмотреть и, при необходимости, поправить. Начать, как я уже писал, следует отсюда:
(посмотреть `world.spell_script{s | _names}` на предмет наличия ключей '75592'/'69483' для начала) Код switch(condVar) { case valA: case valB: case valC: doSomething(); break; // в данном случае опционален } |
(посмотреть `world.spell_script{s | _names}` на предмет наличия ключей '75592'/'69483' для начала) в этой таблице нашел только 75592. Но что мне это даст? не могу понять связь. Вот нашел класс по этому скрипту Код class spell_anhuur_divine_reckoning : public SpellScriptLoader { public: spell_anhuur_divine_reckoning() : SpellScriptLoader("spell_anhuur_divine_reckoning") { } class spell_anhuur_divine_reckoning_AuraScript : public AuraScript { PrepareAuraScript(spell_anhuur_divine_reckoning_AuraScript); void OnPeriodic(AuraEffect const* aurEff) { if (Unit* caster = GetCaster()) { CustomSpellValues values; values.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount()); caster->CastCustomSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, values, GetTarget()); } } void Register() override { OnEffectPeriodic += AuraEffectPeriodicFn(spell_anhuur_divine_reckoning_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; AuraScript* GetAuraScript() const override { return new spell_anhuur_divine_reckoning_AuraScript(); } }; Но что с ним сделать я не понимаю.) |
Ну вот, собственно, и ответ. Если хотите убрать модификатор - используйте стандартный `CastSpell`, не требующий передачи дополнительных значений. Таким образом урон будет наноситься тот, который указан в `.dbc`. Я уже очень давно ничего не писал под TrinityCore, а доков на него, насколько мне известно, нет, так что за правильность ручаться не могу (нужно решение на руках иметь, чтобы убеждаться в корректности). Замените
Код CustomSpellValues values; values.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount()); caster->CastCustomSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, values, GetTarget()); Код caster->CastSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, GetTarget());
Сообщение # 8 написано 03.02.2018 в 23:06
|
CustomSpellValues values;values.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount()); caster->CastCustomSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, values, GetTarget()); на Код caster->CastSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, GetTarget()); Добавлено (04.02.2018, 12:51) |
| |||
| |||