diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index afded198..1af7218b 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -304,6 +304,7 @@ namespace Sapphire::Network::Packets SkillHandler = 0x013B, // updated 4.5 GMCommand1 = 0x013C, // updated 4.5 GMCommand2 = 0x013D, // updated 4.5 + AoESkillHandler = 0x13E, // updated 4.5 UpdatePositionHandler = 0x013F, // updated 4.5 UpdatePositionInstance = 0x0183, // updated 4.3 diff --git a/src/common/Network/PacketDef/Zone/ClientZoneDef.h b/src/common/Network/PacketDef/Zone/ClientZoneDef.h index 663feb3c..a80d962f 100644 --- a/src/common/Network/PacketDef/Zone/ClientZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ClientZoneDef.h @@ -70,6 +70,20 @@ struct FFXIVIpcSkillHandler : /* 0008 */ uint32_t useCount; /* 000C */ char pad_000C[4]; /* 0010 */ uint64_t targetId; + /* 0018 */ uint64_t unknown; +}; + +struct FFXIVIpcAoESkillHandler : + FFXIVIpcBasePacket< AoESkillHandler > +{ + /* 0000 */ char pad_0000[1]; + /* 0001 */ uint8_t type; + /* 0002 */ char pad_0002[2]; + /* 0004 */ uint32_t actionId; + /* 0008 */ uint16_t useCount; + /* 000A */ char pad_000C[6]; + /* 0010 */ Common::FFXIVARR_POSITION3 pos; + /* 001C */ uint32_t unknown; // could almost be rotation + 16 bits more padding? }; struct FFXIVIpcZoneLineHandler : diff --git a/src/world/Manager/ActionMgr.cpp b/src/world/Manager/ActionMgr.cpp new file mode 100644 index 00000000..e83c934f --- /dev/null +++ b/src/world/Manager/ActionMgr.cpp @@ -0,0 +1,9 @@ +#include "ActionMgr.h" + +using namespace Sapphire; + +World::Manager::ActionMgr::ActionMgr( Sapphire::FrameworkPtr pFw ) : + BaseManager( pFw ) +{ + +} \ No newline at end of file diff --git a/src/world/Manager/ActionMgr.h b/src/world/Manager/ActionMgr.h new file mode 100644 index 00000000..dffad0f3 --- /dev/null +++ b/src/world/Manager/ActionMgr.h @@ -0,0 +1,18 @@ +#ifndef SAPPHIRE_ACTIONMGR_H +#define SAPPHIRE_ACTIONMGR_H + +#include "BaseManager.h" + +namespace Sapphire::World::Manager +{ + class ActionMgr : public Manager::BaseManager + { + public: + explicit ActionMgr( FrameworkPtr pFw ); + ~ActionMgr() = default; + +// void handlePlayerCast( Entity::Player& player) + }; +} + +#endif //SAPPHIRE_ACTIONMGR_H diff --git a/src/world/ServerMgr.cpp b/src/world/ServerMgr.cpp index 7bbc28ec..1387fc12 100644 --- a/src/world/ServerMgr.cpp +++ b/src/world/ServerMgr.cpp @@ -42,6 +42,7 @@ #include "Manager/MarketMgr.h" #include "Manager/RNGMgr.h" #include "Manager/NaviMgr.h" +#include "Manager/ActionMgr.h" using namespace Sapphire::World::Manager; @@ -170,6 +171,9 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) } framework()->set< Scripting::ScriptMgr >( pScript ); + auto pActionMgr = std::make_shared< Manager::ActionMgr >( framework() ); + framework()->set< Manager::ActionMgr >( pActionMgr ); + loadBNpcTemplates(); auto pNaviMgr = std::make_shared< Manager::NaviMgr >( framework() );