diff --git a/changelog.txt b/changelog.txt index 00d72188b..92c4164dc 100644 --- a/changelog.txt +++ b/changelog.txt @@ -7,6 +7,7 @@ demonstar55: Don't use the hack for charms that doesn't work on RoF demonstar55: UF too demonstar55: Tit demonstar55: SoF +demonstar55: SoD == 11/13/2014 == Kayen: Implemented target type (44) 'Beams' (which projects an AE infront of caster with a specified length and width). diff --git a/common/patches/sod.cpp b/common/patches/sod.cpp index 8a023ce42..1d93ad721 100644 --- a/common/patches/sod.cpp +++ b/common/patches/sod.cpp @@ -3195,7 +3195,7 @@ namespace SoD std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary); - const Item_Struct *item = inst->GetItem(); + const Item_Struct *item = inst->GetUnscaledItem(); //_log(NET__ERROR, "Serialize called for: %s", item->Name); SoD::structs::ItemSerializationHeader hdr; hdr.stacksize = stackable ? charges : 1; @@ -3206,7 +3206,7 @@ namespace SoD hdr.slot = (merchant_slot == 0) ? slot_id : merchant_slot; hdr.price = inst->GetPrice(); hdr.merchant_slot = (merchant_slot == 0) ? 1 : inst->GetMerchantCount(); - hdr.unknown020 = 0; + hdr.scaled_value = inst->IsScaling() ? inst->GetExp() / 100 : 0; hdr.instance_id = (merchant_slot == 0) ? inst->GetSerialNumber() : merchant_slot; hdr.unknown028 = 0; hdr.last_cast_time = ((item->RecastDelay > 1) ? 1212693140 : 0); @@ -3329,6 +3329,7 @@ namespace SoD ibs.SpellShield = item->SpellShield; ibs.Avoidance = item->Avoidance; ibs.Accuracy = item->Accuracy; + ibs.CharmFileID = item->CharmFileID; ibs.FactionAmt1 = item->FactionAmt1; ibs.FactionMod1 = item->FactionMod1; ibs.FactionAmt2 = item->FactionAmt2; diff --git a/common/patches/sod_structs.h b/common/patches/sod_structs.h index 71760514b..15e0d5307 100644 --- a/common/patches/sod_structs.h +++ b/common/patches/sod_structs.h @@ -3931,7 +3931,7 @@ struct ItemSerializationHeader /*008*/ uint32 slot; /*012*/ uint32 price; /*016*/ uint32 merchant_slot; //1 if not a merchant item -/*020*/ uint32 unknown020; //0 +/*020*/ uint32 scaled_value; //0 /*024*/ uint32 instance_id; //unique instance id if not merchant item, else is merchant slot /*028*/ uint32 unknown028; //0 /*032*/ uint32 last_cast_time; // Unix Time from PP of last cast for this recast type if recast delay > 0