diff --git a/src/servers/Server_Common/Exd/ExdData.cpp b/src/servers/Server_Common/Exd/ExdData.cpp index c6785c6c..f7822502 100644 --- a/src/servers/Server_Common/Exd/ExdData.cpp +++ b/src/servers/Server_Common/Exd/ExdData.cpp @@ -136,6 +136,16 @@ bool Core::Data::ExdData::loadStatusEffectInfo() StatusEffectInfo info { 0 }; info.id = id; info.name = getField< std::string >( fields, 0 ); + info.lock_movement = getField< bool >( fields, 7 ); // 7 + info.lock_actions = getField< bool >( fields, 9 ); // 9 + info.lock_control = getField< bool >( fields, 10 ); // 10 + info.transfiguration = getField< bool >( fields, 11 ); // 11 + info.can_dispel = getField< bool >( fields, 13 ); // 13 + info.is_permanent = getField< bool >( fields, 15 ); // 15 + info.inflicted_by_actor = getField< bool >( fields, 17 ); // 17 + info.is_fc_buff = getField< bool >( fields, 21 ); // 21 + info.invisibility = getField< bool >( fields, 22 ); // 22 + m_statusEffectInfoMap[id] = info; } @@ -355,6 +365,9 @@ bool Core::Data::ExdData::loadActionInfo() uint16_t toggle_status_id = getField< uint16_t >( fields, 42 ); // 42 bool affects_position = getField< bool >( fields, 47 ); // 47 + bool no_effect_in_battle = getField< bool >( fields, 60 ); // 60 + + info->id = id; info->name = name; info->category = category; @@ -389,6 +402,8 @@ bool Core::Data::ExdData::loadActionInfo() info->toggle_status_id = toggle_status_id; info->affects_position = affects_position; + info->no_effect_in_battle = no_effect_in_battle; + // If action type is SingleTarget with an AoE radius set, or if action type isn't SingleTarget info->is_aoe = ( info->aoe_type == 1 && info->aoe_width != 0 ) || ( info->aoe_type != 1 ); diff --git a/src/servers/Server_Common/Exd/ExdData.h b/src/servers/Server_Common/Exd/ExdData.h index 85c495ee..3a5dedf9 100644 --- a/src/servers/Server_Common/Exd/ExdData.h +++ b/src/servers/Server_Common/Exd/ExdData.h @@ -255,7 +255,11 @@ namespace Core { bool affects_position; // 47 + bool no_effect_in_battle; // 60 + + bool is_aoe; // Internal only + }; struct EventItemInfo @@ -269,7 +273,16 @@ namespace Core { struct StatusEffectInfo { uint32_t id; - std::string name; //0 + std::string name; // 0 + bool lock_movement; // 7 + bool lock_actions; // 9 + bool lock_control; // 10 + bool transfiguration; // 11 + bool can_dispel; // 13 + bool is_permanent; // 15 + bool inflicted_by_actor; // 17 + bool is_fc_buff; // 21 + bool invisibility; // 22 }; class ExdData diff --git a/src/servers/Server_Common/Network/PacketDef/Ipcs.h b/src/servers/Server_Common/Network/PacketDef/Ipcs.h index 6b794068..499cde44 100644 --- a/src/servers/Server_Common/Network/PacketDef/Ipcs.h +++ b/src/servers/Server_Common/Network/PacketDef/Ipcs.h @@ -69,7 +69,7 @@ namespace Packets { LinkshellList = 0x00DC, // updated 4.1 StatusEffectList = 0x00FA, // updated 4.1 - Effect = 0x00F1, + Effect = 0x00FB, // updated 4.1 GCAffiliation = 0x00FC, ActorSetPos = 0x0114, @@ -80,8 +80,8 @@ namespace Packets { HateList = 0x011A, UpdateClassInfo = 0x011D, InitUI = 0x012B, // updated 4.1 - PlayerStats = 0x0138, // updated 4.1 ActorOwner = 0x012D, // updated 4.1 + PlayerStats = 0x0138, // updated 4.1 PlayerStateFlags = 0x013A, // updated 4.1 PlayerClassInfo = 0x013B, // updated 4.1 ModelEquip = 0x013C, // updated 4.1