protected override void ServerOnStackItems(ServerOnStackItemData data) { base.ServerOnStackItems(data); // source item var item1 = data.ItemFrom; var item1State = GetPrivateState(item1); var item1Freshness = item1State.FreshnessCurrent; // destination item var item2 = data.ItemTo; var item2State = GetPrivateState(item2); var item2Freshness = item2State.FreshnessCurrent; var deltaCount = data.CountStacked; // calculate average freshness between the already existing (item2) food count // and the added food count (item1) and its freshness var previousItem2Count = item2.Count - deltaCount; var newItem2Freshness = ((ulong)item1Freshness * (ulong)deltaCount + (ulong)item2Freshness * (ulong)previousItem2Count) / item2.Count; item2State.FreshnessCurrent = (uint)MathHelper.Clamp(newItem2Freshness, 0, uint.MaxValue); }
/// <summary> /// Server callback method when stacking items (of this item type) from one slot into another slot. /// This method is called only if the item type is stackable. /// Use it to merge items states (if any). /// </summary> protected virtual void ServerOnStackItems(ServerOnStackItemData data) { }