Просмотр полной версии : [patch] Прерывание channeled-спеллов при выходе из игры
Сейчас 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 экспериментах не было ни одного случая, чтобы мы начинали атаковать канальным спеллом, первый тик не попадал, а через некоторое время иконка вешалась. Тут что-то не так.
http://www.wowhead.com/spell=47855 накладывает 2 ауры: одну на кастера, другую на цель. Когда спелл промахивается, на кастера все равно накладывается аура.
Vladimir
20.06.2010, 18:50
Так как автор не прокоментировал мое замечание по поводу некорректности такого решения перемещаю в rejected.
помоему не сильно хороший подход... так как игроки сохряняются и в игре...
и тогда такие ауры всеравно будут попадать.
Для нормального решения надо видимо фильтровать ауры от канальных спелов
при сохранении аур..
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)
{
vBulletin® v3.8.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot