diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 42f298878..0ea85281b 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2429,7 +2429,6 @@ void Spell::cast(bool skipCheck) switch(m_spellInfo->Id) { - case 47585: AddPrecastSpell(60069); break; // Dispersion (transform) case 15237: AddTriggeredSpell(23455); break;// Holy Nova, rank 1 case 15430: AddTriggeredSpell(23458); break;// Holy Nova, rank 2 case 15431: AddTriggeredSpell(23459); break;// Holy Nova, rank 3 diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index e16e53210..74c42a310 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3031,22 +3031,28 @@ void Aura::HandleAuraTransform(bool apply, bool Real) } else { + uint32 model_id; + CreatureInfo const * ci = objmgr.GetCreatureTemplate(m_modifier.m_miscvalue); if (!ci) { - //pig pink ^_^ - m_target->SetDisplayId(16358); + model_id = 16358; // pig pink ^_^ sLog.outError("Auras: unknown creature id = %d (only need its modelid) Form Spell Aura Transform in Spell ID = %d", m_modifier.m_miscvalue, GetId()); } else - { - // Will use the default model here - m_target->SetDisplayId(ci->DisplayID_A[0]); + model_id = ci->DisplayID_A[0]; // Will use the default model here - // Dragonmaw Illusion (set mount model also) - if(GetId()==42016 && m_target->GetMountID() && !m_target->GetAurasByType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED).empty()) - m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,16314); - } + // Polymorph (sheep/penguin case) + if (GetSpellProto()->SpellFamilyName == SPELLFAMILY_MAGE && GetSpellProto()->SpellIconID == 82) + if (Unit* caster = GetCaster()) + if (caster->HasAura(52648)) // Glyph of the Penguin + model_id = 26452; + + m_target->SetDisplayId(model_id); + + // Dragonmaw Illusion (set mount model also) + if(GetId()==42016 && m_target->GetMountID() && !m_target->GetAurasByType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED).empty()) + m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,16314); } // update active transform spell only not set or not overwriting negative by positive case @@ -5697,6 +5703,14 @@ void Aura::HandleSpellSpecificBoosts(bool apply) } break; } + case SPELLFAMILY_PRIEST: + // Dispersion mana reg and immunity + if (GetSpellProto()->Id == 47585) + { + spellId1 = 60069; + spellId2 = 63230; + } + break; case SPELLFAMILY_ROGUE: // Sprint (skip non player casted spells by category) if (GetSpellProto()->SpellFamilyFlags & UI64LIT(0x0000000000000040) && GetSpellProto()->Category == 44) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 1d6c4d764..29272ee01 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -477,8 +477,13 @@ bool IsPositiveEffect(uint32 spellId, uint32 effIndex) return false; break; case SPELL_AURA_MOD_PACIFY_SILENCE: - if(spellproto->Id == 24740) // Wisp Costume - return true; + switch(spellproto->Id) + { + case 24740: // Wisp Costume + case 47585: // Dispersion + return true; + default: break; + } return false; case SPELL_AURA_MOD_ROOT: case SPELL_AURA_MOD_SILENCE: diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b25101cfd..27c3ccbab 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8482" + #define REVISION_NR "8485" #endif // __REVISION_NR_H__ diff --git a/win/.gitignore b/win/.gitignore index cd96f0d6b..3a2e1fcf7 100644 --- a/win/.gitignore +++ b/win/.gitignore @@ -13,4 +13,5 @@ *.ncb *.suo *.sdf +*.sln.cache ipch