ModernUO/Projects/UOContent/Items/Food/CookableFood.cs
Kamron Batman 936000ecf7
feat: Adds SerializedCommandProperty (#1249)
## Breaking Change
* Removes `SerializableFieldAttrAttribute` in favor of `SerializedPropertyAttr`.

## Important Change
* Adds `SerializedCommandProperty`

Example:
```cs
    [InvalidateProperties]
    [SerializableField(0)]
    [SerializedCommandProperty(AccessLevel.GameMaster)]
    private Mobile _completedBy;
```
2022-11-14 18:24:33 -08:00

293 lines
6.8 KiB
C#

using ModernUO.Serialization;
using Server.Targeting;
namespace Server.Items;
[SerializationGenerator(0, false)]
public abstract partial class CookableFood : Item
{
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private int _cookingLevel;
public CookableFood(int itemID, int cookingLevel) : base(itemID) => _cookingLevel = cookingLevel;
public abstract Food Cook();
public static bool IsHeatSource(object targeted)
{
int itemID;
if (targeted is Item item)
{
itemID = item.ItemID;
}
else if (targeted is StaticTarget target)
{
itemID = target.ItemID;
}
else
{
return false;
}
if (itemID >= 0xDE3 && itemID <= 0xDE9)
{
return true; // Campfire
}
if (itemID >= 0x461 && itemID <= 0x48E)
{
return true; // Sandstone oven/fireplace
}
if (itemID >= 0x92B && itemID <= 0x96C)
{
return true; // Stone oven/fireplace
}
if (itemID == 0xFAC)
{
return true; // Firepit
}
if (itemID >= 0x184A && itemID <= 0x184C)
{
return true; // Heating stand (left)
}
if (itemID >= 0x184E && itemID <= 0x1850)
{
return true; // Heating stand (right)
}
if (itemID >= 0x398C && itemID <= 0x399F)
{
return true; // Fire field
}
return false;
}
}
[SerializationGenerator(0, false)]
public partial class RawRibs : CookableFood
{
[Constructible]
public RawRibs(int amount = 1) : base(0x9F1, 10)
{
Weight = 1.0;
Stackable = true;
Amount = amount;
}
public override Food Cook() => new Ribs();
}
[SerializationGenerator(0, false)]
public partial class RawLambLeg : CookableFood
{
[Constructible]
public RawLambLeg(int amount = 1) : base(0x1609, 10)
{
Stackable = true;
Amount = amount;
}
public override Food Cook() => new LambLeg();
}
[SerializationGenerator(0, false)]
public partial class RawChickenLeg : CookableFood
{
[Constructible]
public RawChickenLeg() : base(0x1607, 10)
{
Weight = 1.0;
Stackable = true;
}
public override Food Cook() => new ChickenLeg();
}
[SerializationGenerator(0, false)]
public partial class RawBird : CookableFood
{
[Constructible]
public RawBird(int amount = 1) : base(0x9B9, 10)
{
Weight = 1.0;
Stackable = true;
Amount = amount;
}
public override Food Cook() => new CookedBird();
}
[SerializationGenerator(0, false)]
public partial class UnbakedPeachCobbler : CookableFood
{
[Constructible]
public UnbakedPeachCobbler() : base(0x1042, 25) => Weight = 1.0;
public override int LabelNumber => 1041335; // unbaked peach cobbler
public override Food Cook() => new PeachCobbler();
}
[SerializationGenerator(0, false)]
public partial class UnbakedFruitPie : CookableFood
{
[Constructible]
public UnbakedFruitPie() : base(0x1042, 25) => Weight = 1.0;
public override int LabelNumber => 1041334; // unbaked fruit pie
public override Food Cook() => new FruitPie();
}
[SerializationGenerator(0, false)]
public partial class UnbakedMeatPie : CookableFood
{
[Constructible]
public UnbakedMeatPie() : base(0x1042, 25) => Weight = 1.0;
public override int LabelNumber => 1041338; // unbaked meat pie
public override Food Cook() => new MeatPie();
}
[SerializationGenerator(0, false)]
public partial class UnbakedPumpkinPie : CookableFood
{
[Constructible]
public UnbakedPumpkinPie() : base(0x1042, 25) => Weight = 1.0;
public override int LabelNumber => 1041342; // unbaked pumpkin pie
public override Food Cook() => new PumpkinPie();
}
[SerializationGenerator(0, false)]
public partial class UnbakedApplePie : CookableFood
{
[Constructible]
public UnbakedApplePie() : base(0x1042, 25) => Weight = 1.0;
public override int LabelNumber => 1041336; // unbaked apple pie
public override Food Cook() => new ApplePie();
}
[TypeAlias("Server.Items.UncookedPizza")]
[SerializationGenerator(0, false)]
public partial class UncookedCheesePizza : CookableFood
{
[Constructible]
public UncookedCheesePizza() : base(0x1083, 20) => Weight = 1.0;
public override int LabelNumber => 1041341; // uncooked cheese pizza
public override Food Cook() => new CheesePizza();
}
[SerializationGenerator(0, false)]
public partial class UncookedSausagePizza : CookableFood
{
[Constructible]
public UncookedSausagePizza() : base(0x1083, 20) => Weight = 1.0;
public override int LabelNumber => 1041337; // uncooked sausage pizza
public override Food Cook() => new SausagePizza();
}
[SerializationGenerator(0, false)]
public partial class UnbakedQuiche : CookableFood
{
[Constructible]
public UnbakedQuiche() : base(0x1042, 25) => Weight = 1.0;
public override int LabelNumber => 1041339; // unbaked quiche
public override Food Cook() => new Quiche();
}
[SerializationGenerator(0, false)]
public partial class Eggs : CookableFood
{
[Constructible]
public Eggs(int amount = 1) : base(0x9B5, 15)
{
Weight = 1.0;
Stackable = true;
Amount = amount;
}
public override Food Cook() => new FriedEggs();
}
[SerializationGenerator(0, false)]
public partial class BrightlyColoredEggs : CookableFood
{
[Constructible]
public BrightlyColoredEggs() : base(0x9B5, 15)
{
Weight = 0.5;
Hue = 3 + Utility.Random(20) * 5;
}
public override string DefaultName => "brightly colored eggs";
public override Food Cook() => new FriedEggs();
}
[SerializationGenerator(0, false)]
public partial class EasterEggs : CookableFood
{
[Constructible]
public EasterEggs() : base(0x9B5, 15)
{
Weight = 0.5;
Hue = 3 + Utility.Random(20) * 5;
}
public override int LabelNumber => 1016105; // Easter Eggs
public override Food Cook() => new FriedEggs();
}
[SerializationGenerator(0, false)]
public partial class CookieMix : CookableFood
{
[Constructible]
public CookieMix() : base(0x103F, 20) => Weight = 1.0;
public override Food Cook() => new Cookies();
}
[SerializationGenerator(0, false)]
public partial class CakeMix : CookableFood
{
[Constructible]
public CakeMix() : base(0x103F, 40) => Weight = 1.0;
public override int LabelNumber => 1041002; // cake mix
public override Food Cook() => new Cake();
}
[SerializationGenerator(0, false)]
public partial class RawFishSteak : CookableFood
{
[Constructible]
public RawFishSteak(int amount = 1) : base(0x097A, 10)
{
Stackable = true;
Amount = amount;
}
public override double DefaultWeight => 0.1;
public override Food Cook() => new FishSteak();
}