2020-03-02 08:03:50 -06:00
|
|
|
using System;
|
|
|
|
|
|
2018-03-17 19:22:45 -04:00
|
|
|
using ACE.Entity;
|
2020-03-02 08:03:50 -06:00
|
|
|
using ACE.Entity.Models;
|
|
|
|
|
|
2018-03-17 19:22:45 -04:00
|
|
|
namespace ACE.Server.WorldObjects
|
|
|
|
|
{
|
|
|
|
|
public class Stackable : WorldObject
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// A new biota be created taking all of its values from weenie.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public Stackable(Weenie weenie, ObjectGuid guid) : base(weenie, guid)
|
|
|
|
|
{
|
|
|
|
|
SetEphemeralValues();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Restore a WorldObject from the database.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public Stackable(Biota biota) : base(biota)
|
|
|
|
|
{
|
|
|
|
|
SetEphemeralValues();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetEphemeralValues()
|
|
|
|
|
{
|
2019-04-26 12:06:57 -05:00
|
|
|
if (!StackSize.HasValue)
|
|
|
|
|
StackSize = 1;
|
|
|
|
|
|
|
|
|
|
if (!MaxStackSize.HasValue)
|
|
|
|
|
MaxStackSize = 1;
|
|
|
|
|
|
|
|
|
|
if (!Value.HasValue)
|
|
|
|
|
Value = 0;
|
|
|
|
|
|
|
|
|
|
if (!EncumbranceVal.HasValue)
|
|
|
|
|
EncumbranceVal = 0;
|
|
|
|
|
|
|
|
|
|
if (!StackUnitEncumbrance.HasValue)
|
|
|
|
|
{
|
|
|
|
|
if (StackSize > 1)
|
|
|
|
|
StackUnitEncumbrance = EncumbranceVal / StackSize;
|
|
|
|
|
else
|
|
|
|
|
StackUnitEncumbrance = EncumbranceVal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!StackUnitValue.HasValue)
|
|
|
|
|
{
|
|
|
|
|
if (StackSize > 1)
|
|
|
|
|
StackUnitValue = Value / StackSize;
|
|
|
|
|
else
|
|
|
|
|
StackUnitValue = Value;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-17 18:08:46 -06:00
|
|
|
// This is needed to fix stackables that were created before we removed the [Ephemeral] attribute from Encumbranceval and Value
|
|
|
|
|
// In the distance future, this can be removed. 2019-02-13 Mag-nus
|
|
|
|
|
if (MaxStackSize > 1)
|
2018-03-17 19:22:45 -04:00
|
|
|
{
|
2019-02-17 18:08:46 -06:00
|
|
|
EncumbranceVal = (StackUnitEncumbrance ?? 0) * (StackSize ?? 1);
|
|
|
|
|
Value = (StackUnitValue ?? 0) * (StackSize ?? 1);
|
2018-03-17 19:22:45 -04:00
|
|
|
}
|
|
|
|
|
}
|
2020-03-23 20:17:43 -04:00
|
|
|
|
|
|
|
|
public override void ActOnUse(WorldObject wo)
|
|
|
|
|
{
|
|
|
|
|
// Do nothing
|
|
|
|
|
}
|
2018-03-17 19:22:45 -04:00
|
|
|
}
|
|
|
|
|
}
|