Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 /// <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)
 {
 }