fix: Codegens ML Quest items (#1522)

This commit is contained in:
Kamron Batman 2023-09-30 00:46:07 -07:00 committed by GitHub
parent 145c93ccf7
commit 27cd214d58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
127 changed files with 1498 additions and 2362 deletions

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class ABauble : Item
{
public class ABauble : Item
{
[Constructible]
public ABauble() : base(0x23B) => LootType = LootType.Blessed;
[Constructible]
public ABauble() : base(0x23B) => LootType = LootType.Blessed;
public ABauble(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073137; // A bauble
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1073137; // A bauble
}

View file

@ -1,38 +1,21 @@
using System;
using ModernUO.Serialization;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class APersonalLetterAddressedToAhie : TransientItem
{
public class APersonalLetterAddressedToAhie : TransientItem
[Constructible]
public APersonalLetterAddressedToAhie() : base(0x14ED, TimeSpan.FromMinutes(30)) => LootType = LootType.Blessed;
public override int LabelNumber => 1073128; // A personal letter addressed to: Ahie
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public APersonalLetterAddressedToAhie() : base(0x14ED, TimeSpan.FromMinutes(30)) => LootType = LootType.Blessed;
public APersonalLetterAddressedToAhie(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073128; // A personal letter addressed to: Ahie
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,40 +1,24 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class AlchemistsBandage : Item
{
public class AlchemistsBandage : Item
[Constructible]
public AlchemistsBandage() : base(0xE21)
{
[Constructible]
public AlchemistsBandage() : base(0xE21)
{
LootType = LootType.Blessed;
Hue = 0x482;
}
LootType = LootType.Blessed;
Hue = 0x482;
}
public AlchemistsBandage(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075452; // Alchemist's Bandage
public override int LabelNumber => 1075452; // Alchemist's Bandage
public override bool Nontransferable => true;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class AnOldNecklace : Necklace
{
public class AnOldNecklace : Necklace
{
[Constructible]
public AnOldNecklace() => Hue = 0x222;
[Constructible]
public AnOldNecklace() => Hue = 0x222;
public AnOldNecklace(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075525; // an old necklace
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1075525; // an old necklace
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class AnOldRing : GoldRing
{
public class AnOldRing : GoldRing
{
[Constructible]
public AnOldRing() => Hue = 0x222;
[Constructible]
public AnOldRing() => Hue = 0x222;
public AnOldRing(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075524; // an old ring
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1075524; // an old ring
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class AndricSatchel : Backpack
{
public class AndricSatchel : Backpack
[Constructible]
public AndricSatchel()
{
[Constructible]
public AndricSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Feather(10));
DropItem(new FletcherTools());
}
public AndricSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new Feather(10));
DropItem(new FletcherTools());
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class AndrosGratitude : SmithHammer
{
public class AndrosGratitude : SmithHammer
{
[Constructible]
public AndrosGratitude() : base(10) => LootType = LootType.Blessed;
[Constructible]
public AndrosGratitude() : base(10) => LootType = LootType.Blessed;
public AndrosGratitude(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075345; // Andros Gratitude
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1075345; // Andros Gratitude
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class AsandosSatchel : Backpack
{
public class AsandosSatchel : Backpack
[Constructible]
public AsandosSatchel()
{
[Constructible]
public AsandosSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new SackFlour());
DropItem(new Skillet());
}
public AsandosSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new SackFlour());
DropItem(new Skillet());
}
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class BasinOfCrystalClearWater : Item
{
public class BasinOfCrystalClearWater : Item
[Constructible]
public BasinOfCrystalClearWater() : base(0x1008) => LootType = LootType.Blessed;
public override int LabelNumber => 1075303; // Basin of Crystal-Clear Water
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public BasinOfCrystalClearWater() : base(0x1008) => LootType = LootType.Blessed;
public BasinOfCrystalClearWater(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075303; // Basin of Crystal-Clear Water
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,54 +1,34 @@
using Server.Mobiles;
using ModernUO.Serialization;
using Server.Mobiles;
namespace Server.Engines.MLQuests.Items
namespace Server.Engines.MLQuests.Items;
[SerializationGenerator(0, false)]
public partial class BedlamTeleporter : Item
{
public class BedlamTeleporter : Item
private static readonly Point3D PointDest = new(120, 1682, 0);
private static readonly Map MapDest = Map.Malas;
public BedlamTeleporter() : base(0x124D) => Movable = false;
public override int LabelNumber => 1074161; // Access to Bedlam by invitation only
public override void OnDoubleClick(Mobile from)
{
private static readonly Point3D PointDest = new(120, 1682, 0);
private static readonly Map MapDest = Map.Malas;
public BedlamTeleporter()
: base(0x124D) =>
Movable = false;
public BedlamTeleporter(Serial serial)
: base(serial)
if (!from.InRange(GetWorldLocation(), 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
return;
}
public override int LabelNumber => 1074161; // Access to Bedlam by invitation only
public override void OnDoubleClick(Mobile from)
if (from is PlayerMobile mobile && MLQuestSystem.GetContext(mobile)?.BedlamAccess == true)
{
if (!from.InRange(GetWorldLocation(), 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
return;
}
if (from is PlayerMobile mobile && MLQuestSystem.GetContext(mobile)?.BedlamAccess == true)
{
BaseCreature.TeleportPets(mobile, PointDest, MapDest);
mobile.MoveToWorld(PointDest, MapDest);
}
else
{
from.SendLocalizedMessage(1074276); // You press and push on the iron maiden, but nothing happens.
}
BaseCreature.TeleportPets(mobile, PointDest, MapDest);
mobile.MoveToWorld(PointDest, MapDest);
}
public override void Serialize(IGenericWriter writer)
else
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
from.SendLocalizedMessage(1074276); // You press and push on the iron maiden, but nothing happens.
}
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class Bleach : PigmentsOfTokuno
{
public class Bleach : PigmentsOfTokuno
{
[Constructible]
public Bleach() => LootType = LootType.Blessed;
[Constructible]
public Bleach() => LootType = LootType.Blessed;
public Bleach(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075375; // Bleach
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1075375; // Bleach
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class BridesLetter : Item
{
public class BridesLetter : Item
[Constructible]
public BridesLetter() : base(0x14ED) => LootType = LootType.Blessed;
public override int LabelNumber => 1075301; // Bride's Letter
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public BridesLetter() : base(0x14ED) => LootType = LootType.Blessed;
public BridesLetter(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075301; // Bride's Letter
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class CompletedTuitionReimbursementForm : Item
{
public class CompletedTuitionReimbursementForm : Item
[Constructible]
public CompletedTuitionReimbursementForm() : base(0x14F0) => LootType = LootType.Blessed;
public override int LabelNumber => 1074625; // Completed Tuition Reimbursement Form
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public CompletedTuitionReimbursementForm() : base(0x14F0) => LootType = LootType.Blessed;
public CompletedTuitionReimbursementForm(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074625; // Completed Tuition Reimbursement Form
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,238 +1,130 @@
using System;
using ModernUO.Serialization;
using Server.Engines.Craft;
using Server.Items;
namespace Server.Engines.MLQuests.Items
namespace Server.Engines.MLQuests.Items;
[SerializationGenerator(0, false)]
public abstract partial class BaseCraftmansSatchel : Backpack
{
public abstract class BaseCraftmansSatchel : Backpack
protected static readonly Type[] m_TalismanType = { typeof(RandomTalisman) };
public BaseCraftmansSatchel() => Hue = Utility.RandomBrightHue();
protected void AddBaseLoot(params Type[][] lootSets)
{
protected static readonly Type[] m_TalismanType = { typeof(RandomTalisman) };
var loot = Loot.Construct(lootSets.RandomElement());
public BaseCraftmansSatchel() => Hue = Utility.RandomBrightHue();
public BaseCraftmansSatchel(Serial serial)
: base(serial)
if (loot == null)
{
return;
}
protected void AddBaseLoot(params Type[][] lootSets)
{
var loot = Loot.Construct(lootSets.RandomElement());
if (loot == null)
{
return;
}
RewardBag.Enhance(loot);
DropItem(loot);
}
protected void AddRecipe(CraftSystem system)
{
// TODO: change craftable artifact recipes to a rarer drop
var recipeID = system.RandomRecipe();
if (recipeID != -1)
{
DropItem(new RecipeScroll(recipeID));
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
RewardBag.Enhance(loot);
DropItem(loot);
}
public class TailorSatchel : BaseCraftmansSatchel
protected void AddRecipe(CraftSystem system)
{
[Constructible]
public TailorSatchel()
// TODO: change craftable artifact recipes to a rarer drop
var recipeID = system.RandomRecipe();
if (recipeID != -1)
{
AddBaseLoot(Loot.MLArmorTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefTailoring.CraftSystem);
}
}
public TailorSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class BlacksmithSatchel : BaseCraftmansSatchel
{
[Constructible]
public BlacksmithSatchel()
{
AddBaseLoot(Loot.MLWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefBlacksmithy.CraftSystem);
}
}
public BlacksmithSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class TinkerSatchel : BaseCraftmansSatchel
{
[Constructible]
public TinkerSatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
switch (Utility.Random(6))
{
case 0:
AddRecipe(DefInscription.CraftSystem);
break;
case 1:
AddRecipe(DefAlchemy.CraftSystem);
break;
// TODO
// case 2: AddNonArtifactRecipe( DefTailoring.CraftSystem ); break;
// case 3: AddNonArtifactRecipe( DefBlacksmithy.CraftSystem ); break;
// case 4: AddNonArtifactRecipe( DefCarpentry.CraftSystem ); break;
// case 5: AddNonArtifactRecipe( DefBowFletching.CraftSystem ); break;
}
}
}
public TinkerSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class FletchingSatchel : BaseCraftmansSatchel
{
[Constructible]
public FletchingSatchel()
{
AddBaseLoot(Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefBowFletching.CraftSystem);
}
// TODO: runic fletching kit
}
public FletchingSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class CarpentrySatchel : BaseCraftmansSatchel
{
[Constructible]
public CarpentrySatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefCarpentry.CraftSystem);
}
// TODO: Add runic dovetail saw
}
public CarpentrySatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
DropItem(new RecipeScroll(recipeID));
}
}
}
[SerializationGenerator(0, false)]
public partial class TailorSatchel : BaseCraftmansSatchel
{
[Constructible]
public TailorSatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefTailoring.CraftSystem);
}
}
}
[SerializationGenerator(0, false)]
public partial class BlacksmithSatchel : BaseCraftmansSatchel
{
[Constructible]
public BlacksmithSatchel()
{
AddBaseLoot(Loot.MLWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefBlacksmithy.CraftSystem);
}
}
}
[SerializationGenerator(0, false)]
public partial class TinkerSatchel : BaseCraftmansSatchel
{
[Constructible]
public TinkerSatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
switch (Utility.Random(6))
{
case 0:
AddRecipe(DefInscription.CraftSystem);
break;
case 1:
AddRecipe(DefAlchemy.CraftSystem);
break;
// TODO
// case 2: AddNonArtifactRecipe( DefTailoring.CraftSystem ); break;
// case 3: AddNonArtifactRecipe( DefBlacksmithy.CraftSystem ); break;
// case 4: AddNonArtifactRecipe( DefCarpentry.CraftSystem ); break;
// case 5: AddNonArtifactRecipe( DefBowFletching.CraftSystem ); break;
}
}
}
}
[SerializationGenerator(0, false)]
public partial class FletchingSatchel : BaseCraftmansSatchel
{
[Constructible]
public FletchingSatchel()
{
AddBaseLoot(Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefBowFletching.CraftSystem);
}
// TODO: runic fletching kit
}
}
[SerializationGenerator(0, false)]
public partial class CarpentrySatchel : BaseCraftmansSatchel
{
[Constructible]
public CarpentrySatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomBool())
{
AddRecipe(DefCarpentry.CraftSystem);
}
// TODO: Add runic dovetail saw
}
}

View file

@ -1,38 +1,21 @@
using System;
using ModernUO.Serialization;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class CrateForSledge : TransientItem
{
public class CrateForSledge : TransientItem
[Constructible]
public CrateForSledge() : base(0x1FFF, TimeSpan.FromHours(1)) => LootType = LootType.Blessed;
public override int LabelNumber => 1074520; // Crate for Sledge
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public CrateForSledge() : base(0x1FFF, TimeSpan.FromHours(1)) => LootType = LootType.Blessed;
public CrateForSledge(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074520; // Crate for Sledge
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,40 +1,24 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class DreadSpiderSilk : Item
{
public class DreadSpiderSilk : Item
[Constructible]
public DreadSpiderSilk() : base(0xDF8)
{
[Constructible]
public DreadSpiderSilk() : base(0xDF8)
{
LootType = LootType.Blessed;
Hue = 0x481;
}
LootType = LootType.Blessed;
Hue = 0x481;
}
public DreadSpiderSilk(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075319; // Dread Spider Silk
public override int LabelNumber => 1075319; // Dread Spider Silk
public override bool Nontransferable => true;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class FragmentOfAMap : Item
{
public class FragmentOfAMap : Item
{
[Constructible]
public FragmentOfAMap() : base(0x14ED) => LootType = LootType.Blessed;
[Constructible]
public FragmentOfAMap() : base(0x14ED) => LootType = LootType.Blessed;
public FragmentOfAMap(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074533; // Fragment of a Map
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1074533; // Fragment of a Map
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class FragmentOfAMapDelivery : Item
{
public class FragmentOfAMapDelivery : Item
[Constructible]
public FragmentOfAMapDelivery() : base(0x14ED) => LootType = LootType.Blessed;
public override int LabelNumber => 1074533; // Fragment of a Map
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public FragmentOfAMapDelivery() : base(0x14ED) => LootType = LootType.Blessed;
public FragmentOfAMapDelivery(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074533; // Fragment of a Map
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,32 +1,16 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class FriendOfTheLibraryToken : Item
{
public class FriendOfTheLibraryToken : Item
[Constructible]
public FriendOfTheLibraryToken() : base(0x2F58)
{
[Constructible]
public FriendOfTheLibraryToken() : base(0x2F58)
{
Layer = Layer.Talisman;
Hue = 0x28A;
}
public FriendOfTheLibraryToken(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073136; // Friend of the Library Token (allows donations to be made)
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Layer = Layer.Talisman;
Hue = 0x28A;
}
public override int LabelNumber => 1073136; // Friend of the Library Token (allows donations to be made)
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class FriendsOfTheLibraryApplication : Item
{
public class FriendsOfTheLibraryApplication : Item
[Constructible]
public FriendsOfTheLibraryApplication() : base(0xEC0) => LootType = LootType.Blessed;
public override int LabelNumber => 1073131; // Friends of the Library Application
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public FriendsOfTheLibraryApplication() : base(0xEC0) => LootType = LootType.Blessed;
public FriendsOfTheLibraryApplication(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073131; // Friends of the Library Application
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,34 +1,18 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class GamanHorns : Item
{
public class GamanHorns : Item
[Constructible]
public GamanHorns(int amount = 1) : base(0x1084)
{
[Constructible]
public GamanHorns(int amount = 1) : base(0x1084)
{
LootType = LootType.Blessed;
Stackable = true;
Amount = amount;
Hue = 0x395;
}
public GamanHorns(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074557; // Gaman Horns
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Stackable = true;
Amount = amount;
Hue = 0x395;
}
public override int LabelNumber => 1074557; // Gaman Horns
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class GervisSatchel : Backpack
{
public class GervisSatchel : Backpack
[Constructible]
public GervisSatchel()
{
[Constructible]
public GervisSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new IronIngot(10));
DropItem(new SmithHammer());
}
public GervisSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new IronIngot(10));
DropItem(new SmithHammer());
}
}

View file

@ -1,37 +1,21 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class GiftForArielle : BaseContainer
{
public class GiftForArielle : BaseContainer
[Constructible]
public GiftForArielle() : base(0x1882) => Hue = 0x2C4;
public override int LabelNumber => 1074356; // gift for arielle
public override int DefaultGumpID => 0x41;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public GiftForArielle() : base(0x1882) => Hue = 0x2C4;
public GiftForArielle(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074356; // gift for arielle
public override int DefaultGumpID => 0x41;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class HargroveSatchel : Backpack
{
public class HargroveSatchel : Backpack
[Constructible]
public HargroveSatchel()
{
[Constructible]
public HargroveSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Gold(15));
DropItem(new Hatchet());
}
public HargroveSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new Gold(15));
DropItem(new Hatchet());
}
}

View file

@ -1,32 +1,16 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class KirinBrains : Item
{
public class KirinBrains : Item
[Constructible]
public KirinBrains() : base(0x1CF0)
{
[Constructible]
public KirinBrains() : base(0x1CF0)
{
LootType = LootType.Blessed;
Hue = 0xD7;
}
public KirinBrains(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074612; // Ki-Rin Brains
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Hue = 0xD7;
}
public override int LabelNumber => 1074612; // Ki-Rin Brains
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class LowelSatchel : Backpack
{
public class LowelSatchel : Backpack
[Constructible]
public LowelSatchel()
{
[Constructible]
public LowelSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Board(10));
DropItem(new DovetailSaw());
}
public LowelSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new Board(10));
DropItem(new DovetailSaw());
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class MiniatureMushroom : Food
{
public class MiniatureMushroom : Food
{
[Constructible]
public MiniatureMushroom() : base(0xD16) => LootType = LootType.Blessed;
[Constructible]
public MiniatureMushroom() : base(0xD16) => LootType = LootType.Blessed;
public MiniatureMushroom(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073138; // Miniature mushroom
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1073138; // Miniature mushroom
}

View file

@ -1,32 +1,16 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class MirrorOfPurification : Item
{
public class MirrorOfPurification : Item
[Constructible]
public MirrorOfPurification() : base(0x1008)
{
[Constructible]
public MirrorOfPurification() : base(0x1008)
{
LootType = LootType.Blessed;
Hue = 0x530;
}
public MirrorOfPurification(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075304; // Mirror of Purification
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Hue = 0x530;
}
public override int LabelNumber => 1075304; // Mirror of Purification
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class MuggSatchel : Backpack
{
public class MuggSatchel : Backpack
[Constructible]
public MuggSatchel()
{
[Constructible]
public MuggSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Pickaxe());
DropItem(new Pickaxe());
}
public MuggSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new Pickaxe());
DropItem(new Pickaxe());
}
}

View file

@ -1,47 +1,30 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class NibbetSatchel : Backpack
{
public class NibbetSatchel : Backpack
[Constructible]
public NibbetSatchel()
{
[Constructible]
public NibbetSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new TinkerTools());
Hue = Utility.RandomBrightHue();
DropItem(new TinkerTools());
DropItem(
Utility.Random(10) switch
{
0 => new Springs(3),
1 => new Axle(3),
2 => new Hinge(3),
3 => new Key(),
4 => new Scissors(),
5 => new BarrelTap(),
6 => new BarrelHoops(),
7 => new Gears(3),
8 => new Lockpick(3),
_ => new ClockFrame(3) // 9
}
);
}
public NibbetSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
DropItem(
Utility.Random(10) switch
{
0 => new Springs(3),
1 => new Axle(3),
2 => new Hinge(3),
3 => new Key(),
4 => new Scissors(),
5 => new BarrelTap(),
6 => new BarrelHoops(),
7 => new Gears(3),
8 => new Lockpick(3),
_ => new ClockFrame(3) // 9
}
);
}
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class NotarizedApplication : Item
{
public class NotarizedApplication : Item
[Constructible]
public NotarizedApplication() : base(0x14EF) => LootType = LootType.Blessed;
public override int LabelNumber => 1073135; // Notarized Application
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public NotarizedApplication() : base(0x14EF) => LootType = LootType.Blessed;
public NotarizedApplication(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073135; // Notarized Application
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,40 +1,24 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class OfficialSealingWax : Item
{
public class OfficialSealingWax : Item
[Constructible]
public OfficialSealingWax() : base(0x1426)
{
[Constructible]
public OfficialSealingWax() : base(0x1426)
{
LootType = LootType.Blessed;
Hue = 0x84;
}
LootType = LootType.Blessed;
Hue = 0x84;
}
public OfficialSealingWax(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1072744; // Official Sealing Wax
public override int LabelNumber => 1072744; // Official Sealing Wax
public override bool Nontransferable => true;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PeppercornFishsteak : FishSteak
{
public class PeppercornFishsteak : FishSteak
{
[Constructible]
public PeppercornFishsteak() => Hue = 0x222;
[Constructible]
public PeppercornFishsteak() => Hue = 0x222;
public PeppercornFishsteak(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075557; // peppercorn fishsteak
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1075557; // peppercorn fishsteak
}

View file

@ -1,32 +1,16 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PixieLeg : ChickenLeg
{
public class PixieLeg : ChickenLeg
[Constructible]
public PixieLeg(int amount = 1) : base(amount)
{
[Constructible]
public PixieLeg(int amount = 1) : base(amount)
{
LootType = LootType.Blessed;
Hue = 0x1C2;
}
public PixieLeg(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074613; // Pixie Leg
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Hue = 0x1C2;
}
public override int LabelNumber => 1074613; // Pixie Leg
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PortraitOfTheBride : Item
{
public class PortraitOfTheBride : Item
[Constructible]
public PortraitOfTheBride() : base(0xE9F) => LootType = LootType.Blessed;
public override int LabelNumber => 1075300; // Portrait of the Bride
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public PortraitOfTheBride() : base(0xE9F) => LootType = LootType.Blessed;
public PortraitOfTheBride(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075300; // Portrait of the Bride
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,79 +1,63 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PrismaticAmber : Amber
{
public class PrismaticAmber : Amber
[Constructible]
public PrismaticAmber()
{
[Constructible]
public PrismaticAmber()
}
public override int LabelNumber => 1075299; // Prismatic Amber
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
list.Add(1075269); // Destroyed when dropped
}
public override bool DropToWorld(Mobile from, Point3D p)
{
var ret = base.DropToWorld(from, p);
if (ret)
{
DestroyItem(from);
}
public PrismaticAmber(Serial serial) : base(serial)
return ret;
}
public override bool DropToMobile(Mobile from, Mobile target, Point3D p)
{
var ret = base.DropToMobile(from, target, p);
if (ret)
{
DestroyItem(from);
}
public override int LabelNumber => 1075299; // Prismatic Amber
return ret;
}
public override void AddNameProperties(IPropertyList list)
public override bool DropToItem(Mobile from, Item target, Point3D p)
{
var ret = base.DropToItem(from, target, p);
if (ret && Parent != from.Backpack)
{
base.AddNameProperties(list);
list.Add(1075269); // Destroyed when dropped
DestroyItem(from);
}
public override bool DropToWorld(Mobile from, Point3D p)
{
var ret = base.DropToWorld(from, p);
return ret;
}
if (ret)
{
DestroyItem(from);
}
return ret;
}
public override bool DropToMobile(Mobile from, Mobile target, Point3D p)
{
var ret = base.DropToMobile(from, target, p);
if (ret)
{
DestroyItem(from);
}
return ret;
}
public override bool DropToItem(Mobile from, Item target, Point3D p)
{
var ret = base.DropToItem(from, target, p);
if (ret && Parent != from.Backpack)
{
DestroyItem(from);
}
return ret;
}
public virtual void DestroyItem(Mobile from)
{
from.SendLocalizedMessage(500424); // You destroyed the item.
Delete();
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public virtual void DestroyItem(Mobile from)
{
from.SendLocalizedMessage(500424); // You destroyed the item.
Delete();
}
}

View file

@ -1,72 +1,55 @@
using ModernUO.Serialization;
using Server.Engines.MLQuests;
using Server.Engines.MLQuests.Definitions;
using Server.Mobiles;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PrismaticCrystal : Item
{
public class PrismaticCrystal : Item
[Constructible]
public PrismaticCrystal() : base(0x2DA)
{
[Constructible]
public PrismaticCrystal() : base(0x2DA)
Movable = false;
Hue = 0x32;
}
public override int LabelNumber => 1074269; // prismatic crystal
public override void OnDoubleClick(Mobile from)
{
if (from is not PlayerMobile pm || pm.Backpack == null)
{
Movable = false;
Hue = 0x32;
return;
}
public PrismaticCrystal(Serial serial) : base(serial)
if (pm.InRange(GetWorldLocation(), 2))
{
}
public override int LabelNumber => 1074269; // prismatic crystal
public override void OnDoubleClick(Mobile from)
{
if (from is not PlayerMobile pm || pm.Backpack == null)
if (MLQuestSystem.GetContext(pm)?.IsDoingQuest(typeof(UnfadingMemoriesPartOne)) == true &&
pm.Backpack.FindItemByType<PrismaticAmber>(false) == null)
{
return;
}
Item amber = new PrismaticAmber();
if (pm.InRange(GetWorldLocation(), 2))
{
if (MLQuestSystem.GetContext(pm)?.IsDoingQuest(typeof(UnfadingMemoriesPartOne)) == true &&
pm.Backpack.FindItemByType<PrismaticAmber>(false) == null)
if (pm.PlaceInBackpack(amber))
{
Item amber = new PrismaticAmber();
if (pm.PlaceInBackpack(amber))
{
MLQuestSystem.MarkQuestItem(pm, amber);
Delete();
}
else
{
pm.SendLocalizedMessage(502385); // Your pack cannot hold this item.
amber.Delete();
}
MLQuestSystem.MarkQuestItem(pm, amber);
Delete();
}
else
{
pm.SendLocalizedMessage(1075464); // You already have as many of those as you need.
pm.SendLocalizedMessage(502385); // Your pack cannot hold this item.
amber.Delete();
}
}
else
{
pm.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
pm.SendLocalizedMessage(1075464); // You already have as many of those as you need.
}
}
public override void Serialize(IGenericWriter writer)
else
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
pm.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
}
}

View file

@ -1,159 +1,122 @@
using System;
using System.Collections.Generic;
using ModernUO.Serialization;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.MLQuests.Items
namespace Server.Engines.MLQuests.Items;
[SerializationGenerator(0, false)]
public abstract partial class QuestGiverItem : Item, IQuestGiver
{
public abstract class QuestGiverItem : Item, IQuestGiver
private List<MLQuest> m_MLQuests;
public QuestGiverItem(int itemId) : base(itemId)
{
private List<MLQuest> m_MLQuests;
}
public QuestGiverItem(int itemId)
: base(itemId)
public bool CanGiveMLQuest => MLQuests.Count != 0;
public override bool Nontransferable => true;
public List<MLQuest> MLQuests => m_MLQuests ??
(m_MLQuests = MLQuestSystem.FindQuestList(GetType()) ?? MLQuestSystem.EmptyList);
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
if (CanGiveMLQuest)
{
}
public QuestGiverItem(Serial serial)
: base(serial)
{
}
public bool CanGiveMLQuest => MLQuests.Count != 0;
public override bool Nontransferable => true;
public List<MLQuest> MLQuests => m_MLQuests ??
(m_MLQuests = MLQuestSystem.FindQuestList(GetType()) ?? MLQuestSystem.EmptyList);
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
if (CanGiveMLQuest)
{
list.Add(1072269); // Quest Giver
}
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(GetWorldLocation(), 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
else if (!IsChildOf(from.Backpack))
{
from.SendLocalizedMessage(1042593); // That is not in your backpack.
}
else if (MLQuestSystem.Enabled && CanGiveMLQuest && from is PlayerMobile mobile)
{
MLQuestSystem.OnDoubleClick(this, mobile);
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if (MLQuestSystem.Enabled)
{
MLQuestSystem.HandleDeletion(this);
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
list.Add(1072269); // Quest Giver
}
}
public abstract class TransientQuestGiverItem : TransientItem, IQuestGiver
public override void OnDoubleClick(Mobile from)
{
private List<MLQuest> m_MLQuests;
public TransientQuestGiverItem(int itemId, TimeSpan lifeSpan)
: base(itemId, lifeSpan)
if (!from.InRange(GetWorldLocation(), 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
public TransientQuestGiverItem(Serial serial)
: base(serial)
else if (!IsChildOf(from.Backpack))
{
from.SendLocalizedMessage(1042593); // That is not in your backpack.
}
public bool CanGiveMLQuest => MLQuests.Count != 0;
public override bool Nontransferable => true;
public List<MLQuest> MLQuests => m_MLQuests ??
(m_MLQuests = MLQuestSystem.FindQuestList(GetType()) ?? MLQuestSystem.EmptyList);
public override void HandleInvalidTransfer(Mobile from)
else if (MLQuestSystem.Enabled && CanGiveMLQuest && from is PlayerMobile mobile)
{
MLQuestSystem.OnDoubleClick(this, mobile);
}
}
public override void AddNameProperties(IPropertyList list)
public override void OnAfterDelete()
{
base.OnAfterDelete();
if (MLQuestSystem.Enabled)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
if (CanGiveMLQuest)
{
list.Add(1072269); // Quest Giver
}
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(GetWorldLocation(), 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
else if (!IsChildOf(from.Backpack))
{
from.SendLocalizedMessage(1042593); // That is not in your backpack.
}
else if (MLQuestSystem.Enabled && CanGiveMLQuest && from is PlayerMobile mobile)
{
MLQuestSystem.OnDoubleClick(this, mobile);
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if (MLQuestSystem.Enabled)
{
MLQuestSystem.HandleDeletion(this);
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
MLQuestSystem.HandleDeletion(this);
}
}
}
[SerializationGenerator(0, false)]
public abstract partial class TransientQuestGiverItem : TransientItem, IQuestGiver
{
private List<MLQuest> m_MLQuests;
public TransientQuestGiverItem(int itemId, TimeSpan lifeSpan)
: base(itemId, lifeSpan)
{
}
public bool CanGiveMLQuest => MLQuests.Count != 0;
public override bool Nontransferable => true;
public List<MLQuest> MLQuests => m_MLQuests ??
(m_MLQuests = MLQuestSystem.FindQuestList(GetType()) ?? MLQuestSystem.EmptyList);
public override void HandleInvalidTransfer(Mobile from)
{
}
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
if (CanGiveMLQuest)
{
list.Add(1072269); // Quest Giver
}
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(GetWorldLocation(), 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
else if (!IsChildOf(from.Backpack))
{
from.SendLocalizedMessage(1042593); // That is not in your backpack.
}
else if (MLQuestSystem.Enabled && CanGiveMLQuest && from is PlayerMobile mobile)
{
MLQuestSystem.OnDoubleClick(this, mobile);
}
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if (MLQuestSystem.Enabled)
{
MLQuestSystem.HandleDeletion(this);
}
}
}

View file

@ -1,27 +1,10 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class RedLeatherBook : BlueBook
{
public class RedLeatherBook : BlueBook
{
[Constructible]
public RedLeatherBook() => Hue = 0x485;
public RedLeatherBook(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
[Constructible]
public RedLeatherBook() => Hue = 0x485;
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class ReginasLetter : Item
{
public class ReginasLetter : Item
[Constructible]
public ReginasLetter() : base(0x14ED) => LootType = LootType.Blessed;
public override int LabelNumber => 1075306; // Regina's Letter
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public ReginasLetter() : base(0x14ED) => LootType = LootType.Blessed;
public ReginasLetter(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075306; // Regina's Letter
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class ReginasRing : SilverRing
{
public class ReginasRing : SilverRing
[Constructible]
public ReginasRing() => LootType = LootType.Blessed;
public override int LabelNumber => 1075305; // Regina's Ring
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public ReginasRing() => LootType = LootType.Blessed;
public ReginasRing(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075305; // Regina's Ring
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,199 +1,109 @@
using Server.Items;
using ModernUO.Serialization;
using Server.Items;
namespace Server.Engines.MLQuests.Items
namespace Server.Engines.MLQuests.Items;
public static class RewardBag
{
public static class RewardBag
public static void Fill(Container c, int itemCount, double talismanChance)
{
public static void Fill(Container c, int itemCount, double talismanChance)
c.Hue = Utility.RandomNondyedHue();
var done = 0;
if (Utility.RandomDouble() < talismanChance)
{
c.Hue = Utility.RandomNondyedHue();
var done = 0;
if (Utility.RandomDouble() < talismanChance)
{
c.DropItem(new RandomTalisman());
++done;
}
for (; done < itemCount; ++done)
{
var loot = Utility.Random(5) switch
{
0 => (Item)Loot.RandomWeapon(false, true),
1 => Loot.RandomArmor(false, true),
2 => Loot.RandomRangedWeapon(false, true),
3 => Loot.RandomJewelry(),
_ => Loot.RandomHat(false) // 4
};
if (loot == null)
{
continue;
}
Enhance(loot);
c.DropItem(loot);
}
c.DropItem(new RandomTalisman());
++done;
}
public static void Enhance(Item loot)
for (; done < itemCount; ++done)
{
if (loot is BaseWeapon weapon)
var loot = Utility.Random(5) switch
{
BaseRunicTool.ApplyAttributesTo(weapon, Utility.RandomMinMax(1, 5), 10, 80);
return;
0 => (Item)Loot.RandomWeapon(false, true),
1 => Loot.RandomArmor(false, true),
2 => Loot.RandomRangedWeapon(false, true),
3 => Loot.RandomJewelry(),
_ => Loot.RandomHat(false) // 4
};
if (loot == null)
{
continue;
}
if (loot is BaseArmor armor)
{
BaseRunicTool.ApplyAttributesTo(armor, Utility.RandomMinMax(1, 5), 10, 80);
}
if (loot is BaseJewel jewel)
{
BaseRunicTool.ApplyAttributesTo(jewel, Utility.RandomMinMax(1, 5), 10, 80);
}
Enhance(loot);
c.DropItem(loot);
}
}
public class SmallBagOfTrinkets : Bag
public static void Enhance(Item loot)
{
[Constructible]
public SmallBagOfTrinkets()
if (loot is BaseWeapon weapon)
{
RewardBag.Fill(this, 1, 0.0);
BaseRunicTool.ApplyAttributesTo(weapon, Utility.RandomMinMax(1, 5), 10, 80);
return;
}
public SmallBagOfTrinkets(Serial serial)
: base(serial)
if (loot is BaseArmor armor)
{
BaseRunicTool.ApplyAttributesTo(armor, Utility.RandomMinMax(1, 5), 10, 80);
}
public override void Serialize(IGenericWriter writer)
if (loot is BaseJewel jewel)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class BagOfTrinkets : Bag
{
[Constructible]
public BagOfTrinkets()
{
RewardBag.Fill(this, 2, 0.05);
}
public BagOfTrinkets(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class BagOfTreasure : Bag
{
[Constructible]
public BagOfTreasure()
{
RewardBag.Fill(this, 3, 0.20);
}
public BagOfTreasure(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class LargeBagOfTreasure : Bag
{
[Constructible]
public LargeBagOfTreasure()
{
RewardBag.Fill(this, 4, 0.50);
}
public LargeBagOfTreasure(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class RewardStrongbox : WoodenBox
{
[Constructible]
public RewardStrongbox()
{
RewardBag.Fill(this, 5, 1.0);
}
public RewardStrongbox(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
BaseRunicTool.ApplyAttributesTo(jewel, Utility.RandomMinMax(1, 5), 10, 80);
}
}
}
[SerializationGenerator(0, false)]
public partial class SmallBagOfTrinkets : Bag
{
[Constructible]
public SmallBagOfTrinkets()
{
RewardBag.Fill(this, 1, 0.0);
}
}
[SerializationGenerator(0, false)]
public partial class BagOfTrinkets : Bag
{
[Constructible]
public BagOfTrinkets()
{
RewardBag.Fill(this, 2, 0.05);
}
}
[SerializationGenerator(0, false)]
public partial class BagOfTreasure : Bag
{
[Constructible]
public BagOfTreasure()
{
RewardBag.Fill(this, 3, 0.20);
}
}
[SerializationGenerator(0, false)]
public partial class LargeBagOfTreasure : Bag
{
[Constructible]
public LargeBagOfTreasure()
{
RewardBag.Fill(this, 4, 0.50);
}
}
[SerializationGenerator(0, false)]
public partial class RewardStrongbox : WoodenBox
{
[Constructible]
public RewardStrongbox()
{
RewardBag.Fill(this, 5, 1.0);
}
}

View file

@ -1,32 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SadrahSatchel : Backpack
{
public class SadrahSatchel : Backpack
[Constructible]
public SadrahSatchel()
{
[Constructible]
public SadrahSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Bloodmoss(10));
DropItem(new MortarPestle());
}
public SadrahSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Hue = Utility.RandomBrightHue();
DropItem(new Bloodmoss(10));
DropItem(new MortarPestle());
}
}

View file

@ -1,33 +1,17 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SapOfSosaria : Item
{
public class SapOfSosaria : Item
[Constructible]
public SapOfSosaria(int amount = 1) : base(0x1848)
{
[Constructible]
public SapOfSosaria(int amount = 1) : base(0x1848)
{
LootType = LootType.Blessed;
Stackable = true;
Amount = amount;
}
public SapOfSosaria(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074178; // Sap of Sosaria
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Stackable = true;
Amount = amount;
}
public override int LabelNumber => 1074178; // Sap of Sosaria
}

View file

@ -1,37 +1,21 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SealedNotesForJamal : Item
{
public class SealedNotesForJamal : Item
[Constructible]
public SealedNotesForJamal() : base(0xEF9) => LootType = LootType.Blessed;
public override int LabelNumber => 1074998; // Sealed Notes For Jamal
public override double DefaultWeight => 1.0;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public SealedNotesForJamal() : base(0xEF9) => LootType = LootType.Blessed;
public SealedNotesForJamal(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074998; // Sealed Notes For Jamal
public override double DefaultWeight => 1.0;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SealingWaxOrderAddressedToPetrus : Item
{
public class SealingWaxOrderAddressedToPetrus : Item
[Constructible]
public SealingWaxOrderAddressedToPetrus() : base(0xEBF) => LootType = LootType.Blessed;
public override int LabelNumber => 1073132; // Sealing Wax Order addressed to Petrus
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public SealingWaxOrderAddressedToPetrus() : base(0xEBF) => LootType = LootType.Blessed;
public SealingWaxOrderAddressedToPetrus(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073132; // Sealing Wax Order addressed to Petrus
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,31 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[Flippable(0x312D, 0x312E)]
[SerializationGenerator(0, false)]
public partial class SeveredElfEars : Item
{
[Flippable(0x312D, 0x312E)]
public class SeveredElfEars : Item
[Constructible]
public SeveredElfEars(int amount = 1) : base(Utility.RandomList(0x312D, 0x312E))
{
[Constructible]
public SeveredElfEars(int amount = 1) : base(Utility.RandomList(0x312D, 0x312E))
{
Stackable = true;
Amount = amount;
}
public SeveredElfEars(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Stackable = true;
Amount = amount;
}
}

View file

@ -1,31 +1,15 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[Flippable(0x312F, 0x3130)]
[SerializationGenerator(0, false)]
public partial class SeveredHumanEars : Item
{
[Flippable(0x312F, 0x3130)]
public class SeveredHumanEars : Item
[Constructible]
public SeveredHumanEars(int amount = 1) : base(Utility.RandomList(0x312F, 0x3130))
{
[Constructible]
public SeveredHumanEars(int amount = 1) : base(Utility.RandomList(0x312F, 0x3130))
{
Stackable = true;
Amount = amount;
}
public SeveredHumanEars(Serial serial) : base(serial)
{
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
Stackable = true;
Amount = amount;
}
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SignedTuitionReimbursementForm : Item
{
public class SignedTuitionReimbursementForm : Item
[Constructible]
public SignedTuitionReimbursementForm() : base(0x14F0) => LootType = LootType.Blessed;
public override int LabelNumber => 1074614; // Signed Tuition Reimbursement Form
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public SignedTuitionReimbursementForm() : base(0x14F0) => LootType = LootType.Blessed;
public SignedTuitionReimbursementForm(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074614; // Signed Tuition Reimbursement Form
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,32 +1,16 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SpecialTreatForDrithen : Item
{
public class SpecialTreatForDrithen : Item
[Constructible]
public SpecialTreatForDrithen() : base(0x21B)
{
[Constructible]
public SpecialTreatForDrithen() : base(0x21B)
{
LootType = LootType.Blessed;
Hue = 0x489;
}
public SpecialTreatForDrithen(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074517; // Special Treat for Drithen
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Hue = 0x489;
}
public override int LabelNumber => 1074517; // Special Treat for Drithen
}

View file

@ -1,30 +1,13 @@
using System;
using ModernUO.Serialization;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SpeckledPoisonSac : TransientItem
{
public class SpeckledPoisonSac : TransientItem
{
[Constructible]
public SpeckledPoisonSac() : base(0x23A, TimeSpan.FromHours(1)) => LootType = LootType.Blessed;
[Constructible]
public SpeckledPoisonSac() : base(0x23A, TimeSpan.FromHours(1)) => LootType = LootType.Blessed;
public SpeckledPoisonSac(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073133; // Speckled Poison Sac
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1073133; // Speckled Poison Sac
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class SpiritBottle : Item
{
public class SpiritBottle : Item
[Constructible]
public SpiritBottle() : base(0xEFB) => LootType = LootType.Blessed;
public override int LabelNumber => 1075283; // Spirit bottle
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public SpiritBottle() : base(0xEFB) => LootType = LootType.Blessed;
public SpiritBottle(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075283; // Spirit bottle
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,28 +1,12 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class StoutWhip : Item
{
public class StoutWhip : Item
{
[Constructible]
public StoutWhip() : base(0x166F) => LootType = LootType.Blessed;
[Constructible]
public StoutWhip() : base(0x166F) => LootType = LootType.Blessed;
public StoutWhip(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074812; // Stout Whip
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override int LabelNumber => 1074812; // Stout Whip
}

View file

@ -1,40 +1,24 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class TaintedTreeSample : Item // On OSI the base class is Kindling, and it's ignitable...
{
public class TaintedTreeSample : Item // On OSI the base class is Kindling, and it's ignitable...
[Constructible]
public TaintedTreeSample() : base(0xDE2)
{
[Constructible]
public TaintedTreeSample() : base(0xDE2)
{
LootType = LootType.Blessed;
Hue = 0x9D;
}
LootType = LootType.Blessed;
Hue = 0x9D;
}
public TaintedTreeSample(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074997; // Tainted Tree Sample
public override int LabelNumber => 1074997; // Tainted Tree Sample
public override bool Nontransferable => true;
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,218 +1,164 @@
using System;
using ModernUO.Serialization;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.MLQuests.Items
namespace Server.Engines.MLQuests.Items;
[SerializationGenerator(1, false)]
public partial class MLQuestTeleporter : Teleporter
{
public class MLQuestTeleporter : Teleporter
[InvalidateProperties]
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private Type _questType;
[SerializableField(1)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private TextDefinition _message;
[Constructible]
public MLQuestTeleporter() : this(Point3D.Zero)
{
private Type m_QuestType;
}
[Constructible]
public MLQuestTeleporter()
: this(Point3D.Zero)
[Constructible]
public MLQuestTeleporter(
Point3D pointDest, Map mapDest = null, Type questType = null, TextDefinition message = null
) : base(pointDest, mapDest)
{
_questType = questType;
Message = message;
}
public override bool CanTeleport(Mobile m)
{
if (!base.CanTeleport(m))
{
return false;
}
[Constructible]
public MLQuestTeleporter(
Point3D pointDest, Map mapDest = null, Type questType = null, TextDefinition message = null
)
: base(pointDest, mapDest)
if (_questType == null)
{
m_QuestType = questType;
Message = message;
return true;
}
public MLQuestTeleporter(Serial serial)
: base(serial)
if (m is not PlayerMobile pm)
{
return false;
}
[CommandProperty(AccessLevel.GameMaster)]
public Type QuestType
var context = MLQuestSystem.GetContext(pm);
if (context?.IsDoingQuest(_questType) == true || context?.HasDoneQuest(_questType) == true)
{
get => m_QuestType;
set
{
m_QuestType = value;
InvalidateProperties();
}
return true;
}
[CommandProperty(AccessLevel.GameMaster)]
public TextDefinition Message { get; set; }
Message.SendMessageTo(m);
return false;
}
public override bool CanTeleport(Mobile m)
public override void GetProperties(IPropertyList list)
{
base.GetProperties(list);
if (_questType != null)
{
if (!base.CanTeleport(m))
{
return false;
}
list.Add($"Required quest: {_questType.Name}");
}
}
if (m_QuestType == null)
{
return true;
}
private void Deserialize(IGenericReader reader, int version)
{
var typeName = reader.ReadString();
if (m is not PlayerMobile pm)
{
return false;
}
if (typeName != null)
{
_questType = AssemblyHandler.FindTypeByFullName(typeName);
}
var context = MLQuestSystem.GetContext(pm);
_message = reader.ReadTextDefinition();
}
}
if (context?.IsDoingQuest(m_QuestType) == true || context?.HasDoneQuest(m_QuestType) == true)
{
return true;
}
public interface ITicket
{
void OnTicketUsed(Mobile from);
}
[SerializationGenerator(1, false)]
public partial class TicketTeleporter : Teleporter
{
[InvalidateProperties]
[SerializableField(0)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private Type _ticketType;
[SerializableField(1)]
[SerializedCommandProperty(AccessLevel.GameMaster)]
private TextDefinition _message;
[Constructible]
public TicketTeleporter() : this(Point3D.Zero)
{
}
[Constructible]
public TicketTeleporter(
Point3D pointDest, Map mapDest = null, Type ticketType = null, TextDefinition message = null
) : base(pointDest, mapDest)
{
_ticketType = ticketType;
Message = message;
}
public override bool CanTeleport(Mobile m)
{
if (!base.CanTeleport(m))
{
return false;
}
if (_ticketType == null)
{
return true;
}
var pack = m.Backpack;
var ticket = pack?.FindItemByType(_ticketType, false) ??
m.Items.Find(item => _ticketType.IsInstanceOfType(item));
if (ticket == null)
{
Message.SendMessageTo(m);
return false;
}
public override void GetProperties(IPropertyList list)
(ticket as ITicket)?.OnTicketUsed(m);
return true;
}
public override void GetProperties(IPropertyList list)
{
base.GetProperties(list);
if (_ticketType != null)
{
base.GetProperties(list);
if (m_QuestType != null)
{
list.Add($"Required quest: {m_QuestType.Name}");
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_QuestType?.FullName);
writer.Write(Message);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
var typeName = reader.ReadString();
if (typeName != null)
{
m_QuestType = AssemblyHandler.FindTypeByFullName(typeName);
}
Message = reader.ReadTextDefinition();
list.Add($"Required ticket: {_ticketType.Name}");
}
}
public interface ITicket
private void Deserialize(IGenericReader reader, int version)
{
void OnTicketUsed(Mobile from);
}
var typeName = reader.ReadString();
public class TicketTeleporter : Teleporter
{
private Type m_TicketType;
[Constructible]
public TicketTeleporter()
: this(Point3D.Zero)
if (typeName != null)
{
_ticketType = AssemblyHandler.FindTypeByFullName(typeName);
}
[Constructible]
public TicketTeleporter(
Point3D pointDest, Map mapDest = null, Type ticketType = null, TextDefinition message = null
)
: base(pointDest, mapDest)
{
m_TicketType = ticketType;
Message = message;
}
public TicketTeleporter(Serial serial)
: base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public Type TicketType
{
get => m_TicketType;
set
{
m_TicketType = value;
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public TextDefinition Message { get; set; }
public override bool CanTeleport(Mobile m)
{
if (!base.CanTeleport(m))
{
return false;
}
if (m_TicketType == null)
{
return true;
}
var pack = m.Backpack;
var ticket = pack?.FindItemByType(m_TicketType, false) ??
m.Items.Find(item => m_TicketType.IsInstanceOfType(item));
if (ticket == null)
{
Message.SendMessageTo(m);
return false;
}
(ticket as ITicket)?.OnTicketUsed(m);
return true;
}
public override void GetProperties(IPropertyList list)
{
base.GetProperties(list);
if (m_TicketType != null)
{
list.Add($"Required ticket: {m_TicketType.Name}");
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write( m_TicketType?.FullName);
writer.Write(Message);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
var typeName = reader.ReadString();
if (typeName != null)
{
m_TicketType = AssemblyHandler.FindTypeByFullName(typeName);
}
Message = reader.ReadTextDefinition();
}
_message = reader.ReadTextDefinition();
}
}

View file

@ -1,32 +1,16 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class TransparentHeart : GoldEarrings
{
public class TransparentHeart : GoldEarrings
[Constructible]
public TransparentHeart()
{
[Constructible]
public TransparentHeart()
{
LootType = LootType.Blessed;
Hue = 0x4AB;
}
public TransparentHeart(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075400; // Transparent Heart
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Hue = 0x4AB;
}
public override int LabelNumber => 1075400; // Transparent Heart
}

View file

@ -1,36 +1,20 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class TuitionReimbursementForm : Item
{
public class TuitionReimbursementForm : Item
[Constructible]
public TuitionReimbursementForm() : base(0xE3A) => LootType = LootType.Blessed;
public override int LabelNumber => 1074610; // Tuition Reimbursement Form (in triplicate)
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
[Constructible]
public TuitionReimbursementForm() : base(0xE3A) => LootType = LootType.Blessed;
public TuitionReimbursementForm(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074610; // Tuition Reimbursement Form (in triplicate)
public override bool Nontransferable => true;
public override void AddNameProperties(IPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
}

View file

@ -1,34 +1,18 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class UnicornRibs : Item
{
public class UnicornRibs : Item
[Constructible]
public UnicornRibs(int amount = 1) : base(0x9F1)
{
[Constructible]
public UnicornRibs(int amount = 1) : base(0x9F1)
{
LootType = LootType.Blessed;
Hue = 0x14B;
Stackable = true;
Amount = amount;
}
public UnicornRibs(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074611; // Unicorn Ribs
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
LootType = LootType.Blessed;
Hue = 0x14B;
Stackable = true;
Amount = amount;
}
public override int LabelNumber => 1074611; // Unicorn Ribs
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.BagOfTreasure"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.BagOfTrinkets"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.BaseCraftmansSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.BedlamTeleporter"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.BlacksmithSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.CarpentrySatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.FletchingSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.LargeBagOfTreasure"
}

View file

@ -0,0 +1,19 @@
{
"version": 1,
"type": "Server.Engines.MLQuests.Items.MLQuestTeleporter",
"properties": [
{
"name": "QuestType",
"type": "System.Type",
"rule": "PrimitiveTypeMigrationRule"
},
{
"name": "Message",
"type": "Server.TextDefinition",
"rule": "PrimitiveUOTypeMigrationRule",
"ruleArguments": [
"TextDefinition"
]
}
]
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.QuestGiverItem"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.RewardStrongbox"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.SmallBagOfTrinkets"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.TailorSatchel"
}

View file

@ -0,0 +1,19 @@
{
"version": 1,
"type": "Server.Engines.MLQuests.Items.TicketTeleporter",
"properties": [
{
"name": "TicketType",
"type": "System.Type",
"rule": "PrimitiveTypeMigrationRule"
},
{
"name": "Message",
"type": "Server.TextDefinition",
"rule": "PrimitiveUOTypeMigrationRule",
"ruleArguments": [
"TextDefinition"
]
}
]
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.TinkerSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Engines.MLQuests.Items.TransientQuestGiverItem"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.ABauble"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.APersonalLetterAddressedToAhie"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AlchemistsBandage"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AnOldNecklace"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AnOldRing"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AndricSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AndrosGratitude"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.AsandosSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.BasinOfCrystalClearWater"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.Bleach"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.BridesLetter"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.CompletedTuitionReimbursementForm"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.CrateForSledge"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.DreadSpiderSilk"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FragmentOfAMap"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FragmentOfAMapDelivery"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FriendOfTheLibraryToken"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.FriendsOfTheLibraryApplication"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.GamanHorns"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.GervisSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.GiftForArielle"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.HargroveSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.KirinBrains"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.LowelSatchel"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.MiniatureMushroom"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.MirrorOfPurification"
}

Some files were not shown because too many files have changed in this diff Show more