fix: Simplifies ore stack logic (#1319)

This commit is contained in:
Kamron Batman 2023-01-03 18:07:42 -08:00 committed by GitHub
parent f47560e56c
commit b18dfcbb63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 41 deletions

View file

@ -2269,39 +2269,44 @@ public class Item : IHued, IComparable<Item>, ISpawnable, IObjectPropertyListEnt
}
public virtual bool CanStackWith(Item dropped) =>
dropped.Stackable && Stackable && dropped.GetType() == GetType() && dropped.ItemID == ItemID &&
dropped.Hue == Hue && dropped.Name == Name && dropped.Amount + Amount <= 60000 && dropped != this;
dropped.Stackable && Stackable &&
dropped.GetType() == GetType() &&
dropped.ItemID == ItemID &&
dropped.Hue == Hue &&
dropped.Name == Name &&
dropped.Amount + Amount <= 60000 &&
dropped != this;
public bool StackWith(Mobile from, Item dropped) => StackWith(from, dropped, true);
public virtual bool StackWith(Mobile from, Item dropped, bool playSound)
{
if (CanStackWith(dropped))
if (!CanStackWith(dropped))
{
if (m_LootType != dropped.m_LootType)
{
m_LootType = LootType.Regular;
}
Amount += dropped.Amount;
dropped.Delete();
if (playSound && from != null)
{
var soundID = GetDropSound();
if (soundID == -1)
{
soundID = 0x42;
}
from.SendSound(soundID, GetWorldLocation());
}
return true;
return false;
}
return false;
if (m_LootType != dropped.m_LootType)
{
m_LootType = LootType.Regular;
}
Amount += dropped.Amount;
dropped.Delete();
if (playSound && from != null)
{
var soundID = GetDropSound();
if (soundID == -1)
{
soundID = 0x42;
}
from.SendSound(soundID, GetWorldLocation());
}
return true;
}
public virtual bool OnDragDrop(Mobile from, Item dropped)

View file

@ -49,17 +49,9 @@ public abstract partial class Food : Item
}
}
public override bool CanStackWith(Item dropped)
{
if (dropped is Food food)
{
if (Poison != food.Poison || Poisoner != food.Poisoner)
{
return false;
}
}
return base.CanStackWith(dropped);
}
public override bool CanStackWith(Item dropped) =>
(dropped is not Food food || Poison == food.Poison && Poisoner == food.Poisoner) &&
base.CanStackWith(dropped);
public virtual bool Eat(Mobile from)

View file

@ -54,10 +54,8 @@ public abstract partial class BaseOre : Item
};
public override bool CanStackWith(Item dropped) =>
dropped.Stackable && Stackable && dropped.Hue == Hue &&
dropped.GetType() == GetType() && dropped.ItemID == ItemID &&
(dropped as BaseOre)?._resource == _resource && dropped.Name == Name &&
dropped.Amount + Amount <= 60000 && dropped != this;
base.CanStackWith(dropped) &&
(dropped as BaseOre)?._resource == _resource;
public override void AddNameProperty(IPropertyList list)
{
@ -444,4 +442,4 @@ public partial class ValoriteOre : BaseOre
}
public override BaseIngot GetIngot() => new ValoriteIngot();
}
}