PDA

Просмотр полной версии : [patch] Прерывание channeled-спеллов при выходе из игры


zergtmn
17.06.2010, 18:09
Сейчас channeled-спеллы прерываются после сохранения игрока, поэтому ауры от channeled спеллов, например, от http://ru.wowhead.com/spell=47855, попадают в базу.

diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp
index 273cf08..b2c3184 100644
--- a/src/game/WorldSession.cpp
+++ b/src/game/WorldSession.cpp
@@ -403,6 +403,7 @@ void WorldSession::LogoutPlayer(bool Save)

///- Remove pet
_player->RemovePet(NULL, PET_SAVE_AS_CURRENT, true);
+ _player->InterruptNonMeleeSpells(true);

///- empty buyback items and save the player in the database
// some save parts only correctly work in case player present in map/player_lists (pets, etc)

Vladimir
19.06.2010, 02:21
помоему не сильно хороший подход... так как игроки сохряняются и в игре...
и тогда такие ауры всеравно будут попадать.

Для нормального решения надо видимо фильтровать ауры от канальных спелов
при сохранении аур..

DiffuSer
19.06.2010, 16:36
Вопрос к теме канальных спеллов - иногда при касте канального спелла на моба (допустим вытягивание жизни у варлока), анимация идет, иконка на мобе не вешается и получается, что мы кастуем его, тратим время, но урона не наносим. Не должны ли они сразу прерываться в случае, если мы как бы не попали по мобу.

crAwling
19.06.2010, 23:44
Нет, вполне возможно что попадет не 1 тик, а, например, 2 или 3, и чанеленг продолжается.

DiffuSer
20.06.2010, 00:13
crAwling, в 100 экспериментах не было ни одного случая, чтобы мы начинали атаковать канальным спеллом, первый тик не попадал, а через некоторое время иконка вешалась. Тут что-то не так.

zergtmn
20.06.2010, 13:12
http://www.wowhead.com/spell=47855 накладывает 2 ауры: одну на кастера, другую на цель. Когда спелл промахивается, на кастера все равно накладывается аура.

Vladimir
20.06.2010, 18:50
Так как автор не прокоментировал мое замечание по поводу некорректности такого решения перемещаю в rejected.


помоему не сильно хороший подход... так как игроки сохряняются и в игре...
и тогда такие ауры всеравно будут попадать.

Для нормального решения надо видимо фильтровать ауры от канальных спелов
при сохранении аур..

zergtmn
20.06.2010, 20:04
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 92d2e96..1e7f2c0 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -16839,7 +16839,8 @@ void Player::_SaveAuras()

//skip all auras from spells that are passive
//do not save single target auras (unless they were cast by the player)
- if (!itr2->second->IsPassive() && (itr2->second->GetCasterGUID() == GetGUID() || !itr2->second->IsSingleTarget()))
+ if (!itr2->second->IsPassive() && (itr2->second->GetCasterGUID() == GetGUID() || !itr2->second->IsSingleTarget()) &&
+ !IsChanneledSpell(itr2->second->GetSpellProto()))
{
if (first_round)
{