From dcf38ce2acd13bd14ccc15899e1bee828217d0f0 Mon Sep 17 00:00:00 2001 From: Maru Date: Tue, 10 Oct 2017 23:08:52 -0300 Subject: [PATCH] Effect IPC updated; Definitions for status effect exd; --- src/servers/Server_Common/Exd/ExdData.cpp | 15 +++++++++++++++ src/servers/Server_Common/Exd/ExdData.h | 15 ++++++++++++++- .../Server_Common/Network/PacketDef/Ipcs.h | 6 +++--- 3 files changed, 32 insertions(+), 4 deletions(-) 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 5b49624c..969c291d 100644 --- a/src/servers/Server_Common/Network/PacketDef/Ipcs.h +++ b/src/servers/Server_Common/Network/PacketDef/Ipcs.h @@ -66,8 +66,8 @@ namespace Packets { BlackList = 0x00D4, // updated 4.1 LogMessage = 0x00D0, LinkshellList = 0x00D1, - StatusEffectList = 0x00FA, - Effect = 0x00F1, + StatusEffectList = 0x00FA, // updated 4.1 + Effect = 0x00FB, // updated 4.1 GCAffiliation = 0x00FC, ActorSetPos = 0x0114, @@ -94,7 +94,7 @@ namespace Packets { ActorControl142 = 0x0142, ActorControl143 = 0x0143, ActorControl144 = 0x0144, - UpdateHpMpTp = 0x0145, + UpdateHpMpTp = 0x0145, // updated 4.1