Index: src/game/Spell.cpp =================================================================== --- src/game/Spell.cpp (revision 5006) +++ src/game/Spell.cpp (working copy) @@ -3203,7 +3203,7 @@ //Check whether the cast should be prevented by any state you might have. uint8 prevented_reason = 0; - if(m_caster->hasUnitState(UNIT_STAT_STUNDED)) + if(m_caster->hasUnitState(UNIT_STAT_STUNDED) && ( m_spellInfo->Id != 29841 && m_spellInfo->Id != 29842)) // second wind is exception, btw this is ugly spells like that should have own case here to completly ignore any preventions prevented_reason = SPELL_FAILED_STUNNED; else if(m_caster->hasUnitState(UNIT_STAT_CONFUSED)) prevented_reason = SPELL_FAILED_CONFUSED; Index: src/game/SpellAuras.cpp =================================================================== --- src/game/SpellAuras.cpp (revision 5006) +++ src/game/SpellAuras.cpp (working copy) @@ -2220,6 +2220,20 @@ if( m_target->getVictim() ) m_target->SetOrientation(m_target->GetAngle(m_target->getVictim())); + // second wind + if ( GetSpellProto()->Mechanic == MECHANIC_STUN ){ // only real stuns can proc it + // rank 2 + if ( m_target->HasAura( 29838, 0 ) && !m_target->HasAura( 29842, 1 ) ) + { + m_target->CastSpell( m_target, 29842, true ); + } + // rank 1 + else if ( m_target->HasAura( 29834, 0 ) && !m_target->HasAura( 29841, 1 ) ) + { + m_target->CastSpell( m_target, 29841, true ); + } + } + // Creature specific if(m_target->GetTypeId() != TYPEID_PLAYER) { @@ -2445,6 +2459,18 @@ if( m_target->getVictim() ) m_target->SetOrientation(m_target->GetAngle(m_target->getVictim())); + // second wind + // rank 2 + if ( m_target->HasAura( 29838, 0 ) && !m_target->HasAura( 29842, 1 ) ) + { + m_target->CastSpell( m_target, 29842, true ); + } + // rank 1 + else if ( m_target->HasAura( 29834, 0 ) && !m_target->HasAura( 29841, 1 ) ) + { + m_target->CastSpell( m_target, 29841, true ); + } + if(m_target->GetTypeId() == TYPEID_PLAYER) { WorldPacket data(SMSG_FORCE_MOVE_ROOT, 10);