diff --git a/changelog.txt b/changelog.txt index c758d165c..ee77f075d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -2,6 +2,9 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- == 01/26/2016 == Uleat: Fix for Berserker 'Piercing' skill issues. Server Admins: If you run custom skill sets, this patch touches the code segments that you will need to modify if you have changed the default berserker 1H-/2H-piercing skill values. +Uleat (Daerath): Fix for precision-loss item weight conversions in older clients. + - WARNING: YOU MUST RE-RUN SHARED_MEMORY.EXE BEFORE STARTING SERVER OR ITEM LOSS WILL OCCUR! + - Note: Cmake must be re-run to include/exclude the required files == 01/13/2016 == Kinglykrab: Modified #flag so you can refresh your target's account status (GM status level) without them having to relog. diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index f847957db..09ed7e02c 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -213,7 +213,8 @@ SET(common_headers patches/rof2_structs.h patches/titanium.h patches/titanium_constants.h - patches/titanium_itemfields.h + patches/titanium_itemfields_a.h + patches/titanium_itemfields_b.h patches/titanium_ops.h patches/titanium_structs.h patches/uf.h @@ -265,7 +266,8 @@ SOURCE_GROUP(Patches FILES patches/rof2_constants.h patches/rof2_structs.h patches/titanium.h - patches/titanium_itemfields.h + patches/titanium_itemfields_a.h + patches/titanium_itemfields_b.h patches/titanium_ops.h patches/titanium_constants.h patches/titanium_structs.h diff --git a/common/patches/titanium.cpp b/common/patches/titanium.cpp index 42544f3b9..d3873dd97 100644 --- a/common/patches/titanium.cpp +++ b/common/patches/titanium.cpp @@ -2126,7 +2126,9 @@ namespace Titanium #define C(field) "|%s" #define S(field) "|%s" #define F(field) "|%f" -#include "titanium_itemfields.h" +#include "titanium_itemfields_a.h" + "|%i" // mask for item->Weight +#include "titanium_itemfields_b.h" "%.*s\"" // Quotes (and protection, if needed) around static data "|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s" // Sub items "%.*s%s" // For trailing quotes (and protection) if a subitem; @@ -2138,7 +2140,9 @@ namespace Titanium #define C(field) ,field #define S(field) ,item->field #define F(field) ,item->field -#include "titanium_itemfields.h" +#include "titanium_itemfields_a.h" + , ((item->Weight > 255) ? (255) : (item->Weight)) +#include "titanium_itemfields_b.h" , depth, protection , sub_items[0] ? sub_items[0] : "" , sub_items[1] ? sub_items[1] : "" diff --git a/common/patches/titanium_itemfields_a.h b/common/patches/titanium_itemfields_a.h new file mode 100644 index 000000000..ba8d7b1c6 --- /dev/null +++ b/common/patches/titanium_itemfields_a.h @@ -0,0 +1,19 @@ +/* + + +These fields must be in the order of how they are serialized! + + + +*/ + + +/* 000 */ //I(ItemClass) Leave this one off on purpose +/* 001 */ S(Name) +/* 002 */ S(Lore) +/* 003 */ S(IDFile) +/* 004 */ I(ID) + +/* 005 */ //I(Weight) handled manually + +// titanium_itemfields_b.h diff --git a/common/patches/titanium_itemfields.h b/common/patches/titanium_itemfields_b.h similarity index 96% rename from common/patches/titanium_itemfields.h rename to common/patches/titanium_itemfields_b.h index dc87a714e..194a31f1c 100644 --- a/common/patches/titanium_itemfields.h +++ b/common/patches/titanium_itemfields_b.h @@ -8,12 +8,10 @@ These fields must be in the order of how they are serialized! */ -/* 000 */ //I(ItemClass) Leave this one off on purpose -/* 001 */ S(Name) -/* 002 */ S(Lore) -/* 003 */ S(IDFile) -/* 004 */ I(ID) -/* 005 */ I(Weight) +// titanium_itemfields_a.h + +/* 005 */ //I(Weight) handled manually + /* 006 */ I(NoRent) /* 007 */ I(NoDrop) /* 008 */ I(Size)