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

Merge branch 'master' of https://github.com/SapphireServer/Sapphire into actions-war

This commit is contained in:
Lucy 2023-03-12 21:11:45 +01:00
commit 8337d5ddca
4 changed files with 14 additions and 39 deletions

View file

@ -144,11 +144,9 @@ void ActionResult::execute()
case Common::ActionEffectType::CALC_RESULT_TYPE_SET_STATUS_ME: case Common::ActionEffectType::CALC_RESULT_TYPE_SET_STATUS_ME:
{ {
if( !m_bOverrideStatus ) if( !m_bOverrideStatus )
m_target->addStatusEffectByIdIfNotExist( m_pStatus->getId(), m_pStatus->getDuration(), *m_pStatus->getSrcActor(), m_target->addStatusEffectByIdIfNotExist( m_pStatus );
m_pStatus->getStatusModifiers(), m_pStatus->getFlag(), m_pStatus->getParam() );
else else
m_target->addStatusEffectById( m_pStatus->getId(), m_pStatus->getDuration(), *m_pStatus->getSrcActor(), m_target->addStatusEffectById( m_pStatus );
m_pStatus->getStatusModifiers(), m_pStatus->getFlag(), m_pStatus->getParam() );
break; break;
} }

View file

@ -503,41 +503,18 @@ void Chara::addStatusEffect( StatusEffect::StatusEffectPtr pEffect )
} }
/*! \param StatusEffectPtr to be applied to the actor */ /*! \param StatusEffectPtr to be applied to the actor */
void Chara::addStatusEffectById( uint32_t id, int32_t duration, Entity::Chara& source, uint16_t param ) void Chara::addStatusEffectById( StatusEffect::StatusEffectPtr pStatus )
{ {
auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000 ); addStatusEffect( pStatus );
effect->setParam( param );
addStatusEffect( effect );
}
void Chara::addStatusEffectById( uint32_t id, int32_t duration, Entity::Chara& source,
std::vector< World::Action::StatusModifier > modifiers, uint32_t flag, uint16_t param )
{
auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, modifiers, flag, 3000 );
effect->setParam( param );
addStatusEffect( effect );
} }
/*! \param StatusEffectPtr to be applied to the actor */ /*! \param StatusEffectPtr to be applied to the actor */
void Chara::addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Chara& source, uint16_t param ) void Chara::addStatusEffectByIdIfNotExist( StatusEffect::StatusEffectPtr pStatus )
{ {
if( hasStatusEffect( id ) ) if( hasStatusEffect( pStatus->getId() ) )
return; return;
auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000 ); addStatusEffect( pStatus );
effect->setParam( param );
addStatusEffect( effect );
}
void Sapphire::Entity::Chara::addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Chara& source,
std::vector< World::Action::StatusModifier > modifiers, uint32_t flag, uint16_t param )
{
if( hasStatusEffect( id ) )
return;
auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, modifiers, flag, 3000 );
effect->setParam( param );
addStatusEffect( effect );
} }
int8_t Chara::getStatusEffectFreeSlot() int8_t Chara::getStatusEffectFreeSlot()

View file

@ -140,13 +140,10 @@ namespace Sapphire::Entity
const uint32_t* getModelArray() const; const uint32_t* getModelArray() const;
// add a status effect by id // add a status effect by id
void addStatusEffectById( uint32_t id, int32_t duration, Entity::Chara& source, uint16_t param = 0 ); void addStatusEffectById( StatusEffect::StatusEffectPtr pStatus );
void addStatusEffectById( uint32_t id, int32_t duration, Entity::Chara& source,
std::vector< World::Action::StatusModifier > modifiers, uint32_t flag, uint16_t param = 0 );
// add a status effect by id if it doesn't exist // add a status effect by id if it doesn't exist
void addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Chara& source, uint16_t param = 0 ); void addStatusEffectByIdIfNotExist( StatusEffect::StatusEffectPtr pStatus );
void addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Chara& source,
std::vector< World::Action::StatusModifier > modifiers, uint32_t flag, uint16_t param = 0 );
// remove a status effect by id // remove a status effect by id
void removeSingleStatusEffectFromId( uint32_t id ); void removeSingleStatusEffectFromId( uint32_t id );

View file

@ -663,7 +663,10 @@ std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActio
std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActionHealing( const Sapphire::Entity::Chara& chara, uint32_t ptc, float wepDmg ) std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcActionHealing( const Sapphire::Entity::Chara& chara, uint32_t ptc, float wepDmg )
{ {
// lol just for testing // lol just for testing
auto factor = std::floor( ptc * ( wepDmg / 10.0f ) + ptc ); float det = chara.getStatValue( Common::BaseParam::Determination );
float mnd = chara.getStatValue( Common::BaseParam::Mind );
auto factor = std::floor( ( wepDmg * ( mnd / 200 ) + ( det / 10 ) ) * ( ptc / 100 ) * 1.3f );
Sapphire::Common::ActionHitSeverityType hitType = Sapphire::Common::ActionHitSeverityType::NormalHeal; Sapphire::Common::ActionHitSeverityType hitType = Sapphire::Common::ActionHitSeverityType::NormalHeal;
if( criticalHitProbability( chara ) > range100( rng ) ) if( criticalHitProbability( chara ) > range100( rng ) )