Trinitycore: Core/Spell: Transformation remains after the aura expire

Created on 16 Mar 2017  路  2Comments  路  Source: TrinityCore/TrinityCore

Description: When Deathbringer's Will (and probably other items) procs the player it transformed, but when the aura expire the transformation (visual only) remains.

Current behavior: The transformation remains after the aura expire

Expected behavior: The transformation must expire with the the aura.

Steps to reproduce the problem:

  1. just make the Deathbringer's Will procs and wait

Branch(es): 3.3.5

TC rev. hash/commit: rev. 3b27a06265e4

Branch-3.3.5a Comp-Core Sub-Spells

Most helpful comment

But I want to be a Taunka rogue!

All 2 comments

This bug appears after rev. 9d639c55b186f14de806bcc92c231585bc2f590b
Because if a unit has a shapeshift aura and a transform aura, and there is not a model id in this shapeshift (example spellid 71: Defensive Stance), it can not change to the native displayId after the transform aura and expire.
Modify Unit::RestoreDisplayId() in Unit.cpp can fix this problem.
Find
// transform aura was found
if (handledAura)
handledAura->HandleEffect(this, AURA_EFFECT_HANDLE_SEND_FOR_CLIENT, true);
else if (!shapeshiftAura.empty()) // we've found shapeshift
{
// only one such aura possible at a time
if (uint32 modelId = GetModelForForm(GetShapeshiftForm(), shapeshiftAura.front()->GetId()))
SetDisplayId(modelId);
}
// no auras found - set modelid to default
else
SetDisplayId(GetNativeDisplayId());

Change to
// transform aura was found
if (handledAura)
handledAura->HandleEffect(this, AURA_EFFECT_HANDLE_SEND_FOR_CLIENT, true);
else if (!shapeshiftAura.empty()) // we've found shapeshift
{
// only one such aura possible at a time
if (uint32 modelId = GetModelForForm(GetShapeshiftForm(), shapeshiftAura.front()->GetId()))
SetDisplayId(modelId);
else
SetDisplayId(GetNativeDisplayId());
}
// no auras found - set modelid to default
else
SetDisplayId(GetNativeDisplayId());

But I want to be a Taunka rogue!

Was this page helpful?
0 / 5 - 0 ratings