1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-25 19:17:45 +00:00
This commit is contained in:
collett 2020-01-15 00:42:31 +09:00
parent e677ee5ef8
commit abf71f5dc0
7 changed files with 11 additions and 13 deletions

View file

@ -541,14 +541,14 @@ void Action::Action::buildEffects()
if( m_lutEntry.targetStatus != 0 )
{
if( !isComboAction() || isCorrectCombo() )
m_effectBuilder->applyStatusEffect( actor, m_pSource, m_lutEntry.targetStatus, m_lutEntry.targetStatusDuration, m_lutEntry.targetStatusParam, 500 );
m_effectBuilder->applyStatusEffect( actor, m_pSource, m_lutEntry.targetStatus, m_lutEntry.targetStatusDuration, m_lutEntry.targetStatusParam );
}
}
if( m_lutEntry.selfStatus != 0 )
{
if( !isComboAction() || isCorrectCombo() )
m_effectBuilder->applyStatusEffect( m_pSource, m_pSource, m_lutEntry.selfStatus, m_lutEntry.selfStatusDuration, m_lutEntry.selfStatusParam, 500 );
m_effectBuilder->applyStatusEffect( m_pSource, m_pSource, m_lutEntry.selfStatus, m_lutEntry.selfStatusDuration, m_lutEntry.selfStatusParam );
}
m_effectBuilder->buildAndSendPackets( getAnimationLock() );

View file

@ -26,8 +26,8 @@ namespace Sapphire::World::Action
void comboSucceed( Entity::CharaPtr& target );
void applyStatusEffect( Entity::CharaPtr& target, Entity::CharaPtr& source, uint16_t statusId, uint32_t duration, uint8_t param, uint64_t resultDelayMs = 600 );
void applyStatusEffect( Entity::CharaPtr& target, Entity::CharaPtr& source, StatusEffect::StatusEffectPtr pStatusEffect, uint64_t resultDelayMs = 600 );
void applyStatusEffect( Entity::CharaPtr& target, Entity::CharaPtr& source, uint16_t statusId, uint32_t duration, uint8_t param, uint64_t resultDelayMs = 500 );
void applyStatusEffect( Entity::CharaPtr& target, Entity::CharaPtr& source, StatusEffect::StatusEffectPtr pStatusEffect, uint64_t resultDelayMs = 500 );
void statusNoEffect( Entity::CharaPtr& target, uint16_t statusId );

View file

@ -14,7 +14,7 @@ EffectResult::EffectResult( Entity::CharaPtr target, Entity::CharaPtr source, ui
m_delayMs( runAfter ),
m_type( Common::ActionEffectType::Nothing ),
m_value( 0 ),
m_value2( 0 ),
m_statusDuration( 0 ),
m_param0( 0 ),
m_param1( 0 ),
m_param2( 0 ),
@ -87,7 +87,7 @@ void EffectResult::comboSucceed()
void EffectResult::applyStatusEffect( uint16_t statusId, uint32_t duration, uint8_t param )
{
m_value = statusId;
m_value2 = duration;
m_statusDuration = duration;
m_param2 = param;
m_type = Common::ActionEffectType::ApplyStatusEffect;
@ -168,7 +168,7 @@ void EffectResult::execute()
m_target->addStatusEffect( m_pPreBuiltStatusEffect );
}
else
m_target->addStatusEffectById( m_value, m_value2, *m_source, m_param2, lastTickOverride );
m_target->addStatusEffectById( m_value, m_statusDuration, *m_source, m_param2, lastTickOverride );
break;
}

View file

@ -50,7 +50,7 @@ namespace Sapphire::World::Action
uint8_t m_param2;
uint32_t m_value;
uint32_t m_value2;
uint32_t m_statusDuration;
Common::ActionEffectResultFlag m_flag;
StatusEffect::StatusEffectPtr m_pPreBuiltStatusEffect;

View file

@ -542,7 +542,7 @@ void Sapphire::Entity::Chara::addStatusEffectById( uint32_t id, int32_t duration
{
auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000, m_pFw );
effect->setParam( param );
effect->setLastTick( lastTickOverride );
effect->setLastTick( lastTickOverride == 0 ? Util::getTimeMs() : lastTickOverride );
addStatusEffect( effect );
}
@ -553,7 +553,7 @@ void Sapphire::Entity::Chara::addStatusEffectByIdIfNotExist( uint32_t id, int32_
auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000, m_pFw );
effect->setParam( param );
effect->setLastTick( lastTickOverride );
effect->setLastTick( lastTickOverride == 0 ? Util::getTimeMs() : lastTickOverride );
addStatusEffect( effect );
}

View file

@ -555,7 +555,7 @@ std::pair< float, Sapphire::Common::ActionHitSeverityType > CalcStats::calcAutoA
float CalcStats::calcDamageBaseOnPotency( const Sapphire::Entity::Chara& chara, uint32_t ptc, float wepDmg )
{
// D = ⌊ f(pot) × f(wd) × f(ap) × f(det) × f(tnc) × traits ⌋
// × f(chr) ⌋ × f(dhr) ⌋ × rand[ 0.95, 1.05 ] ⌋ buff_1 ⌋ × buff_1 ⌋ × buff... ⌋
// × f(chr) ⌋ × f(dhr) ⌋ × rand[ 0.95, 1.05 ] ⌋ buff_1 ⌋ × buff_1 ⌋ × buff... ⌋
auto pot = potency( static_cast< uint16_t >( ptc ) );
auto wd = weaponDamage( chara, wepDmg );

View file

@ -135,8 +135,6 @@ uint16_t Sapphire::StatusEffect::StatusEffect::getParam() const
void Sapphire::StatusEffect::StatusEffect::applyStatus()
{
m_startTime = Util::getTimeMs();
if( m_lastTick == 0 )
m_lastTick = m_startTime;
auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >();
pScriptMgr->onStatusReceive( m_targetActor, m_id );