diff --git a/common/patches/rof.cpp b/common/patches/rof.cpp index be077d750..d7fa21c41 100644 --- a/common/patches/rof.cpp +++ b/common/patches/rof.cpp @@ -3202,14 +3202,18 @@ namespace RoF SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer; unsigned char *__emu_buffer = in->pBuffer; + // break strlen optimizations! + char *message = emu->sayer; + auto sayer_length = std::char_traits::length(message); + message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats - std::string old_message = &emu->message[strlen(emu->sayer)]; + std::string old_message = message; std::string new_message; ServerToRoFSayLink(new_message, old_message); //in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1; - in->size = strlen(emu->sayer) + new_message.length() + 25; + in->size = sayer_length + new_message.length() + 25; in->pBuffer = new unsigned char[in->size]; char *OutBuffer = (char *)in->pBuffer; @@ -3223,18 +3227,10 @@ namespace RoF VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]); + // TODO: figure this shit out + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str()); diff --git a/common/patches/rof2.cpp b/common/patches/rof2.cpp index 33af8506f..66e699e2a 100644 --- a/common/patches/rof2.cpp +++ b/common/patches/rof2.cpp @@ -3269,14 +3269,18 @@ namespace RoF2 SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer; unsigned char *__emu_buffer = in->pBuffer; + // break strlen optimizations! + char *message = emu->sayer; + auto sayer_length = std::char_traits::length(message); + message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats - std::string old_message = &emu->message[strlen(emu->sayer)]; + std::string old_message = message; std::string new_message; ServerToRoF2SayLink(new_message, old_message); //in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1; - in->size = strlen(emu->sayer) + new_message.length() + 25; + in->size = sayer_length + new_message.length() + 25; in->pBuffer = new unsigned char[in->size]; char *OutBuffer = (char *)in->pBuffer; @@ -3290,18 +3294,10 @@ namespace RoF2 VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]); + // TODO: figure this shit out + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str()); diff --git a/common/patches/sod.cpp b/common/patches/sod.cpp index 1241e142a..2c9d70edf 100644 --- a/common/patches/sod.cpp +++ b/common/patches/sod.cpp @@ -2072,14 +2072,18 @@ namespace SoD SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer; unsigned char *__emu_buffer = in->pBuffer; + // break strlen optimizations! + char *message = emu->sayer; + auto sayer_length = std::char_traits::length(message); + message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats - std::string old_message = &emu->message[strlen(emu->sayer)]; + std::string old_message = message; std::string new_message; ServerToSoDSayLink(new_message, old_message); //in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1; - in->size = strlen(emu->sayer) + new_message.length() + 25; + in->size = sayer_length + new_message.length() + 25; in->pBuffer = new unsigned char[in->size]; char *OutBuffer = (char *)in->pBuffer; @@ -2093,18 +2097,10 @@ namespace SoD VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]); + // TODO: figure this shit out + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str()); diff --git a/common/patches/sof.cpp b/common/patches/sof.cpp index 247912dfd..0b3043c70 100644 --- a/common/patches/sof.cpp +++ b/common/patches/sof.cpp @@ -1723,14 +1723,18 @@ namespace SoF SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer; unsigned char *__emu_buffer = in->pBuffer; + // break strlen optimizations! + char *message = emu->sayer; + auto sayer_length = std::char_traits::length(message); + message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats - std::string old_message = &emu->message[strlen(emu->sayer)]; + std::string old_message = message; std::string new_message; ServerToSoFSayLink(new_message, old_message); //in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1; - in->size = strlen(emu->sayer) + new_message.length() + 25; + in->size = sayer_length + new_message.length() + 25; in->pBuffer = new unsigned char[in->size]; char *OutBuffer = (char *)in->pBuffer; @@ -1744,18 +1748,10 @@ namespace SoF VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]); + // TODO: figure this shit out + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str()); diff --git a/common/patches/titanium.cpp b/common/patches/titanium.cpp index e15913669..c4bef5bea 100644 --- a/common/patches/titanium.cpp +++ b/common/patches/titanium.cpp @@ -1423,14 +1423,18 @@ namespace Titanium SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer; unsigned char *__emu_buffer = in->pBuffer; + // break strlen optimizations! + char *message = emu->sayer; + auto sayer_length = std::char_traits::length(message); + message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats - std::string old_message = &emu->message[strlen(emu->sayer)]; + std::string old_message = message; std::string new_message; ServerToTitaniumSayLink(new_message, old_message); //in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1; - in->size = strlen(emu->sayer) + new_message.length() + 25; + in->size = sayer_length + new_message.length() + 25; in->pBuffer = new unsigned char[in->size]; char *OutBuffer = (char *)in->pBuffer; @@ -1444,18 +1448,10 @@ namespace Titanium VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]); + // TODO: figure this shit out + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str()); diff --git a/common/patches/uf.cpp b/common/patches/uf.cpp index 549fa7698..7db0cfb92 100644 --- a/common/patches/uf.cpp +++ b/common/patches/uf.cpp @@ -2372,14 +2372,18 @@ namespace UF SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer; unsigned char *__emu_buffer = in->pBuffer; + // break strlen optimizations! + char *message = emu->sayer; + auto sayer_length = std::char_traits::length(message); + message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats - std::string old_message = &emu->message[strlen(emu->sayer)]; + std::string old_message = message; std::string new_message; ServerToUFSayLink(new_message, old_message); //in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1; - in->size = strlen(emu->sayer) + new_message.length() + 25; + in->size = sayer_length + new_message.length() + 25; in->pBuffer = new unsigned char[in->size]; char *OutBuffer = (char *)in->pBuffer; @@ -2393,18 +2397,10 @@ namespace UF VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]); - VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]); + // TODO: figure this shit out + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); + VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f); VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());