Не стал создавать новую тему на такую же мелочь.
Вообщем описание:
1. Снимается стелс - когда персонаж сделал логаут (только по завершению).
2. Если у рога прокачены таланты: Overkill или Master of sublety , так же снимаются по завершению логаута.
3. Снимается рассовая абилка ночных эльфов Shadowmeld (тоже по завершению логаута).
4. Снимаются ауры инвиза - дающие предметы
http://www.wowhead.com/item=3823 и
http://www.wowhead.com/item=9172
5. И по завершению логаута, если персонаж был в стелсе (или вышел из него - прямо перед выходом) с него сбрасывается кулдаун , со стелса всмысле, это не касается рассовой абилки Shadowmelda .
Правильным ли будет это?
PHP код:
diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp
index 1e7c00c..d3cd5de 100644
--- a/src/game/WorldSession.cpp
+++ b/src/game/WorldSession.cpp
@@ -294,6 +294,25 @@ void WorldSession::LogoutPlayer(bool Save)
if (uint64 lguid = GetPlayer()->GetLootGUID())
DoLootRelease(lguid);
+ // remove auras: stealth, shadowmeld (racial), overkill, master of sublety only for player logout complete
+ // remove auras use items 3823, 9172 only for player logout complete
+ // reset cooldown stealth only for player logout complete
+ if (_player->GetSession()->PlayerLogout())
+ {
+ if (_player->HasAuraType(SPELL_AURA_MOD_STEALTH) ||
+ _player->HasAuraType(SPELL_AURA_MOD_POWER_REGEN_PERCENT) ||
+ _player->HasAuraType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE) ||
+ _player->HasAuraType(SPELL_AURA_MOD_INVISIBILITY_DETECTION) ||
+ _player->HasSpellCooldown(1784))
+ {
+ _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); // stealth
+ _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_POWER_REGEN_PERCENT); // overkill
+ _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); // master of subtlety
+ _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_INVISIBILITY_DETECTION); // auras from item 3823, 9172
+ _player->RemoveSpellCooldown(1784); // reset cooldown stealth
+ }
+ }
+
///- If the player just died before logging out, make him appear as a ghost
//FIXME: logout must be delayed in case lost connection with client in time of combat
if (_player->GetDeathTimer())