fix: Simplifies create food and localizes. Fixes localization fallback (#1721)

This commit is contained in:
Kamron Batman 2024-04-05 19:45:42 -07:00 • committed by GitHub
parent 912eaab460
commit 6cb18f87fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 56 additions and 79 deletions

View file

@ -1,88 +1,65 @@
using System;
using Server.Items;
using Server.Utilities;
namespace Server.Spells.First
namespace Server.Spells.First;
public class CreateFoodSpell : MagerySpell
{
public class CreateFoodSpell : MagerySpell
{
private static readonly SpellInfo _info = new(
"Create Food",
"In Mani Ylem",
224,
9011,
Reagent.Garlic,
Reagent.Ginseng,
Reagent.MandrakeRoot
);
private static readonly SpellInfo _info = new(
"Create Food",
"In Mani Ylem",
224,
9011,
Reagent.Garlic,
Reagent.Ginseng,
Reagent.MandrakeRoot
);
private static readonly FoodInfo[] m_Food =
private static Item CreateRandomFood() =>
Utility.Random(10) switch
{
new(typeof(Grapes), "a grape bunch"),
new(typeof(Ham), "a ham"),
new(typeof(CheeseWedge), "a wedge of cheese"),
new(typeof(Muffins), "muffins"),
new(typeof(FishSteak), "a fish steak"),
new(typeof(Ribs), "cut of ribs"),
new(typeof(CookedBird), "a cooked bird"),
new(typeof(Sausage), "sausage"),
new(typeof(Apple), "an apple"),
new(typeof(Peach), "a peach")
0 => new Grapes(),
1 => new Ham(),
2 => new CheeseWedge(),
3 => new Muffins(),
4 => new FishSteak(),
5 => new Ribs(),
6 => new CookedBird(),
7 => new Sausage(),
8 => new Apple(),
9 => new Peach(),
_ => null
};
public CreateFoodSpell(Mobile caster, Item scroll = null) : base(caster, scroll, _info)
{
}
public override SpellCircle Circle => SpellCircle.First;
public override void OnCast()
{
if (CheckSequence())
{
var foodInfo = m_Food.RandomElement();
var food = foodInfo.Create();
if (food != null)
{
Caster.AddToBackpack(food);
// You magically create food in your backpack:
Caster.SendLocalizedMessage(1042695, true, $" {foodInfo.Name}");
Caster.FixedParticles(0, 10, 5, 2003, EffectLayer.RightHand);
Caster.PlaySound(0x1E2);
}
}
FinishSequence();
}
public CreateFoodSpell(Mobile caster, Item scroll = null) : base(caster, scroll, _info)
{
}
public class FoodInfo
public override SpellCircle Circle => SpellCircle.First;
public override void OnCast()
{
public FoodInfo(Type type, string name)
if (CheckSequence())
{
Type = type;
Name = name;
var food = CreateRandomFood();
if (food != null)
{
Caster.AddToBackpack(food);
if (Caster.NetState != null)
{
var foodName = Localization.GetText(food.LabelNumber, Caster.Language);
// Note: On OSI, the food name is not localized.
// You magically create food in your backpack:
Caster.SendLocalizedMessage(1042695, true, $" {foodName}");
}
Caster.FixedParticles(0, 10, 5, 2003, EffectLayer.RightHand);
Caster.PlaySound(0x1E2);
}
}
public Type Type { get; set; }
public string Name { get; set; }
public Item Create()
{
try
{
return Type.CreateInstance<Item>();
}
catch
{
// ignored
}
return null;
}
FinishSequence();
}
}