From 31ee05734a73f6706f5f491c0fa5fe200017caa9 Mon Sep 17 00:00:00 2001 From: collett Date: Thu, 9 Apr 2020 16:59:12 +0900 Subject: [PATCH] provoke --- src/common/Common.h | 1 + src/scripts/action/role/ActionProvoke7533.cpp | 2 +- src/world/Action/EffectBuilder.cpp | 7 +++++++ src/world/Action/EffectBuilder.h | 2 ++ src/world/Action/EffectResult.cpp | 5 +++++ src/world/Action/EffectResult.h | 1 + 6 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/common/Common.h b/src/common/Common.h index b38b0d07..183ae15d 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -636,6 +636,7 @@ namespace Sapphire::Common * @param flags Required to be 128, doesn't show combo rings on hotbars otherwise * @param value The actionid that starts/continues the combo. eg, 3617 will start a spinning slash and/or syphon strike combo */ + Provoke = 24, StartActionCombo = 27, // shifted one up from 5.18 ComboSucceed = 28, // shifted one up from 5.18, on retail this is not seen anymore, still working though. Knockback = 33, diff --git a/src/scripts/action/role/ActionProvoke7533.cpp b/src/scripts/action/role/ActionProvoke7533.cpp index dad9d0ab..be24c958 100644 --- a/src/scripts/action/role/ActionProvoke7533.cpp +++ b/src/scripts/action/role/ActionProvoke7533.cpp @@ -21,7 +21,7 @@ public: if( chara ) { chara->onActionHostile( action.getSourceChara() ); - // todo: missing flying text + action.getEffectbuilder()->provoke( chara ); } } }; diff --git a/src/world/Action/EffectBuilder.cpp b/src/world/Action/EffectBuilder.cpp index 63c84c5c..c3c14ced 100644 --- a/src/world/Action/EffectBuilder.cpp +++ b/src/world/Action/EffectBuilder.cpp @@ -127,6 +127,13 @@ void EffectBuilder::mount( Entity::CharaPtr& target, uint16_t mountId, uint64_t moveToResultList( target, nextResult ); } +void Sapphire::World::Action::EffectBuilder::provoke( Entity::CharaPtr& target ) +{ + EffectResultPtr nextResult = make_EffectResult( target, 0 ); + nextResult->provoke(); + moveToResultList( target, nextResult ); +} + void EffectBuilder::setAnimationLock( float animationLock ) { m_animationLock = animationLock; diff --git a/src/world/Action/EffectBuilder.h b/src/world/Action/EffectBuilder.h index 799d87e4..232c98d4 100644 --- a/src/world/Action/EffectBuilder.h +++ b/src/world/Action/EffectBuilder.h @@ -43,6 +43,8 @@ namespace Sapphire::World::Action void mount( Entity::CharaPtr& target, uint16_t mountId, uint64_t resultDelayMs = 600 ); + void provoke( Entity::CharaPtr& target ); + void buildAndSendPackets(); private: diff --git a/src/world/Action/EffectResult.cpp b/src/world/Action/EffectResult.cpp index 46f8b310..97f65317 100644 --- a/src/world/Action/EffectResult.cpp +++ b/src/world/Action/EffectResult.cpp @@ -148,6 +148,11 @@ void EffectResult::mount( uint16_t mountId ) m_type = Common::ActionEffectType::Mount; } +void Sapphire::World::Action::EffectResult::provoke() +{ + m_type = Common::ActionEffectType::Provoke; +} + Common::EffectEntry EffectResult::buildEffectEntry() const { Common::EffectEntry entry{}; diff --git a/src/world/Action/EffectResult.h b/src/world/Action/EffectResult.h index 39a184bc..1dc3bd4f 100644 --- a/src/world/Action/EffectResult.h +++ b/src/world/Action/EffectResult.h @@ -30,6 +30,7 @@ namespace Sapphire::World::Action void applyStatusEffect( StatusEffect::StatusEffectPtr pStatusEffect ); void statusNoEffect( uint16_t statusId ); void mount( uint16_t mountId ); + void provoke( ); Entity::CharaPtr getSource() const; Entity::CharaPtr getTarget() const;