fix: Simplifies create food and localizes. Fixes localization fallback (#1721)
This commit is contained in:
parent
912eaab460
commit
6cb18f87fa
2 changed files with 56 additions and 79 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue