ML quest system; first SVN release.

Secondary changes:
- Region fixes, mainly for New Haven.
- Recipe system changes.
- Enabled ML craftables.
- Dyeing/cutting restrictions for quest items.
- Moved IsInvulnerable from BaseVendor to BaseCreature.
- Moved RandomBrightHue to Utility.
- Items no longer decay when attached to a spawner.
- Quest item hue is now faked through packets, instead of overriding Hue.
- Re-enabled item drag effects for SA clients.
- Fixed AssignRandomFacialHair bug in Utility.
- Added random hue comments to Utility.
This commit is contained in:
eos 2013-02-03 01:05:17 +00:00
parent 5c7af18dfb
commit 35fbffdb51
167 changed files with 23218 additions and 234 deletions

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
public class ABauble : Item
{
public override int LabelNumber{ get{ return 1073137; } } // A bauble
[Constructable]
public ABauble() : base( 0x23B )
{
LootType = LootType.Blessed;
}
public ABauble( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class APersonalLetterAddressedToAhie : TransientItem
{
public override int LabelNumber{ get{ return 1073128; } } // A personal letter addressed to: Ahie
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public APersonalLetterAddressedToAhie() : base( 0x14ED, TimeSpan.FromMinutes( 30 ) )
{
LootType = LootType.Blessed;
}
public APersonalLetterAddressedToAhie( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

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

View file

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

View file

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

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class AndricSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
public class AndrosGratitude : SmithHammer
{
public override int LabelNumber{ get{ return 1075345; } } // Andros Gratitude
[Constructable]
public AndrosGratitude() : base( 10 )
{
LootType = LootType.Blessed;
}
public AndrosGratitude( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class AsandosSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class BasinOfCrystalClearWater : Item
{
public override int LabelNumber{ get{ return 1075303; } } // Basin of Crystal-Clear Water
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public BasinOfCrystalClearWater() : base( 0x1008 )
{
LootType = LootType.Blessed;
}
public BasinOfCrystalClearWater( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class BridesLetter : Item
{
public override int LabelNumber{ get{ return 1075301; } } // Bride's Letter
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public BridesLetter() : base( 0x14ED )
{
LootType = LootType.Blessed;
}
public BridesLetter( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class CompletedTuitionReimbursementForm : Item
{
public override int LabelNumber{ get{ return 1074625; } } // Completed Tuition Reimbursement Form
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public CompletedTuitionReimbursementForm() : base( 0x14F0 )
{
LootType = LootType.Blessed;
}
public CompletedTuitionReimbursementForm( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,229 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server;
using Server.Engines.Craft;
using Server.Items;
namespace Server.Engines.MLQuests.Items
{
public abstract class BaseCraftmansSatchel : Backpack
{
protected static readonly Type[] m_TalismanType = new Type[] { typeof( RandomTalisman ) };
public BaseCraftmansSatchel()
{
Hue = Utility.RandomBrightHue();
}
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 BaseCraftmansSatchel( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class TailorSatchel : BaseCraftmansSatchel
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class BlacksmithSatchel : BaseCraftmansSatchel
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class TinkerSatchel : BaseCraftmansSatchel
{
[Constructable]
public TinkerSatchel()
{
AddBaseLoot( Loot.MLArmorTypes, Loot.MLWeaponTypes, Loot.MLRangedWeaponTypes, Loot.JewelryTypes, m_TalismanType );
if ( Utility.RandomDouble() < 0.50 )
{
// TODO: Add recipe drops (drops include inscription, alchemy and drops from non-artifact recipes for tailoring, blacksmith, carpentry and fletching.
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class FletchingSatchel : BaseCraftmansSatchel
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class CarpentrySatchel : BaseCraftmansSatchel
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class CrateForSledge : TransientItem
{
public override int LabelNumber{ get{ return 1074520; } } // Crate for Sledge
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public CrateForSledge() : base( 0x1FFF, TimeSpan.FromHours( 1 ) )
{
LootType = LootType.Blessed;
}
public CrateForSledge( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
public class FragmentOfAMap : Item
{
public override int LabelNumber{ get{ return 1074533; } } // Fragment of a Map
[Constructable]
public FragmentOfAMap() : base( 0x14ED )
{
LootType = LootType.Blessed;
}
public FragmentOfAMap( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class FragmentOfAMapDelivery : Item
{
public override int LabelNumber{ get{ return 1074533; } } // Fragment of a Map
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public FragmentOfAMapDelivery() : base( 0x14ED )
{
LootType = LootType.Blessed;
}
public FragmentOfAMapDelivery( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class FriendOfTheLibraryToken : Item
{
public override int LabelNumber{ get{ return 1073136; } } // Friend of the Library Token (allows donations to be made)
[Constructable]
public FriendOfTheLibraryToken() : base( 0x2F58 )
{
Layer = Layer.Talisman;
Hue = 0x28A;
}
public FriendOfTheLibraryToken( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class FriendsOfTheLibraryApplication : Item
{
public override int LabelNumber{ get{ return 1073131; } } // Friends of the Library Application
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public FriendsOfTheLibraryApplication() : base( 0xEC0 )
{
LootType = LootType.Blessed;
}
public FriendsOfTheLibraryApplication( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class GamanHorns : Item
{
public override int LabelNumber{ get{ return 1074557; } } // Gaman Horns
[Constructable]
public GamanHorns() : this( 1 )
{
}
[Constructable]
public GamanHorns( int amount ) : base( 0x1084 )
{
LootType = LootType.Blessed;
Stackable = true;
Amount = amount;
Hue = 0x395;
}
public GamanHorns( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class GervisSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using Server;
namespace Server.Items
{
public class GiftForArielle : BaseContainer
{
public override int LabelNumber{ get{ return 1074356; } } // gift for arielle
public override int DefaultGumpID { get { return 0x41; } }
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public GiftForArielle() : base( 0x1882 )
{
Hue = 0x2C4;
}
public GiftForArielle( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class HargroveSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class KirinBrains : Item
{
public override int LabelNumber{ get{ return 1074612; } } // Ki-Rin Brains
[Constructable]
public KirinBrains() : base( 0x1CF0 )
{
LootType = LootType.Blessed;
Hue = 0xD7;
}
public KirinBrains( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class LowelSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
public class MiniatureMushroom : Food
{
public override int LabelNumber{ get{ return 1073138; } } // Miniature mushroom
[Constructable]
public MiniatureMushroom() : base( 0xD16 )
{
LootType = LootType.Blessed;
}
public MiniatureMushroom( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class MirrorOfPurification : Item
{
public override int LabelNumber{ get{ return 1075304; } } // Mirror of Purification
[Constructable]
public MirrorOfPurification() : base( 0x1008 )
{
LootType = LootType.Blessed;
Hue = 0x530;
}
public MirrorOfPurification( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class MuggSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,49 @@
using System;
using Server;
namespace Server.Items
{
public class NibbetSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class NotarizedApplication : Item
{
public override int LabelNumber{ get{ return 1073135; } } // Notarized Application
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public NotarizedApplication() : base( 0x14EF )
{
LootType = LootType.Blessed;
}
public NotarizedApplication( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

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

View file

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

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class PixieLeg : Item
{
public override int LabelNumber{ get{ return 1074613; } } // Pixie Leg
[Constructable]
public PixieLeg() : this( 1 )
{
}
[Constructable]
public PixieLeg( int amount ) : base( 0x1608 )
{
LootType = LootType.Blessed;
Hue = 0x1C2;
Stackable = true;
Amount = amount;
}
public PixieLeg( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class PortraitOfTheBride : Item
{
public override int LabelNumber{ get{ return 1075300; } } // Portrait of the Bride
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public PortraitOfTheBride() : base( 0xE9F )
{
LootType = LootType.Blessed;
}
public PortraitOfTheBride( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using Server;
namespace Server.Items
{
public class PrismaticAmber : Amber
{
public override int LabelNumber{ get{ return 1075299; } } // Prismatic Amber
[Constructable]
public PrismaticAmber() : base()
{
}
public PrismaticAmber( Serial serial ) : base( serial )
{
}
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using Server;
using Server.Engines.MLQuests;
using Server.Engines.MLQuests.Definitions;
using Server.Mobiles;
using Server.Network;
namespace Server.Items
{
public class PrismaticCrystal : Item
{
public override int LabelNumber{ get{ return 1074269; } } // prismatic crystal
[Constructable]
public PrismaticCrystal() : base( 0x2DA )
{
Movable = false;
Hue = 0x32;
}
public PrismaticCrystal( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
PlayerMobile pm = from as PlayerMobile;
if ( pm == null || pm.Backpack == null )
return;
if ( pm.InRange( GetWorldLocation(), 2 ) )
{
MLQuestContext context = MLQuestSystem.GetContext( pm );
if ( context != null && context.IsDoingQuest( typeof( UnfadingMemoriesPartOne ) ) && pm.Backpack.FindItemByType( typeof( 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( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class ReginasLetter : Item
{
public override int LabelNumber{ get{ return 1075306; } } // Regina's Letter
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public ReginasLetter() : base( 0x14ED )
{
LootType = LootType.Blessed;
}
public ReginasLetter( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class ReginasRing : SilverRing
{
public override int LabelNumber{ get{ return 1075305; } } // Regina's Ring
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public ReginasRing() : base()
{
LootType = LootType.Blessed;
}
public ReginasRing( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,196 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server;
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 )
BaseRunicTool.ApplyAttributesTo( (BaseWeapon)loot, Utility.RandomMinMax( 1, 5 ), 10, 80 );
else if ( loot is BaseArmor )
BaseRunicTool.ApplyAttributesTo( (BaseArmor)loot, Utility.RandomMinMax( 1, 5 ), 10, 80 );
else if ( loot is BaseShield )
BaseRunicTool.ApplyAttributesTo( (BaseShield)loot, Utility.RandomMinMax( 1, 5 ), 10, 80 );
else if ( loot is BaseJewel )
BaseRunicTool.ApplyAttributesTo( (BaseJewel)loot, Utility.RandomMinMax( 1, 5 ), 10, 80 );
}
}
public class SmallBagOfTrinkets : Bag
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class BagOfTrinkets : Bag
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class BagOfTreasure : Bag
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class LargeBagOfTreasure : Bag
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class RewardStrongbox : WoodenBox
{
[Constructable]
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( (int)0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class SadrahSatchel : Backpack
{
[Constructable]
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( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using Server;
namespace Server.Items
{
public class SapOfSosaria : Item
{
public override int LabelNumber{ get{ return 1074178; } } // Sap of Sosaria
[Constructable]
public SapOfSosaria() : this( 1 )
{
}
[Constructable]
public SapOfSosaria( int amount ) : base( 0x1848 )
{
LootType = LootType.Blessed;
Stackable = true;
Amount = amount;
}
public SapOfSosaria( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using Server;
namespace Server.Items
{
public class SealedNotesForJamal : Item
{
public override int LabelNumber{ get{ return 1074998; } } // Sealed Notes For Jamal
public override double DefaultWeight{ get{ return 1.0; } }
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public SealedNotesForJamal() : base( 0xEF9 )
{
LootType = LootType.Blessed;
}
public SealedNotesForJamal( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class SealingWaxOrderAddressedToPetrus : Item
{
public override int LabelNumber{ get{ return 1073132; } } // Sealing Wax Order addressed to Petrus
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public SealingWaxOrderAddressedToPetrus() : base( 0xEBF )
{
LootType = LootType.Blessed;
}
public SealingWaxOrderAddressedToPetrus( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using Server;
namespace Server.Items
{
[Flipable(0x312D, 0x312E)]
public class SeveredElfEars : Item
{
[Constructable]
public SeveredElfEars() : this( 1 )
{
}
[Constructable]
public SeveredElfEars( int amount ) : 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( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using Server;
namespace Server.Items
{
[Flipable(0x312F, 0x3130)]
public class SeveredHumanEars : Item
{
[Constructable]
public SeveredHumanEars() : this( 1 )
{
}
[Constructable]
public SeveredHumanEars( int amount ) : 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( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class SignedTuitionReimbursementForm : Item
{
public override int LabelNumber{ get{ return 1074614; } } // Signed Tuition Reimbursement Form
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public SignedTuitionReimbursementForm() : base( 0x14F0 )
{
LootType = LootType.Blessed;
}
public SignedTuitionReimbursementForm( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class SpecialTreatForDrithen : Item
{
public override int LabelNumber{ get{ return 1074517; } } // Special Treat for Drithen
[Constructable]
public SpecialTreatForDrithen() : base( 0x21B )
{
LootType = LootType.Blessed;
Hue = 0x489;
}
public SpecialTreatForDrithen( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
public class SpeckledPoisonSac : TransientItem
{
public override int LabelNumber{ get{ return 1073133; } } // Speckled Poison Sac
[Constructable]
public SpeckledPoisonSac() : base( 0x23A, TimeSpan.FromHours( 1 ) )
{
LootType = LootType.Blessed;
}
public SpeckledPoisonSac( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class SpiritBottle : Item
{
public override int LabelNumber{ get{ return 1075283; } } // Spirit bottle
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public SpiritBottle() : base( 0xEFB )
{
LootType = LootType.Blessed;
}
public SpiritBottle( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
public class StoutWhip : Item
{
public override int LabelNumber{ get{ return 1074812; } } // Stout Whip
[Constructable]
public StoutWhip() : base( 0x166F )
{
LootType = LootType.Blessed;
}
public StoutWhip( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

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

View file

@ -0,0 +1,223 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.MLQuests.Items
{
public class MLQuestTeleporter : Teleporter
{
private MLQuest m_RequiredQuest;
private TextDefinition m_Message;
[CommandProperty( AccessLevel.GameMaster )]
public MLQuest RequiredQuest
{
get { return m_RequiredQuest; }
// Needs work for in-game
set { m_RequiredQuest = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public TextDefinition Message
{
get { return m_Message; }
set { m_Message = value; }
}
[Constructable]
public MLQuestTeleporter()
: this( Point3D.Zero, null, null, null )
{
}
[Constructable]
public MLQuestTeleporter( Point3D pointDest, Map mapDest )
: this( pointDest, mapDest, null, null )
{
}
[Constructable]
public MLQuestTeleporter( Point3D pointDest, Map mapDest, MLQuest quest, TextDefinition message )
: base( pointDest, mapDest )
{
m_RequiredQuest = quest;
m_Message = message;
}
public override bool CanTeleport( Mobile m )
{
if ( !base.CanTeleport( m ) )
return false;
if ( m_RequiredQuest != null )
{
PlayerMobile pm = m as PlayerMobile;
if ( pm == null )
return false;
MLQuestContext context = MLQuestSystem.GetContext( pm );
if ( context == null || ( !context.IsDoingQuest( m_RequiredQuest ) && !context.HasDoneQuest( m_RequiredQuest ) ) )
{
TextDefinition.SendMessageTo( m, m_Message );
return false;
}
}
return true;
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( m_RequiredQuest != null )
list.Add( String.Format( "Required quest: {0}", m_RequiredQuest ) );
}
public MLQuestTeleporter( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
MLQuestSystem.WriteQuestRef( writer, m_RequiredQuest );
TextDefinition.Serialize( writer, m_Message );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_RequiredQuest = MLQuestSystem.ReadQuestRef( reader );
m_Message = TextDefinition.Deserialize( reader );
}
}
public interface ITicket
{
void OnTicketUsed( Mobile from );
}
public class TicketTeleporter : Teleporter
{
private Type m_TicketType;
private TextDefinition m_Message;
[CommandProperty( AccessLevel.GameMaster )]
public Type TicketType
{
get { return m_TicketType; }
set { m_TicketType = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public TextDefinition Message
{
get { return m_Message; }
set { m_Message = value; }
}
[Constructable]
public TicketTeleporter()
: this( Point3D.Zero, null, null, null )
{
}
[Constructable]
public TicketTeleporter( Point3D pointDest, Map mapDest )
: this( pointDest, mapDest, null, null )
{
}
[Constructable]
public TicketTeleporter( Point3D pointDest, Map mapDest, Type ticketType, TextDefinition message )
: base( pointDest, mapDest )
{
m_TicketType = ticketType;
m_Message = message;
}
public override bool CanTeleport( Mobile m )
{
if ( !base.CanTeleport( m ) )
return false;
if ( m_TicketType != null )
{
Item ticket = null;
Container pack = m.Backpack;
if ( pack != null )
ticket = pack.FindItemByType( m_TicketType, false ); // Check (top level) backpack
if ( ticket == null )
{
foreach ( Item item in m.Items ) // Check paperdoll
{
if ( m_TicketType.IsAssignableFrom( item.GetType() ) )
{
ticket = item;
break;
}
}
}
if ( ticket == null )
{
TextDefinition.SendMessageTo( m, m_Message );
return false;
}
if ( ticket is ITicket )
((ITicket)ticket).OnTicketUsed( m );
}
return true;
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( m_TicketType != null )
list.Add( String.Format( "Required ticket: {0}", m_TicketType.Name ) );
}
public TicketTeleporter( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 ); // version
writer.Write( m_TicketType.FullName );
TextDefinition.Serialize( writer, m_Message );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_TicketType = ScriptCompiler.FindTypeByFullName( reader.ReadString(), false );
m_Message = TextDefinition.Deserialize( reader );
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using Server;
namespace Server.Items
{
public class TransparentHeart : GoldEarrings
{
public override int LabelNumber{ get{ return 1075400; } } // Transparent Heart
[Constructable]
public TransparentHeart() : base()
{
LootType = LootType.Blessed;
Hue = 0x4AB;
}
public TransparentHeart( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using Server;
namespace Server.Items
{
public class TuitionReimbursementForm : Item
{
public override int LabelNumber{ get{ return 1074610; } } // Tuition Reimbursement Form (in triplicate)
public override bool Nontransferable { get { return true; } }
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
AddQuestItemProperty( list );
}
[Constructable]
public TuitionReimbursementForm() : base( 0xE3A )
{
LootType = LootType.Blessed;
Hue = 0x395;
}
public TuitionReimbursementForm( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using Server;
namespace Server.Items
{
public class UnicornRibs : Item
{
public override int LabelNumber{ get{ return 1074611; } } // Unicorn Ribs
[Constructable]
public UnicornRibs() : this( 1 )
{
}
[Constructable]
public UnicornRibs( int amount ) : base( 0x9F1 )
{
LootType = LootType.Blessed;
Hue = 0x14B;
Stackable = true;
Amount = amount;
}
public UnicornRibs( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}