diff --git a/src/common/Common.h b/src/common/Common.h index 2cab0b10..9753f4db 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -591,6 +591,17 @@ namespace Sapphire::Common ShowItemName = 2, }; + struct EffectEntry + { + Common::ActionEffectType effectType; + Common::ActionHitSeverityType hitSeverity; + uint8_t param; + int8_t bonusPercent; // shows an additional percentage in the battle log, will not change the damage number sent & shown + uint8_t valueMultiplier; // This multiplies whatever value is in the 'value' param by 10. Possibly a workaround for big numbers + uint8_t flags; + int16_t value; + }; + enum class ActionCollisionType : uint8_t { None, diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 86988bd9..fa9426d7 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -388,17 +388,6 @@ struct FFXIVIpcUpdateHpMpTp : * Structural representation of the packet sent by the server * for battle actions */ -struct EffectEntry -{ - Common::ActionEffectType effectType; - Common::ActionHitSeverityType hitSeverity; - uint8_t param; - int8_t bonusPercent; // shows an additional percentage in the battle log, will not change the damage number sent & shown - uint8_t valueMultiplier; // This multiplies whatever value is in the 'value' param by 10. Possibly a workaround for big numbers - uint8_t flags; - int16_t value; -}; - struct EffectHeader { uint64_t animationTargetId; // who the animation targets @@ -458,7 +447,7 @@ struct FFXIVIpcAoeEffect { EffectHeader header; - EffectEntry effects[size]; + Common::EffectEntry effects[size]; uint16_t padding_6A[3]; diff --git a/src/world/Action/Action.h b/src/world/Action/Action.h index 116d7a9b..558173c2 100644 --- a/src/world/Action/Action.h +++ b/src/world/Action/Action.h @@ -68,6 +68,8 @@ namespace Sapphire::Action FrameworkPtr m_pFw; + + }; } diff --git a/src/world/Actor/Chara.cpp b/src/world/Actor/Chara.cpp index 76695bec..da15f966 100644 --- a/src/world/Actor/Chara.cpp +++ b/src/world/Actor/Chara.cpp @@ -417,7 +417,7 @@ void Sapphire::Entity::Chara::autoAttack( CharaPtr pTarget ) auto effectPacket = std::make_shared< Server::EffectPacket >( getId(), pTarget->getId(), 7 ); effectPacket->setRotation( Util::floatToUInt16Rot( getRot() ) ); - Server::EffectEntry effectEntry{}; + Common::EffectEntry effectEntry{}; effectEntry.value = damage; effectEntry.effectType = ActionEffectType::Damage; effectEntry.hitSeverity = ActionHitSeverityType::NormalDamage; diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index ea2ca233..5a096ab0 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -1550,7 +1550,7 @@ void Sapphire::Entity::Player::autoAttack( CharaPtr pTarget ) auto effectPacket = std::make_shared< Server::EffectPacket >( getId(), pTarget->getId(), 8 ); effectPacket->setRotation( Util::floatToUInt16Rot( getRot() ) ); - Server::EffectEntry entry{}; + Common::EffectEntry entry{}; entry.value = damage; entry.effectType = Common::ActionEffectType::Damage; entry.hitSeverity = Common::ActionHitSeverityType::NormalDamage; @@ -1564,7 +1564,7 @@ void Sapphire::Entity::Player::autoAttack( CharaPtr pTarget ) auto effectPacket = std::make_shared< Server::EffectPacket >( getId(), pTarget->getId(), 7 ); effectPacket->setRotation( Util::floatToUInt16Rot( getRot() ) ); - Server::EffectEntry entry{}; + Common::EffectEntry entry{}; entry.value = damage; entry.effectType = Common::ActionEffectType::Damage; entry.hitSeverity = Common::ActionHitSeverityType::NormalDamage; diff --git a/src/world/Manager/ActionMgr.cpp b/src/world/Manager/ActionMgr.cpp index 75c6dec0..994ef83a 100644 --- a/src/world/Manager/ActionMgr.cpp +++ b/src/world/Manager/ActionMgr.cpp @@ -28,7 +28,7 @@ void World::Manager::ActionMgr::handleTargetedPlayerAction( Entity::Player& play player.sendDebug( "got act: {0}", actionData->name ); auto action = Action::make_Action( player.getAsPlayer(), actionId, actionData, framework() ); - action->setType( static_cast< Common::ActionType >( type ) ); + action->setType( static_cast< Common::HandleActionType >( type ) ); bootstrapAction( player, action, *actionData ); } diff --git a/src/world/Network/PacketWrappers/EffectPacket.h b/src/world/Network/PacketWrappers/EffectPacket.h index 23cdb7ef..7c265c9f 100644 --- a/src/world/Network/PacketWrappers/EffectPacket.h +++ b/src/world/Network/PacketWrappers/EffectPacket.h @@ -27,12 +27,12 @@ namespace Sapphire::Network::Packets::Server m_data.effectDisplayType = Common::ActionEffectDisplayType::ShowActionName; } - void addEffect( const Server::EffectEntry& effect ) + void addEffect( const Common::EffectEntry& effect ) { assert( m_data.effectCount <= 8 ); - std::memset( m_data.effects, 0, sizeof( Server::EffectEntry ) * 8 ); - std::memcpy( &m_data.effects[ m_data.effectCount * 8 ], &effect, sizeof( Server::EffectEntry ) ); + std::memset( m_data.effects, 0, sizeof( Common::EffectEntry ) * 8 ); + std::memcpy( &m_data.effects[ m_data.effectCount * 8 ], &effect, sizeof( Common::EffectEntry ) ); m_data.effectCount++; }