Reorganizes Project (#41)

This commit is contained in:
Kamron Batman 2019-08-02 18:13:40 -07:00 committed by GitHub
parent 08bf44af9a
commit 3614a66aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3499 changed files with 79 additions and 55 deletions

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class ABauble : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,41 @@
using System;
namespace Server.Items
{
public class APersonalLetterAddressedToAhie : TransientItem
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class AnOldNecklace : Necklace
{
[Constructible]
public AnOldNecklace()
{
Hue = 0x222;
}
public AnOldNecklace(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075525; // an old necklace
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class AnOldRing : GoldRing
{
[Constructible]
public AnOldRing()
{
Hue = 0x222;
}
public AnOldRing(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075524; // an old ring
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class AndricSatchel : Backpack
{
[Constructible]
public AndricSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Feather(10));
DropItem(new FletcherTools());
}
public AndricSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class AndrosGratitude : SmithHammer
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class AsandosSatchel : Backpack
{
[Constructible]
public AsandosSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new SackFlour());
DropItem(new Skillet());
}
public AsandosSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class BasinOfCrystalClearWater : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,57 @@
using Server.Mobiles;
using Server.Network;
namespace Server.Engines.MLQuests.Items
{
public class BedlamTeleporter : Item
{
private static readonly Point3D PointDest = new Point3D(120, 1682, 0);
private static readonly Map MapDest = Map.Malas;
public BedlamTeleporter()
: base(0x124D)
{
Movable = false;
}
public BedlamTeleporter(Serial serial)
: base(serial)
{
}
public override int LabelNumber => 1074161; // Access to Bedlam by invitation only
public override void OnDoubleClick(Mobile from)
{
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.
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class Bleach : PigmentsOfTokuno
{
[Constructible]
public Bleach()
{
LootType = LootType.Blessed;
}
public Bleach(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075375; // Bleach
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class BridesLetter : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class CompletedTuitionReimbursementForm : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,227 @@
using System;
using Server.Engines.Craft;
using Server.Items;
namespace Server.Engines.MLQuests.Items
{
public abstract class BaseCraftmansSatchel : Backpack
{
protected static readonly Type[] m_TalismanType = { typeof(RandomTalisman) };
public BaseCraftmansSatchel()
{
Hue = Utility.RandomBrightHue();
}
public BaseCraftmansSatchel(Serial serial)
: base(serial)
{
}
protected void AddBaseLoot(params Type[][] lootSets)
{
Item loot = Loot.Construct(lootSets[Utility.Random(lootSets.Length)]);
if (loot == null)
return;
RewardBag.Enhance(loot);
DropItem(loot);
}
protected void AddRecipe(CraftSystem system)
{
// TODO: change craftable artifact recipes to a rarer drop
int recipeID = system.RandomRecipe();
if (recipeID != -1)
DropItem(new RecipeScroll(recipeID));
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class TailorSatchel : BaseCraftmansSatchel
{
[Constructible]
public TailorSatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomDouble() < 0.50)
AddRecipe(DefTailoring.CraftSystem);
}
public TailorSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class BlacksmithSatchel : BaseCraftmansSatchel
{
[Constructible]
public BlacksmithSatchel()
{
AddBaseLoot(Loot.MLWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomDouble() < 0.50)
AddRecipe(DefBlacksmithy.CraftSystem);
}
public BlacksmithSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class TinkerSatchel : BaseCraftmansSatchel
{
[Constructible]
public TinkerSatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomDouble() < 0.50)
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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class FletchingSatchel : BaseCraftmansSatchel
{
[Constructible]
public FletchingSatchel()
{
AddBaseLoot(Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomDouble() < 0.50)
AddRecipe(DefBowFletching.CraftSystem);
// TODO: runic fletching kit
}
public FletchingSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class CarpentrySatchel : BaseCraftmansSatchel
{
[Constructible]
public CarpentrySatchel()
{
AddBaseLoot(Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType);
if (Utility.RandomDouble() < 0.50)
AddRecipe(DefCarpentry.CraftSystem);
// TODO: Add runic dovetail saw
}
public CarpentrySatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,41 @@
using System;
namespace Server.Items
{
public class CrateForSledge : TransientItem
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class FragmentOfAMap : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class FragmentOfAMapDelivery : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class FriendOfTheLibraryToken : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class FriendsOfTheLibraryApplication : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
namespace Server.Items
{
public class GamanHorns : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class GervisSatchel : Backpack
{
[Constructible]
public GervisSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new IronIngot(10));
DropItem(new SmithHammer());
}
public GervisSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,40 @@
namespace Server.Items
{
public class GiftForArielle : BaseContainer
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class HargroveSatchel : Backpack
{
[Constructible]
public HargroveSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Gold(15));
DropItem(new Hatchet());
}
public HargroveSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class KirinBrains : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class LowelSatchel : Backpack
{
[Constructible]
public LowelSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Board(10));
DropItem(new DovetailSaw());
}
public LowelSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class MiniatureMushroom : Food
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class MirrorOfPurification : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class MuggSatchel : Backpack
{
[Constructible]
public MuggSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Pickaxe());
DropItem(new Pickaxe());
}
public MuggSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,65 @@
namespace Server.Items
{
public class NibbetSatchel : Backpack
{
[Constructible]
public NibbetSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new TinkerTools());
switch (Utility.Random(10))
{
case 0:
DropItem(new Springs(3));
break;
case 1:
DropItem(new Axle(3));
break;
case 2:
DropItem(new Hinge(3));
break;
case 3:
DropItem(new Key());
break;
case 4:
DropItem(new Scissors());
break;
case 5:
DropItem(new BarrelTap(3));
break;
case 6:
DropItem(new BarrelHoops());
break;
case 7:
DropItem(new Gears(3));
break;
case 8:
DropItem(new Lockpick(3));
break;
case 9:
DropItem(new ClockFrame(3));
break;
}
}
public NibbetSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class NotarizedApplication : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class PeppercornFishsteak : FishSteak
{
[Constructible]
public PeppercornFishsteak()
{
Hue = 0x222;
}
public PeppercornFishsteak(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075557; // peppercorn fishsteak
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class PixieLeg : ChickenLeg
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class PortraitOfTheBride : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,73 @@
namespace Server.Items
{
public class PrismaticAmber : Amber
{
[Constructible]
public PrismaticAmber()
{
}
public PrismaticAmber(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1075299; // Prismatic Amber
public override void AddNameProperties(ObjectPropertyList list)
{
base.AddNameProperties(list);
list.Add(1075269); // Destroyed when dropped
}
public override bool DropToWorld(Mobile from, Point3D p)
{
bool ret = base.DropToWorld(from, p);
if (ret)
DestroyItem(from);
return ret;
}
public override bool DropToMobile(Mobile from, Mobile target, Point3D p)
{
bool ret = base.DropToMobile(from, target, p);
if (ret)
DestroyItem(from);
return ret;
}
public override bool DropToItem(Mobile from, Item target, Point3D p)
{
bool 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,71 @@
using Server.Engines.MLQuests;
using Server.Engines.MLQuests.Definitions;
using Server.Mobiles;
using Server.Network;
namespace Server.Items
{
public class PrismaticCrystal : Item
{
[Constructible]
public PrismaticCrystal() : base(0x2DA)
{
Movable = false;
Hue = 0x32;
}
public PrismaticCrystal(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1074269; // prismatic crystal
public override void OnDoubleClick(Mobile from)
{
if (!(from is PlayerMobile pm) || pm.Backpack == null)
return;
if (pm.InRange(GetWorldLocation(), 2))
{
if (MLQuestSystem.GetContext(pm)?.IsDoingQuest(typeof(UnfadingMemoriesPartOne)) == true &&
pm.Backpack.FindItemByType<PrismaticAmber>(false) == null)
{
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();
}
}
else
{
pm.SendLocalizedMessage(1075464); // You already have as many of those as you need.
}
}
else
{
pm.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,140 @@
using System;
using System.Collections.Generic;
using Server.Items;
using Server.Mobiles;
using Server.Network;
namespace Server.Engines.MLQuests.Items
{
public abstract class QuestGiverItem : Item, IQuestGiver
{
private List<MLQuest> m_MLQuests;
public QuestGiverItem(int itemId)
: base(itemId)
{
}
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(ObjectPropertyList 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public abstract class TransientQuestGiverItem : TransientItem, IQuestGiver
{
private List<MLQuest> m_MLQuests;
public TransientQuestGiverItem(int itemId, TimeSpan lifeSpan)
: base(itemId, lifeSpan)
{
}
public TransientQuestGiverItem(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 HandleInvalidTransfer(Mobile from)
{
}
public override void AddNameProperties(ObjectPropertyList 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,30 @@
namespace Server.Items
{
public class RedLeatherBook : BlueBook
{
[Constructible]
public RedLeatherBook()
{
Hue = 0x485;
}
public RedLeatherBook(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class ReginasLetter : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class ReginasRing : SilverRing
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,203 @@
using Server.Items;
namespace Server.Engines.MLQuests.Items
{
public static class RewardBag
{
public static void Fill(Container c, int itemCount, double talismanChance)
{
c.Hue = Utility.RandomNondyedHue();
int done = 0;
if (Utility.RandomDouble() < talismanChance)
{
c.DropItem(new RandomTalisman());
++done;
}
for (; done < itemCount; ++done)
{
Item loot = null;
switch (Utility.Random(5))
{
case 0:
loot = Loot.RandomWeapon(false, true);
break;
case 1:
loot = Loot.RandomArmor(false, true);
break;
case 2:
loot = Loot.RandomRangedWeapon(false, true);
break;
case 3:
loot = Loot.RandomJewelry();
break;
case 4:
loot = Loot.RandomHat(false);
break;
}
if (loot == null)
continue;
Enhance(loot);
c.DropItem(loot);
}
}
public static void Enhance(Item loot)
{
if (loot is BaseWeapon weapon)
{
BaseRunicTool.ApplyAttributesTo(weapon, Utility.RandomMinMax(1, 5), 10, 80);
return;
}
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);
}
}
public class SmallBagOfTrinkets : Bag
{
[Constructible]
public SmallBagOfTrinkets()
{
RewardBag.Fill(this, 1, 0.0);
}
public SmallBagOfTrinkets(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int 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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class SadrahSatchel : Backpack
{
[Constructible]
public SadrahSatchel()
{
Hue = Utility.RandomBrightHue();
DropItem(new Bloodmoss(10));
DropItem(new MortarPestle());
}
public SadrahSatchel(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,33 @@
namespace Server.Items
{
public class SapOfSosaria : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,40 @@
namespace Server.Items
{
public class SealedNotesForJamal : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class SealingWaxOrderAddressedToPetrus : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
[Flippable(0x312D, 0x312E)]
public class SeveredElfEars : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
[Flippable(0x312F, 0x3130)]
public class SeveredHumanEars : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class SignedTuitionReimbursementForm : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class SpecialTreatForDrithen : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,33 @@
using System;
namespace Server.Items
{
public class SpeckledPoisonSac : TransientItem
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class SpiritBottle : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class StoutWhip : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,194 @@
using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.MLQuests.Items
{
public class MLQuestTeleporter : Teleporter
{
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)
{
m_QuestType = questType;
Message = message;
}
public MLQuestTeleporter(Serial serial)
: base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public Type QuestType
{
get => m_QuestType;
set
{
m_QuestType = value;
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public TextDefinition Message{ get; set; }
public override bool CanTeleport(Mobile m)
{
if (!base.CanTeleport(m))
return false;
if (m_QuestType == null)
return true;
if (!(m is PlayerMobile pm))
return false;
MLQuestContext context = MLQuestSystem.GetContext(pm);
if (context?.IsDoingQuest(m_QuestType) == true || context?.HasDoneQuest(m_QuestType) == true)
return true;
TextDefinition.SendMessageTo(m, Message);
return false;
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
if (m_QuestType != null)
list.Add($"Required quest: {m_QuestType.Name}");
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_QuestType != null ? m_QuestType.FullName : null);
TextDefinition.Serialize(writer, Message);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
string typeName = reader.ReadString();
if (typeName != null)
m_QuestType = ScriptCompiler.FindTypeByFullName(typeName, false);
Message = TextDefinition.Deserialize(reader);
}
}
public interface ITicket
{
void OnTicketUsed(Mobile from);
}
public class TicketTeleporter : Teleporter
{
private Type m_TicketType;
[Constructible]
public TicketTeleporter()
: this(Point3D.Zero)
{
}
[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;
Container pack = m.Backpack;
Item ticket = pack?.FindItemByType(m_TicketType, false) ?? m.Items.Find(item => m_TicketType.IsInstanceOfType(item));
if (ticket == null)
{
TextDefinition.SendMessageTo(m, Message);
return false;
}
(ticket as ITicket)?.OnTicketUsed(m);
return true;
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
if (m_TicketType != null)
list.Add($"Required ticket: {m_TicketType.Name}");
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(m_TicketType != null ? m_TicketType.FullName : null);
TextDefinition.Serialize(writer, Message);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
string typeName = reader.ReadString();
if (typeName != null)
m_TicketType = ScriptCompiler.FindTypeByFullName(typeName, false);
Message = TextDefinition.Deserialize(reader);
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class TransparentHeart : GoldEarrings
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
namespace Server.Items
{
public class TuitionReimbursementForm : Item
{
[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(ObjectPropertyList list)
{
base.AddNameProperties(list);
AddQuestItemProperty(list);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
namespace Server.Items
{
public class UnicornRibs : Item
{
[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(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}