1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-28 12:17:46 +00:00

more clean up

This commit is contained in:
collett 2020-01-10 19:58:53 +09:00
parent f7ca365c8d
commit a6daa4ea8e
3 changed files with 25 additions and 12 deletions

View file

@ -804,14 +804,24 @@ Data::ActionPtr Action::Action::getActionData() const
bool Action::Action::isPhysical() const bool Action::Action::isPhysical() const
{ {
return m_actionData->attackType == -1 || return isAttackTypePhysical( m_actionData->attackType );
m_actionData->attackType == 1 ||
m_actionData->attackType == 2 ||
m_actionData->attackType == 3 ||
m_actionData->attackType == 4;
} }
bool Action::Action::isMagic() const bool Action::Action::isMagical() const
{ {
return m_actionData->attackType == 5; return isAttackTypeMagical( m_actionData->attackType );
}
bool Action::Action::isAttackTypePhysical( int8_t attackType )
{
return attackType == -1 ||
attackType == 1 ||
attackType == 2 ||
attackType == 3 ||
attackType == 4;
}
bool Action::Action::isAttackTypeMagical( int8_t attackType )
{
return attackType == 5;
} }

View file

@ -121,7 +121,10 @@ namespace Sapphire::World::Action
Data::ActionPtr getActionData() const; Data::ActionPtr getActionData() const;
bool isPhysical() const; bool isPhysical() const;
bool isMagic() const; bool isMagical() const;
static bool isAttackTypePhysical( int8_t attackType );
static bool isAttackTypeMagical( int8_t attackType );
/*! /*!
* @brief Starts the cast. Finishes it immediately if there is no cast time (weaponskills). * @brief Starts the cast. Finishes it immediately if there is no cast time (weaponskills).

View file

@ -633,7 +633,7 @@ std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActio
if( effectEntry.effectType != Sapphire::World::Action::EffectTypeDamageMultiplier ) if( effectEntry.effectType != Sapphire::World::Action::EffectTypeDamageMultiplier )
continue; continue;
uint8_t actionType = action.isPhysical() ? Sapphire::World::Action::EffectActionTypeFilterPhysical : uint8_t actionType = action.isPhysical() ? Sapphire::World::Action::EffectActionTypeFilterPhysical :
( action.isMagic() ? Sapphire::World::Action::EffectActionTypeFilterMagical : 0 ); ( action.isMagical() ? Sapphire::World::Action::EffectActionTypeFilterMagical : 0 );
if( effectEntry.effectValue1 & actionType ) if( effectEntry.effectValue1 & actionType )
{ {
factor *= 1.0f + ( effectEntry.effectValue2 / 100.0f ); factor *= 1.0f + ( effectEntry.effectValue2 / 100.0f );
@ -653,9 +653,9 @@ float CalcStats::applyDamageReceiveMultiplier( const Sapphire::Entity::Chara& ch
if( effectEntry.effectType != Sapphire::World::Action::EffectTypeDamageReceiveMultiplier ) if( effectEntry.effectType != Sapphire::World::Action::EffectTypeDamageReceiveMultiplier )
continue; continue;
uint8_t actionType = 0; uint8_t actionType = 0;
if( attackType == -1 || attackType == 1 || attackType == 2 || attackType == 3 || attackType == 4 ) if( World::Action::Action::isAttackTypePhysical( attackType ) )
actionType = Sapphire::World::Action::EffectActionTypeFilterPhysical; actionType = Sapphire::World::Action::EffectActionTypeFilterPhysical;
else if( attackType == 5 ) else if( World::Action::Action::isAttackTypeMagical( attackType ) )
actionType = Sapphire::World::Action::EffectActionTypeFilterMagical; actionType = Sapphire::World::Action::EffectActionTypeFilterMagical;
if( effectEntry.effectValue1 & actionType ) if( effectEntry.effectValue1 & actionType )
{ {
@ -699,7 +699,7 @@ std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActio
if( effectEntry.effectType != Sapphire::World::Action::EffectTypeHealCastMultiplier ) if( effectEntry.effectType != Sapphire::World::Action::EffectTypeHealCastMultiplier )
continue; continue;
if( action.getActionData()->actionCategory == 2 ) // must be a "cast" if( static_cast< Common::ActionCategory >( action.getActionData()->actionCategory ) == Common::ActionCategory::Spell ) // must be a "cast"
{ {
factor *= 1.0f + ( effectEntry.effectValue2 / 100.0f ); factor *= 1.0f + ( effectEntry.effectValue2 / 100.0f );
} }