ModernUO/Projects/UOContent/Engines/Quests/Haochi's Trials/Items/HaochisKatanaGenerator.cs
Kamron Batman e994505ad0
fix: Adds safety to corpses and cleans up quests (#1685)
### Summary
- Adds some more checks in case a corpse's owner is somehow null. Would like to eventually allow null owner corpses, but more work is needed.
- Cleans up variable unboxing and reassignment in quests. Also flattens quest logic. Still more work needs to be done.
- Codegens more quest items/mobiles.
2024-02-18 19:33:08 -08:00

66 lines
1.8 KiB
C#

using ModernUO.Serialization;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai;
[SerializationGenerator(0)]
public partial class HaochisKatanaGenerator : Item
{
[Constructible]
public HaochisKatanaGenerator() : base(0x1B7B)
{
Visible = false;
Movable = false;
}
public override string DefaultName => "Haochi's katana generator";
public override bool OnMoveOver(Mobile m)
{
if (m is not PlayerMobile player)
{
return base.OnMoveOver(m);
}
var qs = player.Quest;
if (qs is not HaochisTrialsQuest)
{
return base.OnMoveOver(m);
}
if (HaochisTrialsQuest.HasLostHaochisKatana(player))
{
Item katana = new HaochisKatana();
if (!player.PlaceInBackpack(katana))
{
katana.Delete();
// You need to clear some space in your inventory to continue with the quest. Come back here when you have more space in your inventory.
player.SendLocalizedMessage(1046260);
}
}
else
{
var obj = qs.FindObjective<FifthTrialIntroObjective>();
if (obj?.Completed == false)
{
Item katana = new HaochisKatana();
if (player.PlaceInBackpack(katana))
{
obj.Complete();
}
else
{
katana.Delete();
// You need to clear some space in your inventory to continue with the quest. Come back here when you have more space in your inventory.
player.SendLocalizedMessage(1046260);
}
}
}
return base.OnMoveOver(m);
}
}