diff --git a/src/world/Action/Action.cpp b/src/world/Action/Action.cpp index 4ea6a2d1..24e05e5f 100644 --- a/src/world/Action/Action.cpp +++ b/src/world/Action/Action.cpp @@ -576,9 +576,7 @@ void Action::Action::buildEffects() else m_effectBuilder->damage( actor, actor, dmg.first, dmg.second, dmg.first == 0 ? Common::ActionEffectResultFlag::Absorbed : Common::ActionEffectResultFlag::None, getExecutionDelay() + victimCounter * 100 ); - auto reflectDmg = Math::CalcStats::calcDamageReflect( m_pSource, actor, dmg.first, - attackType == Common::AttackType::Physical ? Common::ActionTypeFilter::Physical : - ( attackType == Common::AttackType::Magical ? Common::ActionTypeFilter::Magical : Common::ActionTypeFilter::Unknown ) ); + auto reflectDmg = Math::CalcStats::calcDamageReflect( m_pSource, actor, dmg.first, getActionTypeFilterFromAttackType( attackType ) ); if( reflectDmg.first > 0 ) { m_effectBuilder->damage( actor, m_pSource, reflectDmg.first, reflectDmg.second, Common::ActionEffectResultFlag::Reflected, getExecutionDelay() + victimCounter * 100 ); @@ -624,7 +622,7 @@ void Action::Action::buildEffects() } } - if( validVictimCounter == 0 ) + if( validVictimCounter == 0 ) // effects only apply once if aoe, on first valid target (can be single target action as well) { if( isCorrectCombo() ) m_effectBuilder->comboSucceed( actor ); @@ -718,7 +716,7 @@ void Action::Action::buildEffects() if( m_lutEntry.selfStatus != 0 ) { if( !isComboAction() || isCorrectCombo() ) - m_effectBuilder->applyStatusEffect( m_pSource, m_pSource, m_lutEntry.selfStatus, m_lutEntry.selfStatusDuration, m_lutEntry.selfStatusParam ); + m_effectBuilder->applyStatusEffect( m_pSource, m_pSource, m_lutEntry.selfStatus, m_lutEntry.selfStatusDuration, m_lutEntry.selfStatusParam, getExecutionDelay() ); } scriptMgr.onBeforeBuildEffect( *this, victimCounter, validVictimCounter );