#W# Source and Scripts added. Added Scripts/Settings.cs to expose some basic tweak able settings.

This commit is contained in:
WarrentyExpired 2026-08-06 11:06:05 -04:00
parent b51c58f514
commit 3045c83799
3512 changed files with 627673 additions and 0 deletions

View file

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Server.Items
{
public class EarringBoxSet : RedVelvetGiftBox
{
[Constructable]
public EarringBoxSet()
: base()
{
DropItem( new EarringsOfProtection( AosElementAttribute.Physical ) );
DropItem( new EarringsOfProtection( AosElementAttribute.Fire ) );
DropItem( new EarringsOfProtection( AosElementAttribute.Cold ) );
DropItem( new EarringsOfProtection( AosElementAttribute.Poison ) );
DropItem( new EarringsOfProtection( AosElementAttribute.Energy ) );
}
public EarringBoxSet( 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 EarringsOfProtection : BaseJewel
{
[CommandProperty( AccessLevel.GameMaster )]
public virtual AosElementAttribute Attribute
{
get
{
return m_Attribute;
}
}
public override int LabelNumber
{
get
{
return GetItemData( m_Attribute, true );
}
}
public override int Hue
{
get
{
return GetItemData( m_Attribute, false );
}
}
private AosElementAttribute m_Attribute;
[Constructable]
public EarringsOfProtection() : this( RandomType() )
{
}
[Constructable]
public EarringsOfProtection( AosElementAttribute element )
: base( 0x1087, Layer.Earrings )
{
Resistances[ ( (AosElementAttribute)element ) ] = 2;
m_Attribute = element;
LootType = LootType.Blessed;
}
public EarringsOfProtection( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 ); // version
writer.Write( (int)m_Attribute );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Attribute = (AosElementAttribute)reader.ReadInt();
}
public static AosElementAttribute RandomType()
{
return GetTypes( Utility.Random( 5 ) );
}
public static AosElementAttribute GetTypes( int value )
{
switch( value )
{
case 0: return AosElementAttribute.Physical;
case 1: return AosElementAttribute.Fire;
case 2: return AosElementAttribute.Cold;
case 3: return AosElementAttribute.Poison;
default: return AosElementAttribute.Energy;
}
}
public static int GetItemData( AosElementAttribute element, bool label )
{
switch( element )
{
case AosElementAttribute.Physical: return ( label ) ? 1071091 : 0; // Earring of Protection (Physical) 1071091
case AosElementAttribute.Fire: return ( label ) ? 1071092 : 0x4ec; // Earring of Protection (Fire) 1071092
case AosElementAttribute.Cold: return ( label ) ? 1071093 : 0x4f2; // Earring of Protection (Cold) 1071093
case AosElementAttribute.Poison: return ( label ) ? 1071094 : 0x4f8; // Earring of Protection (Poison) 1071094
case AosElementAttribute.Energy: return ( label ) ? 1071095 : 0x4fe; // Earring of Protection (Energy) 1071095
default: return -1;
}
}
}
}

View file

@ -0,0 +1,315 @@
using System;
using System.Collections.Generic;
using Server.ContextMenus;
using Server.Gumps;
using Server.Multis;
using Server.Network;
namespace Server.Items
{
public sealed class StopMusic : Packet
{
public static readonly Packet Instance = Packet.SetStatic( new StopMusic() );
public StopMusic() : base( 0x6D, 3 )
{
m_Stream.Write( (short) 0x1FFF );
}
}
[Flipable( 0x2AF9, 0x2AFD )]
public class DawnsMusicBox : Item, ISecurable
{
public override int LabelNumber { get { return 1075198; } } // Dawns Music Box
private List<MusicName> m_Tracks;
public List<MusicName> Tracks
{
get { return m_Tracks; }
}
private SecureLevel m_Level;
[CommandProperty( AccessLevel.GameMaster )]
public SecureLevel Level
{
get { return m_Level; }
set { m_Level = value; }
}
[Constructable]
public DawnsMusicBox() : base( 0x2AF9 )
{
Weight = 1.0;
m_Tracks = new List<MusicName>();
while ( m_Tracks.Count < 4 )
{
MusicName name = RandomTrack( DawnsMusicRarity.Common );
if ( !m_Tracks.Contains( name ) )
m_Tracks.Add( name );
}
}
public DawnsMusicBox( Serial serial ) : base( serial )
{
}
public override void OnAfterDuped( Item newItem )
{
DawnsMusicBox box = newItem as DawnsMusicBox;
if ( box == null )
return;
box.m_Tracks = new List<MusicName>();
box.m_Tracks.AddRange( m_Tracks );
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
int commonSongs = 0;
int uncommonSongs = 0;
int rareSongs = 0;
for ( int i = 0; i < m_Tracks.Count; i++ )
{
DawnsMusicInfo info = GetInfo( m_Tracks[ i ] );
switch ( info.Rarity )
{
case DawnsMusicRarity.Common: commonSongs++; break;
case DawnsMusicRarity.Uncommon: uncommonSongs++; break;
case DawnsMusicRarity.Rare: rareSongs++; break;
}
}
if ( commonSongs > 0 )
list.Add( 1075234, commonSongs.ToString() ); // ~1_NUMBER~ Common Tracks
if ( uncommonSongs > 0 )
list.Add( 1075235, uncommonSongs.ToString() ); // ~1_NUMBER~ Uncommon Tracks
if ( rareSongs > 0 )
list.Add( 1075236, rareSongs.ToString() ); // ~1_NUMBER~ Rare Tracks
}
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
{
base.GetContextMenuEntries( from, list );
SetSecureLevelEntry.AddTo( from, this, list ); // Set secure level
}
public override void OnDoubleClick( Mobile from )
{
if ( !IsChildOf( from.Backpack ) && !IsLockedDown )
from.SendLocalizedMessage( 1061856 ); // You must have the item in your backpack or locked down in order to use it.
else if ( IsLockedDown && !HasAccces( from ) )
from.SendLocalizedMessage( 502436 ); // That is not accessible.
else
{
from.CloseGump( typeof( DawnsMusicBoxGump ) );
from.SendGump( new DawnsMusicBoxGump( this ) );
}
}
public bool HasAccces( Mobile m )
{
if ( m.AccessLevel >= AccessLevel.GameMaster )
return true;
BaseHouse house = BaseHouse.FindHouseAt( this );
return ( house != null && house.HasAccess( m ) );
}
private Timer m_Timer;
private int m_ItemID = 0;
private int m_Count = 0;
public void PlayMusic( Mobile m, MusicName music )
{
if ( m_Timer != null && m_Timer.Running )
EndMusic( m );
else
m_ItemID = ItemID;
m.Send( new PlayMusic( music ) );
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 0.5 ), TimeSpan.FromSeconds( 0.5 ), 4, new TimerCallback( Animate ) );
}
public void EndMusic( Mobile m )
{
if ( m_Timer != null && m_Timer.Running )
m_Timer.Stop();
m.Send( StopMusic.Instance );
if ( m_Count > 0 )
ItemID = m_ItemID;
m_Count = 0;
}
private void Animate()
{
m_Count++;
if ( m_Count >= 4 )
{
m_Count = 0;
ItemID = m_ItemID;
}
else
ItemID++;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
writer.Write( (int) m_Tracks.Count );
for ( int i = 0; i < m_Tracks.Count; i++ )
writer.Write( (int) m_Tracks[ i ] );
writer.Write( (int) m_Level );
writer.Write( (int) m_ItemID );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
int count = reader.ReadInt();
m_Tracks = new List<MusicName>();
for ( int i = 0; i < count; i++ )
m_Tracks.Add( (MusicName) reader.ReadInt() );
m_Level = (SecureLevel) reader.ReadInt();
m_ItemID = reader.ReadInt();
}
private static Dictionary<MusicName, DawnsMusicInfo> m_Info = new Dictionary<MusicName, DawnsMusicInfo>();
public static void Initialize()
{
m_Info.Add( MusicName.Samlethe, new DawnsMusicInfo( 1075152, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Sailing, new DawnsMusicInfo( 1075163, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Britain2, new DawnsMusicInfo( 1075145, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Britain1, new DawnsMusicInfo( 1075144, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Bucsden, new DawnsMusicInfo( 1075146, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Forest_a, new DawnsMusicInfo( 1075161, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Cove, new DawnsMusicInfo( 1075176, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Death, new DawnsMusicInfo( 1075171, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Dungeon9, new DawnsMusicInfo( 1075160, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Dungeon2, new DawnsMusicInfo( 1075175, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Cave01, new DawnsMusicInfo( 1075159, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Combat3, new DawnsMusicInfo( 1075170, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Combat1, new DawnsMusicInfo( 1075168, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Combat2, new DawnsMusicInfo( 1075169, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Jhelom, new DawnsMusicInfo( 1075147, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Linelle, new DawnsMusicInfo( 1075185, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.LBCastle, new DawnsMusicInfo( 1075148, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Minoc, new DawnsMusicInfo( 1075150, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Moonglow, new DawnsMusicInfo( 1075177, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Magincia, new DawnsMusicInfo( 1075149, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Nujelm, new DawnsMusicInfo( 1075174, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.BTCastle, new DawnsMusicInfo( 1075173, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Tavern04, new DawnsMusicInfo( 1075167, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Skarabra, new DawnsMusicInfo( 1075154, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Stones2, new DawnsMusicInfo( 1075143, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Serpents, new DawnsMusicInfo( 1075153, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Taiko, new DawnsMusicInfo( 1075180, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Tavern01, new DawnsMusicInfo( 1075164, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Tavern02, new DawnsMusicInfo( 1075165, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Tavern03, new DawnsMusicInfo( 1075166, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.TokunoDungeon, new DawnsMusicInfo( 1075179, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Trinsic, new DawnsMusicInfo( 1075155, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.OldUlt01, new DawnsMusicInfo( 1075142, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Ocllo, new DawnsMusicInfo( 1075151, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Vesper, new DawnsMusicInfo( 1075156, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Victory, new DawnsMusicInfo( 1075172, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Mountn_a, new DawnsMusicInfo( 1075162, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Wind, new DawnsMusicInfo( 1075157, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Yew, new DawnsMusicInfo( 1075158, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.Zento, new DawnsMusicInfo( 1075178, DawnsMusicRarity.Common ) );
m_Info.Add( MusicName.GwennoConversation, new DawnsMusicInfo( 1075131, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.DreadHornArea, new DawnsMusicInfo( 1075181, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.ElfCity, new DawnsMusicInfo( 1075182, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.GoodEndGame, new DawnsMusicInfo( 1075132, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.GoodVsEvil, new DawnsMusicInfo( 1075133, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.GreatEarthSerpents, new DawnsMusicInfo( 1075134, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.GrizzleDungeon, new DawnsMusicInfo( 1075186, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.Humanoids_U9, new DawnsMusicInfo( 1075135, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.MelisandesLair, new DawnsMusicInfo( 1075183, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.MinocNegative, new DawnsMusicInfo( 1075136, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.ParoxysmusLair, new DawnsMusicInfo( 1075184, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.Paws, new DawnsMusicInfo( 1075137, DawnsMusicRarity.Uncommon ) );
m_Info.Add( MusicName.SelimsBar, new DawnsMusicInfo( 1075138, DawnsMusicRarity.Rare ) );
m_Info.Add( MusicName.SerpentIsleCombat_U7, new DawnsMusicInfo( 1075139, DawnsMusicRarity.Rare ) );
m_Info.Add( MusicName.ValoriaShips, new DawnsMusicInfo( 1075140, DawnsMusicRarity.Rare ) );
}
public static MusicName[] m_CommonTracks = new MusicName[]
{
MusicName.Samlethe, MusicName.Sailing, MusicName.Britain2, MusicName.Britain1,
MusicName.Bucsden, MusicName.Forest_a, MusicName.Cove, MusicName.Death,
MusicName.Dungeon9, MusicName.Dungeon2, MusicName.Cave01, MusicName.Combat3,
MusicName.Combat1, MusicName.Combat2, MusicName.Jhelom, MusicName.Linelle,
MusicName.LBCastle, MusicName.Minoc, MusicName.Moonglow, MusicName.Magincia,
MusicName.Nujelm, MusicName.BTCastle, MusicName.Tavern04, MusicName.Skarabra,
MusicName.Stones2, MusicName.Serpents, MusicName.Taiko, MusicName.Tavern01,
MusicName.Tavern02, MusicName.Tavern03, MusicName.TokunoDungeon, MusicName.Trinsic,
MusicName.OldUlt01, MusicName.Ocllo, MusicName.Vesper, MusicName.Victory,
MusicName.Mountn_a, MusicName.Wind, MusicName.Yew, MusicName.Zento
};
public static MusicName[] m_UncommonTracks = new MusicName[]
{
MusicName.GwennoConversation, MusicName.DreadHornArea, MusicName.ElfCity,
MusicName.GoodEndGame, MusicName.GoodVsEvil, MusicName.GreatEarthSerpents,
MusicName.GrizzleDungeon, MusicName.Humanoids_U9, MusicName.MelisandesLair,
MusicName.MinocNegative, MusicName.ParoxysmusLair, MusicName.Paws
};
public static MusicName[] m_RareTracks = new MusicName[]
{
MusicName.SelimsBar, MusicName.SerpentIsleCombat_U7, MusicName.ValoriaShips
};
public static DawnsMusicInfo GetInfo( MusicName name )
{
if ( m_Info.ContainsKey( name ) )
return m_Info[ name ];
return null;
}
public static MusicName RandomTrack( DawnsMusicRarity rarity )
{
MusicName[] list = null;
switch ( rarity )
{
default:
case DawnsMusicRarity.Common: list = m_CommonTracks; break;
case DawnsMusicRarity.Uncommon: list = m_UncommonTracks; break;
case DawnsMusicRarity.Rare: list = m_RareTracks; break;
}
return list[ Utility.Random( list.Length ) ];
}
}
}

View file

@ -0,0 +1,149 @@
using System;
using Server.Targeting;
namespace Server.Items
{
[Flipable( 0x1053, 0x1054 )]
public class DawnsMusicGear : Item
{
public static DawnsMusicGear RandomCommon
{
get { return new DawnsMusicGear( DawnsMusicBox.RandomTrack( DawnsMusicRarity.Common ) ); }
}
public static DawnsMusicGear RandomUncommon
{
get { return new DawnsMusicGear( DawnsMusicBox.RandomTrack( DawnsMusicRarity.Uncommon ) ); }
}
public static DawnsMusicGear RandomRare
{
get { return new DawnsMusicGear( DawnsMusicBox.RandomTrack( DawnsMusicRarity.Rare ) ); }
}
private MusicName m_Music;
[CommandProperty( AccessLevel.GameMaster )]
public MusicName Music
{
get { return m_Music; }
set { m_Music = value; }
}
[Constructable]
public DawnsMusicGear() : this( DawnsMusicBox.RandomTrack( DawnsMusicRarity.Common ) )
{
}
[Constructable]
public DawnsMusicGear( MusicName music ) : base( 0x1053 )
{
m_Music = music;
Weight = 1.0;
}
public DawnsMusicGear( Serial serial ) : base( serial )
{
}
public override void AddNameProperty( ObjectPropertyList list )
{
DawnsMusicInfo info = DawnsMusicBox.GetInfo( m_Music );
if ( info != null )
{
if ( info.Rarity == DawnsMusicRarity.Common )
list.Add( 1075204 ); // Gear for Dawn's Music Box (Common)
else if ( info.Rarity == DawnsMusicRarity.Uncommon )
list.Add( 1075205 ); // Gear for Dawn's Music Box (Uncommon)
else if ( info.Rarity == DawnsMusicRarity.Rare )
list.Add( 1075206 ); // Gear for Dawn's Music Box (Rare)
list.Add( info.Name );
}
else
base.AddNameProperty( list );
}
public override void OnDoubleClick( Mobile from )
{
from.Target = new InternalTarget( this );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 1 ); // version
writer.Write( (int) m_Music );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
switch ( version )
{
case 1:
{
m_Music = (MusicName) reader.ReadInt();
break;
}
}
if ( version == 0 ) // Music wasn't serialized in version 0, pick a new track of random rarity
{
DawnsMusicRarity rarity;
double rand = Utility.RandomDouble();
if ( rand < 0.025 )
rarity = DawnsMusicRarity.Rare;
else if ( rand < 0.225 )
rarity = DawnsMusicRarity.Uncommon;
else
rarity = DawnsMusicRarity.Common;
m_Music = DawnsMusicBox.RandomTrack( rarity );
}
}
public class InternalTarget : Target
{
private DawnsMusicGear m_Gear;
public InternalTarget( DawnsMusicGear gear ) : base( 2, false, TargetFlags.None )
{
m_Gear = gear;
}
protected override void OnTarget( Mobile from, object targeted )
{
if ( m_Gear == null || m_Gear.Deleted )
return;
DawnsMusicBox box = targeted as DawnsMusicBox;
if ( box != null )
{
if ( !box.Tracks.Contains( m_Gear.Music ) )
{
box.Tracks.Add( m_Gear.Music );
box.InvalidateProperties();
m_Gear.Delete();
from.SendLocalizedMessage( 1071961 ); // This song has been added to the musicbox.
}
else
from.SendLocalizedMessage( 1071962 ); // This song track is already in the musicbox.
}
else
from.SendLocalizedMessage( 1071964 ); // Gears can only be put into a musicbox.
}
}
}
}

View file

@ -0,0 +1,34 @@
using System;
namespace Server.Items
{
public enum DawnsMusicRarity
{
Common,
Uncommon,
Rare,
}
public class DawnsMusicInfo
{
private int m_Name;
public int Name
{
get { return m_Name; }
}
private DawnsMusicRarity m_Rarity;
public DawnsMusicRarity Rarity
{
get { return m_Rarity; }
}
public DawnsMusicInfo( int name, DawnsMusicRarity rarity )
{
m_Name = name;
m_Rarity = rarity;
}
}
}

View file

@ -0,0 +1,53 @@
using System;
using Server;
namespace Server.Items
{
public class DupresShield : BaseShield, ITokunoDyable
{
public override int LabelNumber { get { return 1075196; } } // Dupres Shield
public override int BasePhysicalResistance { get { return 1; } }
public override int BaseFireResistance { get { return 0; } }
public override int BaseColdResistance { get { return 0; } }
public override int BasePoisonResistance { get { return 0; } }
public override int BaseEnergyResistance { get { return 1; } }
public override int InitMinHits { get { return 255; } }
public override int InitMaxHits { get { return 255; } }
public override int AosStrReq { get { return 50; } }
public override int ArmorBase { get { return 15; } }
[Constructable]
public DupresShield() : base( 0x2B01 )
{
LootType = LootType.Blessed;
Weight = 6.0;
Attributes.BonusHits = 5;
Attributes.RegenHits = 1;
SkillBonuses.SetValues( 0, SkillName.Parry, 5 );
}
public DupresShield( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,280 @@
using System;
using System.Collections.Generic;
using Server.Gumps;
using Server.Multis;
namespace Server.Items
{
public class EnhancedBandage : Bandage
{
public static int HealingBonus { get { return 10; } }
public override int LabelNumber { get { return 1152441; } } // enhanced bandage
[Constructable]
public EnhancedBandage()
: this( 1 )
{
}
[Constructable]
public EnhancedBandage( int amount )
: base( amount )
{
Hue = 0x8A5;
}
public EnhancedBandage( Serial serial )
: base( serial )
{
}
public override bool Dye( Mobile from, DyeTub sender )
{
return false;
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
list.Add( 1075216 ); // these bandages have been enhanced
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
[FlipableAttribute( 0x2AC0, 0x2AC3 )]
public class FountainOfLife : BaseAddonContainer
{
public override BaseAddonContainerDeed Deed
{
get { return new FountainOfLifeDeed( m_Charges ); }
}
public override bool OnDragLift( Mobile from )
{
return false;
}
public virtual TimeSpan RechargeTime { get { return TimeSpan.FromDays( 1 ); } }
public override int LabelNumber { get { return 1075197; } } // Fountain of Life
public override int DefaultGumpID { get { return 0x484; } }
public override int DefaultDropSound { get { return 66; } }
public override int DefaultMaxItems { get { return 125; } }
private int m_Charges;
[CommandProperty( AccessLevel.GameMaster )]
public int Charges
{
get { return m_Charges; }
set { m_Charges = Math.Min( value, 10 ); InvalidateProperties(); }
}
private Timer m_Timer;
[Constructable]
public FountainOfLife()
: this( 10 )
{
}
[Constructable]
public FountainOfLife( int charges )
: base( 0x2AC0 )
{
m_Charges = charges;
m_Timer = Timer.DelayCall( RechargeTime, RechargeTime, new TimerCallback( Recharge ) );
}
public FountainOfLife( Serial serial )
: base( serial )
{
}
public override bool OnDragDrop( Mobile from, Item dropped )
{
if( dropped is Bandage )
{
bool allow = base.OnDragDrop( from, dropped );
if( allow )
Enhance( from );
return allow;
}
else
{
from.SendLocalizedMessage( 1075209 ); // Only bandages may be dropped into the fountain.
return false;
}
}
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
{
if( item is Bandage )
{
bool allow = base.OnDragDropInto( from, item, p );
if( allow )
Enhance( from );
return allow;
}
else
{
from.SendLocalizedMessage( 1075209 ); // Only bandages may be dropped into the fountain.
return false;
}
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
list.Add( 1075217, m_Charges.ToString() ); // ~1_val~ charges remaining
}
public override void OnDelete()
{
if( m_Timer != null )
m_Timer.Stop();
base.OnDelete();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
writer.Write( m_Charges );
writer.Write( (DateTime)m_Timer.Next );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Charges = reader.ReadInt();
DateTime next = reader.ReadDateTime();
if( next < DateTime.UtcNow )
m_Timer = Timer.DelayCall( TimeSpan.Zero, RechargeTime, new TimerCallback( Recharge ) );
else
m_Timer = Timer.DelayCall( next - DateTime.UtcNow, RechargeTime, new TimerCallback( Recharge ) );
}
public void Recharge()
{
m_Charges = 10;
Enhance( null );
}
public void Enhance( Mobile from )
{
for( int i = Items.Count - 1; i >= 0 && m_Charges > 0; --i )
{
if ( Items[i] is EnhancedBandage )
continue;
Bandage bandage = Items[i] as Bandage;
if( bandage != null )
{
Item enhanced;
if( bandage.Amount > m_Charges )
{
bandage.Amount -= m_Charges;
enhanced = new EnhancedBandage( m_Charges );
m_Charges = 0;
}
else
{
enhanced = new EnhancedBandage( bandage.Amount );
m_Charges -= bandage.Amount;
bandage.Delete();
}
if ( from == null || !TryDropItem( from, enhanced, false ) ) // try stacking first
DropItem( enhanced );
}
}
InvalidateProperties();
}
}
public class FountainOfLifeDeed : BaseAddonContainerDeed
{
public override int LabelNumber { get { return 1075197; } } // Fountain of Life
public override BaseAddonContainer Addon { get { return new FountainOfLife( m_Charges ); } }
private int m_Charges;
[CommandProperty( AccessLevel.GameMaster )]
public int Charges
{
get { return m_Charges; }
set { m_Charges = Math.Min( value, 10 ); InvalidateProperties(); }
}
[Constructable]
public FountainOfLifeDeed()
: this( 10 )
{
}
[Constructable]
public FountainOfLifeDeed( int charges )
: base()
{
LootType = LootType.Blessed;
m_Charges = charges;
}
public FountainOfLifeDeed( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
writer.Write( m_Charges );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Charges = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,41 @@
using System;
namespace Server.Items
{
public class OssianGrimoire : NecromancerSpellbook, ITokunoDyable
{
public override int LabelNumber { get { return 1078148; } } // Ossian Grimoire
[Constructable]
public OssianGrimoire()
{
LootType = LootType.Blessed;
SkillBonuses.SetValues( 0, SkillName.Necromancy, 10.0 );
Attributes.RegenMana = 1;
Attributes.CastSpeed = 1;
Attributes.IncreasedKarmaLoss = 5;
}
public OssianGrimoire( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 1 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
if ( version == 0 )
Attributes.IncreasedKarmaLoss = 5;
}
}
}

View file

@ -0,0 +1,45 @@
using System;
namespace Server.Items
{
public class QuiverOfInfinity : BaseQuiver, ITokunoDyable
{
public override int LabelNumber { get { return 1075201; } } // Quiver of Infinity
[Constructable]
public QuiverOfInfinity() : base( 0x2B02 )
{
LootType = LootType.Blessed;
Weight = 8.0;
WeightReduction = 30;
LowerAmmoCost = 20;
Attributes.DefendChance = 5;
}
public QuiverOfInfinity( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 2 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
if ( version < 1 && DamageIncrease == 0 )
DamageIncrease = 10;
if ( version < 2 && Attributes.WeaponDamage == 10 )
Attributes.WeaponDamage = 0;
}
}
}

View file

@ -0,0 +1,187 @@
using System;
using Server.Mobiles;
using Server.Spells.Ninjitsu;
namespace Server.Items
{
public enum TalismanForm
{
Ferret = 1031672,
Squirrel = 1031671,
CuSidhe = 1031670,
Reptalon = 1075202
}
public class BaseFormTalisman : Item, ITokunoDyable
{
public virtual TalismanForm Form { get { return TalismanForm.Squirrel; } }
public BaseFormTalisman() : base( 0x2F59 )
{
LootType = LootType.Blessed;
Layer = Layer.Talisman;
Weight = 1.0;
}
public BaseFormTalisman( Serial serial ) : base( serial )
{
}
public override void AddNameProperty( ObjectPropertyList list )
{
list.Add( 1075200, String.Format( "#{0}", (int) Form ) );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
public override void OnRemoved(IEntity parent)
{
base.OnRemoved( parent );
if ( parent is Mobile )
{
Mobile m = (Mobile) parent;
AnimalForm.RemoveContext( m, true );
}
}
public static bool EntryEnabled( Mobile m, Type type )
{
if ( type == typeof( Squirrel ) )
return m.Talisman is SquirrelFormTalisman;
else if ( type == typeof( Ferret ) )
return m.Talisman is FerretFormTalisman;
else if ( type == typeof( CuSidhe ) )
return m.Talisman is CuSidheFormTalisman;
else if ( type == typeof( Reptalon ) )
return m.Talisman is ReptalonFormTalisman;
return true;
}
}
public class FerretFormTalisman : BaseFormTalisman
{
public override TalismanForm Form { get { return TalismanForm.Ferret; } }
[Constructable]
public FerretFormTalisman() : base()
{
}
public FerretFormTalisman( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SquirrelFormTalisman : BaseFormTalisman
{
public override TalismanForm Form { get { return TalismanForm.Squirrel; } }
[Constructable]
public SquirrelFormTalisman () : base()
{
}
public SquirrelFormTalisman ( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class CuSidheFormTalisman : BaseFormTalisman
{
public override TalismanForm Form { get { return TalismanForm.CuSidhe; } }
[Constructable]
public CuSidheFormTalisman() : base()
{
}
public CuSidheFormTalisman( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ReptalonFormTalisman : BaseFormTalisman
{
public override TalismanForm Form { get { return TalismanForm.Reptalon; } }
[Constructable]
public ReptalonFormTalisman() : base()
{
}
public ReptalonFormTalisman( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); //version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
[Flipable( 0x2684, 0x2683 )]
public class HoodedShroudOfShadows : BaseOuterTorso
{
[Constructable]
public HoodedShroudOfShadows() : this( 0x455 )
{
}
[Constructable]
public HoodedShroudOfShadows( int hue ) : base( 0x2684, hue )
{
LootType = LootType.Blessed;
Weight = 3.0;
}
public override bool Dye( Mobile from, DyeTub sender )
{
from.SendLocalizedMessage( sender.FailMessage );
return false;
}
public HoodedShroudOfShadows( 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,37 @@
using System;
using Server.Mobiles;
namespace Server.Items
{
public class LuckyNecklace : BaseJewel
{
public override int Hue{ get { return 1150; } }
public override int LabelNumber{ get { return 1075239; } } //Lucky Necklace 1075239
[Constructable]
public LuckyNecklace( )
: base( 0x1088, Layer.Neck )
{
base.Attributes.Luck = 200;
LootType = LootType.Blessed;
}
public LuckyNecklace( 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 );
reader.ReadInt(); /* int version = reader.ReadInt(); Why? Just to have an unused var? */
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0xC12, 0xC13 )]
public class BrokenArmoireComponent : AddonComponent
{
public override int LabelNumber { get { return 1076262; } } // Broken Armoire
public BrokenArmoireComponent() : base( 0xC12 )
{
}
public BrokenArmoireComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenArmoireAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenArmoireDeed(); } }
[Constructable]
public BrokenArmoireAddon() : base()
{
AddComponent( new BrokenArmoireComponent(), 0, 0, 0 );
}
public BrokenArmoireAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenArmoireDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenArmoireAddon(); } }
public override int LabelNumber { get { return 1076262; } } // Broken Armoire
[Constructable]
public BrokenArmoireDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenArmoireDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,134 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class BrokenBedAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenBedDeed(); } }
[Constructable]
public BrokenBedAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new LocalizedAddonComponent( 0x1895, 1076263 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x1894, 1076263 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0x1897, 1076263 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x1896, 1076263 ), 1, 1, 0 );
}
else // south
{
AddComponent( new LocalizedAddonComponent( 0x1899, 1076263 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x1898, 1076263 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x189B, 1076263 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0x189A, 1076263 ), 1, 1, 0 );
}
}
public BrokenBedAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenBedDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenBedAddon( m_East ); } }
public override int LabelNumber { get { return 1076263; } } // Broken Bed
private bool m_East;
[Constructable]
public BrokenBedDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenBedDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private BrokenBedDeed m_Deed;
public InternalGump( BrokenBedDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076749, 0x7FFF, false, false ); // Please select your broken bed position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0xC14, 0xC15 )]
public class BrokenBookcaseComponent : AddonComponent
{
public override int LabelNumber { get { return 1076258; } } // Broken Bookcase
public BrokenBookcaseComponent() : base( 0xC14 )
{
}
public BrokenBookcaseComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenBookcaseAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenBookcaseDeed(); } }
[Constructable]
public BrokenBookcaseAddon() : base()
{
AddComponent( new BrokenBookcaseComponent(), 0, 0, 0 );
}
public BrokenBookcaseAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenBookcaseDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenBookcaseAddon(); } }
public override int LabelNumber { get { return 1076258; } } // Broken Bookcase
[Constructable]
public BrokenBookcaseDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenBookcaseDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0xC24, 0xC25 )]
public class BrokenChestOfDrawersComponent : AddonComponent
{
public override int LabelNumber { get { return 1076261; } } // Broken Chest of Drawers
public BrokenChestOfDrawersComponent() : base( 0xC24 )
{
}
public BrokenChestOfDrawersComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenChestOfDrawersAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenChestOfDrawersDeed(); } }
[Constructable]
public BrokenChestOfDrawersAddon() : base()
{
AddComponent( new BrokenChestOfDrawersComponent(), 0, 0, 0 );
}
public BrokenChestOfDrawersAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenChestOfDrawersDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenChestOfDrawersAddon(); } }
public override int LabelNumber { get { return 1076261; } } // Broken Chest of Drawers
[Constructable]
public BrokenChestOfDrawersDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenChestOfDrawersDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0xC17, 0xC18 )]
public class BrokenCoveredChairComponent : AddonComponent
{
public override int LabelNumber { get { return 1076257; } } // Broken Covered Chair
public BrokenCoveredChairComponent() : base( 0xC17 )
{
}
public BrokenCoveredChairComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenCoveredChairAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenCoveredChairDeed(); } }
[Constructable]
public BrokenCoveredChairAddon() : base()
{
AddComponent( new BrokenCoveredChairComponent(), 0, 0, 0 );
}
public BrokenCoveredChairAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenCoveredChairDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenCoveredChairAddon(); } }
public override int LabelNumber { get { return 1076257; } } // Broken Covered Chair
[Constructable]
public BrokenCoveredChairDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenCoveredChairDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,94 @@
using System;
namespace Server.Items
{
[Flipable( 0xC19, 0xC1A )]
public class BrokenFallenChairComponent : AddonComponent
{
public override int LabelNumber { get { return 1076264; } } // Broken Fallen Chair
public BrokenFallenChairComponent() : base( 0xC19 )
{
}
public BrokenFallenChairComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
if (version < 1 && ItemID == 0xC17)
ItemID = 0xC19;
}
}
public class BrokenFallenChairAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenFallenChairDeed(); } }
[Constructable]
public BrokenFallenChairAddon() : base()
{
AddComponent( new BrokenFallenChairComponent(), 0, 0, 0 );
}
public BrokenFallenChairAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenFallenChairDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenFallenChairAddon(); } }
public override int LabelNumber { get { return 1076264; } } // Broken Fallen Chair
[Constructable]
public BrokenFallenChairDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenFallenChairDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,130 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class BrokenVanityAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BrokenVanityDeed(); } }
[Constructable]
public BrokenVanityAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new LocalizedAddonComponent( 0xC20, 1076260 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xC21, 1076260 ), 0, -1, 0 );
}
else // south
{
AddComponent( new LocalizedAddonComponent( 0xC22, 1076260 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xC23, 1076260 ), -1, 0, 0 );
}
}
public BrokenVanityAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BrokenVanityDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BrokenVanityAddon( m_East ); } }
public override int LabelNumber { get { return 1076260; } } // Broken Vanity
private bool m_East;
[Constructable]
public BrokenVanityDeed() : base()
{
LootType = LootType.Blessed;
}
public BrokenVanityDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private BrokenVanityDeed m_Deed;
public InternalGump( BrokenVanityDeed deed ) : base( 60, 63 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076747, 0x7FFF, false, false ); // Please select your broken vanity position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0xC1B, 0xC1C, 0xC1E, 0xC1D )]
public class StandingBrokenChairComponent : AddonComponent
{
public override int LabelNumber { get { return 1076259; } } // Standing Broken Chair
public StandingBrokenChairComponent() : base( 0xC1B )
{
}
public StandingBrokenChairComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class StandingBrokenChairAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new StandingBrokenChairDeed(); } }
[Constructable]
public StandingBrokenChairAddon() : base()
{
AddComponent( new StandingBrokenChairComponent(), 0, 0, 0 );
}
public StandingBrokenChairAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class StandingBrokenChairDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new StandingBrokenChairAddon(); } }
public override int LabelNumber { get { return 1076259; } } // Standing Broken Chair
[Constructable]
public StandingBrokenChairDeed() : base()
{
LootType = LootType.Blessed;
}
public StandingBrokenChairDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,134 @@
using System;
using Server;
using Server.Engines.Craft;
namespace Server.Items
{
[FlipableAttribute( 0x13E4, 0x13E3 )]
public class AncientSmithyHammer : BaseTool
{
private int m_Bonus;
private SkillMod m_SkillMod;
[CommandProperty( AccessLevel.GameMaster )]
public int Bonus
{
get
{
return m_Bonus;
}
set
{
m_Bonus = value;
InvalidateProperties();
if ( m_Bonus == 0 )
{
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = null;
}
else if ( m_SkillMod == null && Parent is Mobile )
{
m_SkillMod = new DefaultSkillMod( SkillName.Blacksmith, true, m_Bonus );
((Mobile)Parent).AddSkillMod( m_SkillMod );
}
else if ( m_SkillMod != null )
{
m_SkillMod.Value = m_Bonus;
}
}
}
public override void OnAdded(IEntity parent)
{
base.OnAdded( parent );
if ( m_Bonus != 0 && parent is Mobile )
{
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = new DefaultSkillMod( SkillName.Blacksmith, true, m_Bonus );
((Mobile)parent).AddSkillMod( m_SkillMod );
}
}
public override void OnRemoved(IEntity parent)
{
base.OnRemoved( parent );
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = null;
}
public override CraftSystem CraftSystem{ get{ return DefBlacksmithy.CraftSystem; } }
public override int LabelNumber{ get{ return 1045127; } } // ancient smithy hammer
[Constructable]
public AncientSmithyHammer( int bonus ) : this( bonus, 600 )
{
}
[Constructable]
public AncientSmithyHammer( int bonus, int uses ) : base( uses, 0x13E4 )
{
m_Bonus = bonus;
Weight = 8.0;
Layer = Layer.OneHanded;
Hue = 0x482;
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( m_Bonus != 0 )
list.Add( 1060451, "#1042354\t{0}", m_Bonus.ToString() ); // ~1_skillname~ +~2_val~
}
public AncientSmithyHammer( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) m_Bonus );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Bonus = reader.ReadInt();
break;
}
}
if ( m_Bonus != 0 && Parent is Mobile )
{
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = new DefaultSkillMod( SkillName.Blacksmith, true, m_Bonus );
((Mobile)Parent).AddSkillMod( m_SkillMod );
}
if ( Hue == 0 )
Hue = 0x482;
}
}
}

View file

@ -0,0 +1,38 @@
using System;
using Server;
using Server.Engines.Craft;
namespace Server.Items
{
[Anvil, Flipable( 0xFAF, 0xFB0 )]
public class ColoredAnvil : Item
{
[Constructable]
public ColoredAnvil() : this( CraftResources.GetHue( (CraftResource)Utility.RandomMinMax( (int)CraftResource.DullCopper, (int)CraftResource.Valorite ) ) )
{
}
[Constructable]
public ColoredAnvil( int hue ) : base( 0xFAF )
{
Hue = hue;
Weight = 20;
}
public ColoredAnvil( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,256 @@
using System;
namespace Server.Items
{
[FlipableAttribute( 0x13c6, 0x13ce )]
public class LeatherGlovesOfMining : BaseGlovesOfMining
{
public override int BasePhysicalResistance{ get{ return 2; } }
public override int BaseFireResistance{ get{ return 4; } }
public override int BaseColdResistance{ get{ return 3; } }
public override int BasePoisonResistance{ get{ return 3; } }
public override int BaseEnergyResistance{ get{ return 3; } }
public override int InitMinHits{ get{ return 30; } }
public override int InitMaxHits{ get{ return 40; } }
public override int AosStrReq{ get{ return 20; } }
public override int OldStrReq{ get{ return 10; } }
public override int ArmorBase{ get{ return 13; } }
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Leather; } }
public override CraftResource DefaultResource{ get{ return CraftResource.RegularLeather; } }
public override ArmorMeditationAllowance DefMedAllowance{ get{ return ArmorMeditationAllowance.All; } }
public override int LabelNumber{ get{ return 1045122; } } // leather blacksmith gloves of mining
[Constructable]
public LeatherGlovesOfMining( int bonus ) : base( bonus, 0x13C6 )
{
Weight = 1;
}
public LeatherGlovesOfMining( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
[FlipableAttribute( 0x13d5, 0x13dd )]
public class StuddedGlovesOfMining : BaseGlovesOfMining
{
public override int BasePhysicalResistance{ get{ return 2; } }
public override int BaseFireResistance{ get{ return 4; } }
public override int BaseColdResistance{ get{ return 3; } }
public override int BasePoisonResistance{ get{ return 3; } }
public override int BaseEnergyResistance{ get{ return 4; } }
public override int InitMinHits{ get{ return 35; } }
public override int InitMaxHits{ get{ return 45; } }
public override int AosStrReq{ get{ return 25; } }
public override int OldStrReq{ get{ return 25; } }
public override int ArmorBase{ get{ return 16; } }
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Studded; } }
public override CraftResource DefaultResource{ get{ return CraftResource.RegularLeather; } }
public override int LabelNumber{ get{ return 1045123; } } // studded leather blacksmith gloves of mining
[Constructable]
public StuddedGlovesOfMining( int bonus ) : base( bonus, 0x13D5 )
{
Weight = 2;
}
public StuddedGlovesOfMining( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
[FlipableAttribute( 0x13eb, 0x13f2 )]
public class RingmailGlovesOfMining : BaseGlovesOfMining
{
public override int BasePhysicalResistance{ get{ return 3; } }
public override int BaseFireResistance{ get{ return 3; } }
public override int BaseColdResistance{ get{ return 1; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 3; } }
public override int InitMinHits{ get{ return 40; } }
public override int InitMaxHits{ get{ return 50; } }
public override int AosStrReq{ get{ return 40; } }
public override int OldStrReq{ get{ return 20; } }
public override int OldDexBonus{ get{ return -1; } }
public override int ArmorBase{ get{ return 22; } }
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Ringmail; } }
public override int LabelNumber{ get{ return 1045124; } } // ringmail blacksmith gloves of mining
[Constructable]
public RingmailGlovesOfMining( int bonus ) : base( bonus, 0x13EB )
{
Weight = 1;
}
public RingmailGlovesOfMining( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public abstract class BaseGlovesOfMining : BaseArmor
{
private int m_Bonus;
private SkillMod m_SkillMod;
[CommandProperty( AccessLevel.GameMaster )]
public int Bonus
{
get
{
return m_Bonus;
}
set
{
m_Bonus = value;
InvalidateProperties();
if ( m_Bonus == 0 )
{
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = null;
}
else if ( m_SkillMod == null && Parent is Mobile )
{
m_SkillMod = new DefaultSkillMod( SkillName.Mining, true, m_Bonus );
((Mobile)Parent).AddSkillMod( m_SkillMod );
}
else if ( m_SkillMod != null )
{
m_SkillMod.Value = m_Bonus;
}
}
}
public override void OnAdded(IEntity parent)
{
base.OnAdded( parent );
if ( m_Bonus != 0 && parent is Mobile )
{
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = new DefaultSkillMod( SkillName.Mining, true, m_Bonus );
((Mobile)parent).AddSkillMod( m_SkillMod );
}
}
public override void OnRemoved(IEntity parent)
{
base.OnRemoved( parent );
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = null;
}
public BaseGlovesOfMining( int bonus, int itemID ) : base( itemID )
{
m_Bonus = bonus;
this.Hue = CraftResources.GetHue( (CraftResource)Utility.RandomMinMax( (int)CraftResource.DullCopper, (int)CraftResource.Valorite ) );
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( m_Bonus != 0 )
list.Add( 1062005, m_Bonus.ToString() ); // mining bonus +~1_val~
}
public BaseGlovesOfMining( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) m_Bonus );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Bonus = reader.ReadInt();
break;
}
}
if ( m_Bonus != 0 && Parent is Mobile )
{
if ( m_SkillMod != null )
m_SkillMod.Remove();
m_SkillMod = new DefaultSkillMod( SkillName.Mining, true, m_Bonus );
((Mobile)Parent).AddSkillMod( m_SkillMod );
}
}
}
}

View file

@ -0,0 +1,189 @@
using System;
using Server;
using Server.Targeting;
using Server.Engines.Craft;
using Server.Network;
namespace Server.Items
{
public class PowderOfTemperament : Item, IUsesRemaining
{
private int m_UsesRemaining;
[CommandProperty( AccessLevel.GameMaster )]
public int UsesRemaining
{
get { return m_UsesRemaining; }
set { m_UsesRemaining = value; InvalidateProperties(); }
}
public bool ShowUsesRemaining{ get{ return true; } set{} }
public override int LabelNumber{ get{ return 1049082; } } // powder of fortifying
[Constructable]
public PowderOfTemperament() : this( 10 )
{
}
[Constructable]
public PowderOfTemperament( int charges ) : base( 4102 )
{
Weight = 1.0;
Hue = 2419;
UsesRemaining = charges;
}
public PowderOfTemperament( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
writer.Write( (int) m_UsesRemaining );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_UsesRemaining = reader.ReadInt();
break;
}
}
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
list.Add( 1060584, m_UsesRemaining.ToString() ); // uses remaining: ~1_val~
}
public virtual void DisplayDurabilityTo( Mobile m )
{
LabelToAffix( m, 1017323, AffixType.Append, ": " + m_UsesRemaining.ToString() ); // Durability
}
public override void OnSingleClick( Mobile from )
{
DisplayDurabilityTo( from );
base.OnSingleClick( from );
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
from.Target = new InternalTarget( this );
else
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
private class InternalTarget : Target
{
private PowderOfTemperament m_Powder;
public InternalTarget( PowderOfTemperament powder ) : base( 2, false, TargetFlags.None )
{
m_Powder = powder;
}
protected override void OnTarget( Mobile from, object targeted )
{
if ( m_Powder.Deleted || m_Powder.UsesRemaining <= 0 )
{
from.SendLocalizedMessage( 1049086 ); // You have used up your powder of temperament.
return;
}
if ( targeted is IDurability && targeted is Item )
{
IDurability wearable = (IDurability) targeted;
Item item = (Item) targeted;
if ( !wearable.CanFortify )
{
from.SendLocalizedMessage( 1049083 ); // You cannot use the powder on that item.
return;
}
if ( ( item.IsChildOf( from.Backpack ) || ( Core.ML && item.Parent == from ) ) && m_Powder.IsChildOf( from.Backpack ) )
{
int origMaxHP = wearable.MaxHitPoints;
int origCurHP = wearable.HitPoints;
if ( origMaxHP > 0 )
{
int initMaxHP = Core.AOS ? 255 : wearable.InitMaxHits;
wearable.UnscaleDurability();
if ( wearable.MaxHitPoints < initMaxHP )
{
int bonus = initMaxHP - wearable.MaxHitPoints;
if ( bonus > 10 )
bonus = 10;
wearable.MaxHitPoints += bonus;
wearable.HitPoints += bonus;
wearable.ScaleDurability();
if ( wearable.MaxHitPoints > 255 ) wearable.MaxHitPoints = 255;
if ( wearable.HitPoints > 255 ) wearable.HitPoints = 255;
if ( wearable.MaxHitPoints > origMaxHP )
{
from.SendLocalizedMessage( 1049084 ); // You successfully use the powder on the item.
from.PlaySound( 0x247 );
--m_Powder.UsesRemaining;
if ( m_Powder.UsesRemaining <= 0 )
{
from.SendLocalizedMessage( 1049086 ); // You have used up your powder of fortifying.
m_Powder.Delete();
}
}
else
{
wearable.MaxHitPoints = origMaxHP;
wearable.HitPoints = origCurHP;
from.SendLocalizedMessage( 1049085 ); // The item cannot be improved any further.
}
}
else
{
from.SendLocalizedMessage( 1049085 ); // The item cannot be improved any further.
wearable.ScaleDurability();
}
}
else
{
from.SendLocalizedMessage( 1049083 ); // You cannot use the powder on that item.
}
}
else
{
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
}
else
{
from.SendLocalizedMessage( 1049083 ); // You cannot use the powder on that item.
}
}
}
}
}

View file

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Server.Items
{
public class JesterHatofChuckles : BaseHat, ITokunoDyable
{
public override int LabelNumber { get { return 1073256; } } //Jester Hat of Chuckles - Museum of Vesper Replica 1073256
public override int BasePhysicalResistance { get { return 12; } }
public override int BaseFireResistance { get { return 12; } }
public override int BaseColdResistance { get { return 12; } }
public override int BasePoisonResistance { get { return 12; } }
public override int BaseEnergyResistance { get { return 12; } }
public override int InitMinHits{ get{ return 100; } }
public override int InitMaxHits{ get{ return 100; } }
[Constructable]
public JesterHatofChuckles() : this( Utility.RandomList( 0x13e, 0x03, 0x172, 0x3f ) )
{
}
[Constructable]
public JesterHatofChuckles( int hue ) : base( 0x171C, hue )
{
Attributes.Luck = 150;
Weight = 1.0;
}
public JesterHatofChuckles( 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,188 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A5D, 0x2A61 )]
public class AwesomeDisturbingPortraitComponent : AddonComponent
{
public override int LabelNumber { get { return 1074479; } } // Disturbing portrait
public bool FacingSouth { get { return ItemID < 0x2A61; } }
private InternalTimer m_Timer;
public AwesomeDisturbingPortraitComponent() : base( 0x2A5D )
{
m_Timer = new InternalTimer( this, TimeSpan.FromSeconds( 1 ) );
m_Timer.Start();
}
public AwesomeDisturbingPortraitComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
{
int hours;
int minutes;
Clock.GetTime( Map, X, Y, out hours, out minutes );
if ( hours < 4 || hours > 20 )
Effects.PlaySound( Location, Map, 0x569 );
UpdateImage();
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if ( m_Timer != null && m_Timer.Running )
m_Timer.Stop();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Timer = new InternalTimer( this, TimeSpan.Zero );
m_Timer.Start();
}
private void UpdateImage()
{
int hours;
int minutes;
Clock.GetTime( Map, X, Y, out hours, out minutes );
if ( FacingSouth )
{
if ( hours < 4 )
ItemID = 0x2A60;
else if ( hours < 6 )
ItemID = 0x2A5F;
else if ( hours < 8 )
ItemID = 0x2A5E;
else if ( hours < 16 )
ItemID = 0x2A5D;
else if ( hours < 18 )
ItemID = 0x2A5E;
else if ( hours < 20 )
ItemID = 0x2A5F;
else
ItemID = 0x2A60;
}
else
{
if ( hours < 4 )
ItemID = 0x2A64;
else if ( hours < 6 )
ItemID = 0x2A63;
else if ( hours < 8 )
ItemID = 0x2A62;
else if ( hours < 16 )
ItemID = 0x2A61;
else if ( hours < 18 )
ItemID = 0x2A62;
else if ( hours < 20 )
ItemID = 0x2A63;
else
ItemID = 0x2A64;
}
}
private class InternalTimer : Timer
{
private AwesomeDisturbingPortraitComponent m_Component;
public InternalTimer( AwesomeDisturbingPortraitComponent c, TimeSpan delay ) : base( delay, TimeSpan.FromMinutes( 10 ) )
{
m_Component = c;
Priority = TimerPriority.OneMinute;
}
protected override void OnTick()
{
if ( m_Component != null && !m_Component.Deleted )
m_Component.UpdateImage();
}
}
}
public class AwesomeDisturbingPortraitAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new AwesomeDisturbingPortraitDeed(); } }
[Constructable]
public AwesomeDisturbingPortraitAddon() : base()
{
AddComponent( new AwesomeDisturbingPortraitComponent(), 0, 0, 0 );
}
public AwesomeDisturbingPortraitAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class AwesomeDisturbingPortraitDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new AwesomeDisturbingPortraitAddon(); } }
public override int LabelNumber { get { return 1074479; } } // Disturbing portrait
[Constructable]
public AwesomeDisturbingPortraitDeed() : base()
{
LootType = LootType.Blessed;
}
public AwesomeDisturbingPortraitDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,195 @@
using System;
namespace Server.Items
{
public class BedOfNailsComponent : AddonComponent
{
public override int LabelNumber { get { return 1074801; } } // Bed of Nails
public BedOfNailsComponent( int itemID )
: base( itemID )
{
}
public BedOfNailsComponent( Serial serial )
: base( serial )
{
}
public override bool OnMoveOver( Mobile m )
{
bool allow = base.OnMoveOver( m );
if( allow && Addon is BedOfNailsAddon )
( (BedOfNailsAddon)Addon ).OnMoveOver( m );
return allow;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
[FlipableAddon( Direction.South, Direction.East )]
public class BedOfNailsAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BedOfNailsDeed(); } }
private InternalTimer m_Timer;
[Constructable]
public BedOfNailsAddon()
: base()
{
Direction = Direction.South;
AddComponent( new BedOfNailsComponent( 0x2A81 ), 0, 0, 0 );
AddComponent( new BedOfNailsComponent( 0x2A82 ), 0, -1, 0 );
}
public BedOfNailsAddon( Serial serial )
: base( serial )
{
}
public override bool OnMoveOver( Mobile m )
{
if( m.Alive && ( m.AccessLevel == AccessLevel.Player || !m.Hidden ) )
{
if( m.Player )
{
if( m.Female )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x53B, 0x53D ) );
else
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x53E, 0x540 ) );
}
if( m_Timer == null || !m_Timer.Running )
( m_Timer = new InternalTimer( m ) ).Start();
}
return true;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
public virtual void Flip( Mobile from, Direction direction )
{
switch( direction )
{
case Direction.East:
AddComponent( new BedOfNailsComponent( 0x2A89 ), 0, 0, 0 );
AddComponent( new BedOfNailsComponent( 0x2A8A ), -1, 0, 0 );
break;
case Direction.South:
AddComponent( new BedOfNailsComponent( 0x2A81 ), 0, 0, 0 );
AddComponent( new BedOfNailsComponent( 0x2A82 ), 0, -1, 0 );
break;
}
}
private class InternalTimer : Timer
{
private Mobile m_Mobile;
private Point3D m_Location;
public InternalTimer( Mobile m )
: base( TimeSpan.Zero, TimeSpan.FromSeconds( 1 ), 5 )
{
m_Mobile = m;
m_Location = Point3D.Zero;
}
protected override void OnTick()
{
if( m_Mobile == null || m_Mobile.Map == null || m_Mobile.Deleted || !m_Mobile.Alive || m_Mobile.Map == Map.Internal )
{
Stop();
}
else
{
if( m_Location != m_Mobile.Location )
{
int amount = Utility.RandomMinMax( 0, 7 );
for( int i = 0; i < amount; i++ )
{
int x = m_Mobile.X + Utility.RandomMinMax( -1, 1 );
int y = m_Mobile.Y + Utility.RandomMinMax( -1, 1 );
int z = m_Mobile.Z;
if( !m_Mobile.Map.CanFit( x, y, z, 1, false, false, true ) )
{
z = m_Mobile.Map.GetAverageZ( x, y );
if( !m_Mobile.Map.CanFit( x, y, z, 1, false, false, true ) )
{
continue;
}
}
Blood blood = new Blood( Utility.RandomMinMax( 0x122C, 0x122F ) );
blood.MoveToWorld( new Point3D( x, y, z ), m_Mobile.Map );
}
m_Location = m_Mobile.Location;
}
}
}
}
}
public class BedOfNailsDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BedOfNailsAddon(); } }
public override int LabelNumber { get { return 1074801; } } // Bed of Nails
[Constructable]
public BedOfNailsDeed()
: base()
{
LootType = LootType.Blessed;
}
public BedOfNailsDeed( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,119 @@
using System;
namespace Server.Items
{
public class BoneCouchComponent : AddonComponent
{
public override int LabelNumber { get { return 1074477; } } // Bone couch
public BoneCouchComponent( int itemID ) : base( itemID )
{
}
public BoneCouchComponent( Serial serial ) : base( serial )
{
}
public override bool OnMoveOver( Mobile m )
{
bool allow = base.OnMoveOver( m );
if ( allow && m.Alive && m.Player && ( m.AccessLevel == AccessLevel.Player || !m.Hidden ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x547, 0x54A ) );
return allow;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
[FlipableAddon( Direction.South, Direction.East )]
public class BoneCouchAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BoneCouchDeed(); } }
[Constructable]
public BoneCouchAddon() : base()
{
Direction = Direction.South;
AddComponent( new BoneCouchComponent( 0x2A5A ), 0, 0, 0 );
AddComponent( new BoneCouchComponent( 0x2A5B ), -1, 0, 0 );
}
public BoneCouchAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
public virtual void Flip( Mobile from, Direction direction )
{
switch ( direction )
{
case Direction.East:
AddComponent( new BoneCouchComponent( 0x2A80 ), 0, 0, 0 );
AddComponent( new BoneCouchComponent( 0x2A7F ), 0, 1, 0 );
break;
case Direction.South:
AddComponent( new BoneCouchComponent( 0x2A5A ), 0, 0, 0 );
AddComponent( new BoneCouchComponent( 0x2A5B ), -1, 0, 0 );
break;
}
}
}
public class BoneCouchDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BoneCouchAddon(); } }
public override int LabelNumber { get { return 1074477; } } // Bone couch
[Constructable]
public BoneCouchDeed() : base()
{
LootType = LootType.Blessed;
}
public BoneCouchDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class BoneTableAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BoneTableDeed(); } }
[Constructable]
public BoneTableAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x2A5C, 1074478 ), 0, 0, 0 );
}
public BoneTableAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BoneTableDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BoneTableAddon(); } }
public override int LabelNumber { get { return 1074478; } } // Bone table
[Constructable]
public BoneTableDeed() : base()
{
LootType = LootType.Blessed;
}
public BoneTableDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,101 @@
using System;
namespace Server.Items
{
[Flipable( 0x2A58, 0x2A59 )]
public class BoneThroneComponent : AddonComponent
{
public override int LabelNumber { get { return 1074476; } } // Bone throne
public BoneThroneComponent() : base( 0x2A58 )
{
}
public BoneThroneComponent( Serial serial ) : base( serial )
{
}
public override bool OnMoveOver( Mobile m )
{
bool allow = base.OnMoveOver( m );
if ( allow && m.Alive && m.Player && ( m.AccessLevel == AccessLevel.Player || !m.Hidden ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x54B, 0x54D ) );
return allow;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BoneThroneAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BoneThroneDeed(); } }
[Constructable]
public BoneThroneAddon() : base()
{
AddComponent( new BoneThroneComponent(), 0, 0, 0 );
}
public BoneThroneAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BoneThroneDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BoneThroneAddon(); } }
public override int LabelNumber { get { return 1074476; } } // Bone throne
[Constructable]
public BoneThroneDeed() : base()
{
LootType = LootType.Blessed;
}
public BoneThroneDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,138 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A69, 0x2A6D )]
public class CreepyPortraitComponent : AddonComponent
{
public override int LabelNumber { get { return 1074481; } } // Creepy portrait
public override bool HandlesOnMovement { get { return true; } }
public CreepyPortraitComponent() : base( 0x2A69 )
{
}
public CreepyPortraitComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x565, 0x566 ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void OnMovement( Mobile m, Point3D old )
{
if ( m.Alive && m.Player && ( m.AccessLevel == AccessLevel.Player || !m.Hidden ) )
{
if ( !Utility.InRange( old, Location, 2 ) && Utility.InRange( m.Location, Location, 2 ) )
{
if ( ItemID == 0x2A69 || ItemID == 0x2A6D )
{
Up();
Timer.DelayCall( TimeSpan.FromSeconds( 0.5 ), TimeSpan.FromSeconds( 0.5 ), 2, new TimerCallback( Up ) );
}
}
else if ( Utility.InRange( old, Location, 2 ) && !Utility.InRange( m.Location, Location, 2 ) )
{
if ( ItemID == 0x2A6C || ItemID == 0x2A70 )
{
Down();
Timer.DelayCall( TimeSpan.FromSeconds( 0.5 ), TimeSpan.FromSeconds( 0.5 ), 2, new TimerCallback( Down ) );
}
}
}
}
private void Up()
{
ItemID += 1;
}
private void Down()
{
ItemID -= 1;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
if ( version == 0 && ItemID != 0x2A69 && ItemID != 0x2A6D )
ItemID = 0x2A69;
}
}
public class CreepyPortraitAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new CreepyPortraitDeed(); } }
[Constructable]
public CreepyPortraitAddon() : base()
{
AddComponent( new CreepyPortraitComponent(), 0, 0, 0 );
}
public CreepyPortraitAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class CreepyPortraitDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new CreepyPortraitAddon(); } }
public override int LabelNumber { get { return 1074481; } } // Creepy portrait
[Constructable]
public CreepyPortraitDeed() : base()
{
LootType = LootType.Blessed;
}
public CreepyPortraitDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,122 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A5D, 0x2A61 )]
public class DisturbingPortraitComponent : AddonComponent
{
public override int LabelNumber { get { return 1074479; } } // Disturbing portrait
private Timer m_Timer;
public DisturbingPortraitComponent() : base( 0x2A5D )
{
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), TimeSpan.FromMinutes( 3 ), new TimerCallback( Change ) );
}
public DisturbingPortraitComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x567, 0x568 ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if ( m_Timer != null && m_Timer.Running )
m_Timer.Stop();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), TimeSpan.FromMinutes( 3 ), new TimerCallback( Change ) );
}
private void Change()
{
if ( ItemID < 0x2A61 )
ItemID = Utility.RandomMinMax( 0x2A5D, 0x2A60 );
else
ItemID = Utility.RandomMinMax( 0x2A61, 0x2A64 );
}
}
public class DisturbingPortraitAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new DisturbingPortraitDeed(); } }
[Constructable]
public DisturbingPortraitAddon() : base()
{
AddComponent( new DisturbingPortraitComponent(), 0, 0, 0 );
}
public DisturbingPortraitAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class DisturbingPortraitDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new DisturbingPortraitAddon(); } }
public override int LabelNumber { get { return 1074479; } } // Disturbing portrait
[Constructable]
public DisturbingPortraitDeed() : base()
{
LootType = LootType.Blessed;
}
public DisturbingPortraitDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,114 @@
using System;
namespace Server.Items
{
[Flipable( 0x2A7B, 0x2A7D )]
public class HaunterMirrorComponent : AddonComponent
{
public override int LabelNumber { get { return 1074800; } } // Haunted Mirror
public override bool HandlesOnMovement { get { return true; } }
public HaunterMirrorComponent() : base( 0x2A7B )
{
}
public HaunterMirrorComponent( Serial serial ) : base( serial )
{
}
public override void OnMovement( Mobile m, Point3D old )
{
base.OnMovement( m, old );
if ( m.Alive && m.Player && ( m.AccessLevel == AccessLevel.Player || !m.Hidden ) )
{
if ( !Utility.InRange( old, Location, 2 ) && Utility.InRange( m.Location, Location, 2 ) )
{
if ( ItemID == 0x2A7B || ItemID == 0x2A7D )
{
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x551, 0x553 ) );
ItemID += 1;
}
}
else if ( Utility.InRange( old, Location, 2 ) && !Utility.InRange( m.Location, Location, 2 ) )
{
if ( ItemID == 0x2A7C || ItemID == 0x2A7E )
ItemID -= 1;
}
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class HaunterMirrorAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new HaunterMirrorDeed(); } }
[Constructable]
public HaunterMirrorAddon() : base()
{
AddComponent( new HaunterMirrorComponent(), 0, 0, 0 );
}
public HaunterMirrorAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class HaunterMirrorDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new HaunterMirrorAddon(); } }
public override int LabelNumber { get { return 1074800; } } // Haunted Mirror
[Constructable]
public HaunterMirrorDeed() : base()
{
LootType = LootType.Blessed;
}
public HaunterMirrorDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,100 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A75, 0x2A76 )]
public class MountedPixieBlueComponent : AddonComponent
{
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
public MountedPixieBlueComponent() : base( 0x2A75 )
{
}
public MountedPixieBlueComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x55C, 0x55E ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieBlueAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new MountedPixieBlueDeed(); } }
public MountedPixieBlueAddon() : base()
{
AddComponent( new MountedPixieBlueComponent(), 0, 0, 0 );
}
public MountedPixieBlueAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieBlueDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new MountedPixieBlueAddon(); } }
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
[Constructable]
public MountedPixieBlueDeed() : base()
{
LootType = LootType.Blessed;
}
public MountedPixieBlueDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,100 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A71, 0x2A72 )]
public class MountedPixieGreenComponent : AddonComponent
{
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
public MountedPixieGreenComponent() : base( 0x2A71 )
{
}
public MountedPixieGreenComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x554, 0x557 ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieGreenAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new MountedPixieGreenDeed(); } }
public MountedPixieGreenAddon() : base()
{
AddComponent( new MountedPixieGreenComponent(), 0, 0, 0 );
}
public MountedPixieGreenAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieGreenDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new MountedPixieGreenAddon(); } }
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
[Constructable]
public MountedPixieGreenDeed() : base()
{
LootType = LootType.Blessed;
}
public MountedPixieGreenDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,100 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A77, 0x2A78 )]
public class MountedPixieLimeComponent : AddonComponent
{
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
public MountedPixieLimeComponent() : base( 0x2A77 )
{
}
public MountedPixieLimeComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x55F, 0x561 ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieLimeAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new MountedPixieLimeDeed(); } }
public MountedPixieLimeAddon() : base()
{
AddComponent( new MountedPixieLimeComponent(), 0, 0, 0 );
}
public MountedPixieLimeAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieLimeDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new MountedPixieLimeAddon(); } }
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
[Constructable]
public MountedPixieLimeDeed() : base()
{
LootType = LootType.Blessed;
}
public MountedPixieLimeDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,100 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A73, 0x2A74 )]
public class MountedPixieOrangeComponent : AddonComponent
{
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
public MountedPixieOrangeComponent() : base( 0x2A73 )
{
}
public MountedPixieOrangeComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x558, 0x55B ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieOrangeAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new MountedPixieOrangeDeed(); } }
public MountedPixieOrangeAddon() : base()
{
AddComponent( new MountedPixieOrangeComponent(), 0, 0, 0 );
}
public MountedPixieOrangeAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieOrangeDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new MountedPixieOrangeAddon(); } }
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
[Constructable]
public MountedPixieOrangeDeed() : base()
{
LootType = LootType.Blessed;
}
public MountedPixieOrangeDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,100 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A79, 0x2A7A )]
public class MountedPixieWhiteComponent : AddonComponent
{
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
public MountedPixieWhiteComponent() : base( 0x2A79 )
{
}
public MountedPixieWhiteComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x562, 0x564 ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieWhiteAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new MountedPixieWhiteDeed(); } }
public MountedPixieWhiteAddon() : base()
{
AddComponent( new MountedPixieWhiteComponent(), 0, 0, 0 );
}
public MountedPixieWhiteAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class MountedPixieWhiteDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new MountedPixieWhiteAddon(); } }
public override int LabelNumber { get { return 1074482; } } // Mounted pixie
[Constructable]
public MountedPixieWhiteDeed() : base()
{
LootType = LootType.Blessed;
}
public MountedPixieWhiteDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,164 @@
using System;
namespace Server.Items
{
[FlipableAddon( Direction.South, Direction.East )]
public class SacrificialAltarAddon : BaseAddonContainer
{
public override BaseAddonContainerDeed Deed { get { return new SacrificialAltarDeed(); } }
public override int LabelNumber { get { return 1074818; } } // Sacrificial Altar
public override int DefaultMaxWeight { get { return 0; } }
public override int DefaultGumpID { get { return 0x107; } }
public override int DefaultDropSound { get { return 0x42; } }
private Timer m_Timer;
[Constructable]
public SacrificialAltarAddon() : base( 0x2A9B )
{
Direction = Direction.South;
AddComponent( new LocalizedContainerComponent( 0x2A9A, 1074818 ), 1, 0, 0 );
}
public SacrificialAltarAddon( Serial serial ) : base( serial )
{
}
public override bool OnDragDrop( Mobile from, Item dropped )
{
if ( !base.OnDragDrop( from, dropped ) )
return false;
if ( TotalItems >= 50 )
{
SendLocalizedMessageTo( from, 501478 ); // The trash is full! Emptying!
Empty();
}
else
{
SendLocalizedMessageTo( from, 1010442 ); // The item will be deleted in three minutes
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), new TimerCallback( Empty ) );
}
return true;
}
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
{
if ( !base.OnDragDropInto( from, item, p ) )
return false;
if ( TotalItems >= 50 )
{
SendLocalizedMessageTo( from, 501478 ); // The trash is full! Emptying!
Empty();
}
else
{
SendLocalizedMessageTo( from, 1010442 ); // The item will be deleted in three minutes
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), new TimerCallback( Empty ) );
}
return true;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
if ( Items.Count > 0 )
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), new TimerCallback( Empty ) );
}
public virtual void Flip( Mobile from, Direction direction )
{
switch ( direction )
{
case Direction.East:
ItemID = 0x2A9C;
AddComponent( new LocalizedContainerComponent( 0x2A9D, 1074818 ), 0, -1, 0 );
break;
case Direction.South:
ItemID = 0x2A9B;
AddComponent( new LocalizedContainerComponent( 0x2A9A, 1074818 ), 1, 0, 0 );
break;
}
}
public virtual void Empty()
{
if ( Items.Count > 0 )
{
Point3D location = Location;
location.Z += 10;
Effects.SendLocationEffect( location, Map, 0x3709, 10, 10, 0x356, 0 );
Effects.PlaySound( location, Map, 0x32E );
if ( Items.Count > 0 )
{
for ( int i = Items.Count - 1; i >= 0; --i )
{
if ( i >= Items.Count )
continue;
Items[ i ].Delete();
}
}
}
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
}
}
public class SacrificialAltarDeed : BaseAddonContainerDeed
{
public override BaseAddonContainer Addon { get { return new SacrificialAltarAddon(); } }
public override int LabelNumber { get { return 1074818; } } // Sacrificial Altar
[Constructable]
public SacrificialAltarDeed() : base()
{
LootType = LootType.Blessed;
}
public SacrificialAltarDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,126 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2A65, 0x2A67 )]
public class UnsettlingPortraitComponent : AddonComponent
{
public override int LabelNumber { get { return 1074480; } } // Unsettling portrait
private Timer m_Timer;
public UnsettlingPortraitComponent() : base( 0x2A65 )
{
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), TimeSpan.FromMinutes( 3 ), new TimerCallback( ChangeDirection ) );
}
public UnsettlingPortraitComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( Utility.InRange( Location, from.Location, 2 ) )
Effects.PlaySound( Location, Map, Utility.RandomMinMax( 0x567, 0x568 ) );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if ( m_Timer != null )
m_Timer.Stop();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Timer = Timer.DelayCall( TimeSpan.FromMinutes( 3 ), TimeSpan.FromMinutes( 3 ), new TimerCallback( ChangeDirection ) );
}
private void ChangeDirection()
{
if ( ItemID == 0x2A65 )
ItemID += 1;
else if ( ItemID == 0x2A66 )
ItemID -= 1;
else if ( ItemID == 0x2A67 )
ItemID += 1;
else if ( ItemID == 0x2A68 )
ItemID -= 1;
}
}
public class UnsettlingPortraitAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new UnsettlingPortraitDeed(); } }
[Constructable]
public UnsettlingPortraitAddon() : base()
{
AddComponent( new UnsettlingPortraitComponent(), 0, 0, 0 );
}
public UnsettlingPortraitAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class UnsettlingPortraitDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new UnsettlingPortraitAddon(); } }
public override int LabelNumber { get { return 1074480; } } // Unsettling portrait
[Constructable]
public UnsettlingPortraitDeed() : base()
{
LootType = LootType.Blessed;
}
public UnsettlingPortraitDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,132 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class HearthOfHomeFire : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new HearthOfHomeFireDeed(); } }
[Constructable]
public HearthOfHomeFire( bool east )
{
if ( east )
{
AddLightComponent( new AddonComponent( 0x2352 ), 0, 0, 0 );
AddLightComponent( new AddonComponent( 0x2358 ), 0, -1, 0 );
}
else
{
AddLightComponent( new AddonComponent( 0x2360 ), 0, 0, 0 );
AddLightComponent( new AddonComponent( 0x2366 ), -1, 0, 0 );
}
}
private void AddLightComponent( AddonComponent component, int x, int y, int z )
{
component.Light = LightType.Circle150;
AddComponent( component, x, y, z );
}
public HearthOfHomeFire( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class HearthOfHomeFireDeed : BaseAddonDeed
{
private bool m_East;
public override BaseAddon Addon{ get{ return new HearthOfHomeFire( m_East ); } }
public override int LabelNumber{ get{ return 1062919; } } // Hearth of the Home Fire
[Constructable]
public HearthOfHomeFireDeed()
{
LootType = LootType.Blessed;
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
{
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
private class InternalGump : Gump
{
private HearthOfHomeFireDeed m_Deed;
public InternalGump( HearthOfHomeFireDeed deed ) : base( 150, 50 )
{
m_Deed = deed;
AddBackground( 0, 0, 350, 250, 0xA28 );
AddItem( 90, 52, 0x2367 );
AddItem( 112, 35, 0x2360 );
AddButton( 70, 35, 0x868, 0x869, 1, GumpButtonType.Reply, 0 ); // South
AddItem( 220, 35, 0x2352 );
AddItem( 242, 52, 0x2358 );
AddButton( 185, 35, 0x868, 0x869, 2, GumpButtonType.Reply, 0 ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = (info.ButtonID != 1);
m_Deed.SendTarget( sender.Mobile );
}
}
public HearthOfHomeFireDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class HolySword : Longsword
{
public override int LabelNumber{ get{ return 1062921; } } // The Holy Sword
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public HolySword()
{
Hue = 0x482;
LootType = LootType.Blessed;
Slayer = SlayerName.Silver;
Attributes.WeaponDamage = 40;
WeaponAttributes.SelfRepair = 10;
WeaponAttributes.LowerStatReq = 100;
WeaponAttributes.UseBestSkill = 1;
}
public HolySword( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using Server;
namespace Server.Items
{
public class LeggingsOfEmbers : PlateLegs
{
public override int LabelNumber{ get{ return 1062911; } } // Royal Leggings of Embers
public override int BasePhysicalResistance{ get{ return 15; } }
public override int BaseFireResistance{ get{ return 25; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 15; } }
public override int BaseEnergyResistance{ get{ return 15; } }
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public LeggingsOfEmbers()
{
Hue = 0x2C;
LootType = LootType.Blessed;
ArmorAttributes.SelfRepair = 10;
ArmorAttributes.MageArmor = 1;
ArmorAttributes.LowerStatReq = 100;
}
public LeggingsOfEmbers( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,223 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Network;
using Server.Gumps;
using Server.Multis;
using Server.ContextMenus;
namespace Server.Items
{
[FlipableAttribute( 0x234C, 0x234D )]
public class RoseOfTrinsic : Item, ISecurable
{
private static readonly TimeSpan m_SpawnTime = TimeSpan.FromHours( 4.0 );
private int m_Petals;
private DateTime m_NextSpawnTime;
private SpawnTimer m_SpawnTimer;
private SecureLevel m_Level;
public override int LabelNumber{ get{ return 1062913; } } // Rose of Trinsic
[CommandProperty( AccessLevel.GameMaster )]
public SecureLevel Level
{
get{ return m_Level; }
set{ m_Level = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Petals
{
get{ return m_Petals; }
set
{
if ( value >= 10 )
{
m_Petals = 10;
StopSpawnTimer();
}
else
{
if ( value <= 0 )
m_Petals = 0;
else
m_Petals = value;
StartSpawnTimer( m_SpawnTime );
}
InvalidateProperties();
}
}
[Constructable]
public RoseOfTrinsic() : base( 0x234D )
{
Weight = 1.0;
LootType = LootType.Blessed;
m_Petals = 0;
StartSpawnTimer( TimeSpan.FromMinutes( 1.0 ) );
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
list.Add( 1062925, Petals.ToString() ); // Petals: ~1_COUNT~
}
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
{
base.GetContextMenuEntries( from, list );
SetSecureLevelEntry.AddTo( from, this, list );
}
private void StartSpawnTimer( TimeSpan delay )
{
StopSpawnTimer();
m_SpawnTimer = new SpawnTimer( this, delay );
m_SpawnTimer.Start();
m_NextSpawnTime = DateTime.UtcNow + delay;
}
private void StopSpawnTimer()
{
if ( m_SpawnTimer != null )
{
m_SpawnTimer.Stop();
m_SpawnTimer = null;
}
}
private class SpawnTimer : Timer
{
private RoseOfTrinsic m_Rose;
public SpawnTimer( RoseOfTrinsic rose, TimeSpan delay ) : base( delay )
{
m_Rose = rose;
Priority = TimerPriority.OneMinute;
}
protected override void OnTick()
{
if ( m_Rose.Deleted )
return;
m_Rose.m_SpawnTimer = null;
m_Rose.Petals++;
}
}
public override void OnDoubleClick( Mobile from )
{
if ( !from.InRange( GetWorldLocation(), 2 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
else if ( Petals > 0 )
{
from.AddToBackpack( new RoseOfTrinsicPetal( Petals ) );
Petals = 0;
}
}
public RoseOfTrinsic( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
writer.WriteEncodedInt( (int) m_Petals );
writer.WriteDeltaTime( (DateTime) m_NextSpawnTime );
writer.WriteEncodedInt( (int) m_Level );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Petals = reader.ReadEncodedInt();
m_NextSpawnTime = reader.ReadDeltaTime();
m_Level = (SecureLevel) reader.ReadEncodedInt();
if ( m_Petals < 10 )
StartSpawnTimer( m_NextSpawnTime - DateTime.UtcNow );
}
}
public class RoseOfTrinsicPetal : Item
{
public override int LabelNumber{ get{ return 1062926; } } // Petal of the Rose of Trinsic
[Constructable]
public RoseOfTrinsicPetal() : this( 1 )
{
}
[Constructable]
public RoseOfTrinsicPetal( int amount ) : base( 0x1021 )
{
Stackable = true;
Amount = amount;
Weight = 1.0;
Hue = 0xE;
}
public override void OnDoubleClick( Mobile from )
{
if ( !IsChildOf( from.Backpack ) )
{
from.SendLocalizedMessage( 1042038 ); // You must have the object in your backpack to use it.
}
else if ( from.GetStatMod( "RoseOfTrinsicPetal" ) != null )
{
from.SendLocalizedMessage( 1062927 ); // You have eaten one of these recently and eating another would provide no benefit.
}
else
{
from.PlaySound( 0x1EE );
from.AddStatMod( new StatMod( StatType.Str, "RoseOfTrinsicPetal", 5, TimeSpan.FromMinutes( 5.0 ) ) );
Consume();
}
}
public RoseOfTrinsicPetal( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,52 @@
using System;
using Server;
namespace Server.Items
{
[FlipableAttribute( 0x236C, 0x236D )]
public class SamuraiHelm : BaseArmor
{
public override int LabelNumber{ get{ return 1062923; } } // Ancient Samurai Helm
public override int BasePhysicalResistance{ get{ return 15; } }
public override int BaseFireResistance{ get{ return 10; } }
public override int BaseColdResistance{ get{ return 10; } }
public override int BasePoisonResistance{ get{ return 15; } }
public override int BaseEnergyResistance{ get{ return 10; } }
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Plate; } }
[Constructable]
public SamuraiHelm() : base( 0x236C )
{
Weight = 5.0;
LootType = LootType.Blessed;
Attributes.DefendChance = 15;
ArmorAttributes.SelfRepair = 10;
ArmorAttributes.LowerStatReq = 100;
ArmorAttributes.MageArmor = 1;
}
public SamuraiHelm( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using Server;
namespace Server.Items
{
public class ShaminoCrossbow : RepeatingCrossbow
{
public override int LabelNumber{ get{ return 1062915; } } // Shaminos Best Crossbow
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public ShaminoCrossbow()
{
Hue = 0x504;
LootType = LootType.Blessed;
Attributes.AttackChance = 15;
Attributes.WeaponDamage = 40;
WeaponAttributes.SelfRepair = 10;
WeaponAttributes.LowerStatReq = 100;
}
public ShaminoCrossbow( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,83 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Gumps;
using Server.Network;
using Server.Multis;
using Server.ContextMenus;
namespace Server.Items
{
[FlipableAttribute( 0x234E, 0x234F )]
public class TapestryOfSosaria : Item, ISecurable
{
private SecureLevel m_Level;
public override int LabelNumber{ get{ return 1062917; } } // The Tapestry of Sosaria
[CommandProperty( AccessLevel.GameMaster )]
public SecureLevel Level
{
get{ return m_Level; }
set{ m_Level = value; }
}
[Constructable]
public TapestryOfSosaria() : base( 0x234E )
{
Weight = 1.0;
LootType = LootType.Blessed;
}
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
{
base.GetContextMenuEntries( from, list );
SetSecureLevelEntry.AddTo( from, this, list );
}
public override void OnDoubleClick( Mobile from )
{
if ( from.InRange( GetWorldLocation(), 2 ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump() );
}
else
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
}
private class InternalGump : Gump
{
public InternalGump() : base( 50, 50 )
{
AddImage( 0, 0, 0x2C95 );
}
}
public TapestryOfSosaria( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
writer.WriteEncodedInt( (int) m_Level );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Level = (SecureLevel) reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class AppleTrunkAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new AppleTrunkDeed(); } }
[Constructable]
public AppleTrunkAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xD98, 1076785 ), 0, 0, 0 );
}
public AppleTrunkAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class AppleTrunkDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new AppleTrunkAddon(); } }
public override int LabelNumber { get { return 1076785; } } // Apple Trunk
[Constructable]
public AppleTrunkDeed() : base()
{
LootType = LootType.Blessed;
}
public AppleTrunkDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class BlueDecorativeRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BlueDecorativeRugDeed(); } }
[Constructable]
public BlueDecorativeRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xAD2, 1076589 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD3, 1076589 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD4, 1076589 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD5, 1076589 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD6, 1076589 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD7, 1076589 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD8, 1076589 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD9, 1076589 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD1, 1076589 ), 0, 0, 0 );
}
public BlueDecorativeRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BlueDecorativeRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BlueDecorativeRugAddon(); } }
public override int LabelNumber { get { return 1076589; } } // Blue decorative rug
[Constructable]
public BlueDecorativeRugDeed() : base()
{
LootType = LootType.Blessed;
}
public BlueDecorativeRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class BlueFancyRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BlueFancyRugDeed(); } }
[Constructable]
public BlueFancyRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xAC2, 1076273 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC3, 1076273 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC4, 1076273 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC5, 1076273 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF6, 1076273 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF7, 1076273 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF8, 1076273 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF9, 1076273 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAFA, 1076273 ), 0, 0, 0 );
}
public BlueFancyRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BlueFancyRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BlueFancyRugAddon(); } }
public override int LabelNumber { get { return 1076273; } } // Blue fancy rug
[Constructable]
public BlueFancyRugDeed() : base()
{
LootType = LootType.Blessed;
}
public BlueFancyRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class BluePlainRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new BluePlainRugDeed(); } }
[Constructable]
public BluePlainRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xAC2, 1076585 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC3, 1076585 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC4, 1076585 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC5, 1076585 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF6, 1076585 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF7, 1076585 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF8, 1076585 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF9, 1076585 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC0, 1076585 ), 0, 0, 0 );
}
public BluePlainRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BluePlainRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new BluePlainRugAddon(); } }
public override int LabelNumber { get { return 1076585; } } // Blue plain rug
[Constructable]
public BluePlainRugDeed() : base()
{
LootType = LootType.Blessed;
}
public BluePlainRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,68 @@
using System;
namespace Server.Items
{
[Flipable( 0x2068, 0x207A )]
public class BoilingCauldronAddon : BaseAddonContainer
{
public override BaseAddonContainerDeed Deed { get { return new BoilingCauldronDeed(); } }
public override int LabelNumber { get { return 1076267; } } // Boiling Cauldron
public override int DefaultGumpID { get { return 0x9; } }
public override int DefaultDropSound { get { return 0x42; } }
[Constructable]
public BoilingCauldronAddon() : base( 0x2068 )
{
AddComponent( new LocalizedContainerComponent( 0xFAC, 1076267 ), 0, 0, 0 );
AddComponent( new LocalizedContainerComponent( 0x970, 1076267 ), 0, 0, 8 );
}
public BoilingCauldronAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BoilingCauldronDeed : BaseAddonContainerDeed
{
public override BaseAddonContainer Addon { get { return new BoilingCauldronAddon(); } }
public override int LabelNumber { get { return 1076267; } } // Boiling Cauldron
[Constructable]
public BoilingCauldronDeed() : base()
{
LootType = LootType.Blessed;
}
public BoilingCauldronDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
namespace Server.Items
{
public class CherryBlossomTreeAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new CherryBlossomTreeDeed(); } }
[Constructable]
public CherryBlossomTreeAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x26EE, 1076268 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3122, 1076268 ), 0, 0, 0 );
}
public CherryBlossomTreeAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class CherryBlossomTreeDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new CherryBlossomTreeAddon(); } }
public override int LabelNumber { get { return 1076268; } } // Cherry Blossom Tree
[Constructable]
public CherryBlossomTreeDeed() : base()
{
LootType = LootType.Blessed;
}
public CherryBlossomTreeDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class CherryBlossomTrunkAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new CherryBlossomTrunkDeed(); } }
[Constructable]
public CherryBlossomTrunkAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x26EE, 1076784 ), 0, 0, 0 );
}
public CherryBlossomTrunkAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class CherryBlossomTrunkDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new CherryBlossomTrunkAddon(); } }
public override int LabelNumber { get { return 1076784; } } // Cherry Blossom Trunk
[Constructable]
public CherryBlossomTrunkDeed() : base()
{
LootType = LootType.Blessed;
}
public CherryBlossomTrunkDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class CinnamonFancyRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new CinnamonFancyRugDeed(); } }
[Constructable]
public CinnamonFancyRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xAE3, 1076587 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE4, 1076587 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE5, 1076587 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE6, 1076587 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE7, 1076587 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE8, 1076587 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE9, 1076587 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAEA, 1076587 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAEB, 1076587 ), 0, 0, 0 );
}
public CinnamonFancyRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class CinnamonFancyRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new CinnamonFancyRugAddon(); } }
public override int LabelNumber { get { return 1076587; } } // Cinnamon fancy rug
[Constructable]
public CinnamonFancyRugDeed() : base()
{
LootType = LootType.Blessed;
}
public CinnamonFancyRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,213 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class CurtainsComponent : AddonComponent, IDyable
{
public override int LabelNumber { get { return 1076280; } } // Curtains
public override bool DisplayWeight { get { return false; } }
private int m_ClosedID;
[CommandProperty( AccessLevel.GameMaster )]
public int ClosedID
{
get { return m_ClosedID; }
set { m_ClosedID = value; }
}
public CurtainsComponent( int itemID, int closedID ) : base( itemID )
{
m_ClosedID = closedID;
}
public CurtainsComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
base.OnDoubleClick( from );
if ( Addon != null )
{
if ( from.InRange( Location, 1 ) )
{
foreach ( AddonComponent c in Addon.Components )
{
if ( c is CurtainsComponent )
{
CurtainsComponent curtain = (CurtainsComponent) c;
int temp = curtain.ItemID;
curtain.ItemID = curtain.ClosedID;
curtain.ClosedID = temp;
}
}
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
writer.Write( (int) m_ClosedID );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_ClosedID = reader.ReadInt();
}
#region IDyable
public virtual bool Dye( Mobile from, DyeTub sender )
{
if ( Deleted )
return false;
Hue = sender.DyedHue;
return true;
}
#endregion
}
public class CurtainsAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new CurtainsDeed(); } }
public override bool RetainDeedHue { get { return true; } }
[Constructable]
public CurtainsAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new CurtainsComponent( 0x3D9E, 0x3DA8 ), 0, -1, 0 );
AddComponent( new CurtainsComponent( 0x3DAC, 0x3DAE ), 0, 0, 0 );
AddComponent( new CurtainsComponent( 0x3DA0, 0x3DA6 ), 0, 2, 0 );
AddComponent( new CurtainsComponent( 0x3D9F, 0x3DA7 ), 0, 1, 0 );
}
else // south
{
AddComponent( new CurtainsComponent( 0x3D9C, 0x3DAD ), 0, 0, 0 );
AddComponent( new CurtainsComponent( 0x3D9D, 0x3DA3 ), -1, 0, 0 );
AddComponent( new CurtainsComponent( 0x3DA1, 0x3DA5 ), 2, 0, 0 );
AddComponent( new CurtainsComponent( 0x3DAB, 0x3DA4 ), 1, 0, 0 );
}
}
public CurtainsAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class CurtainsDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new CurtainsAddon( m_East ); } }
public override int LabelNumber { get { return 1076280; } } // Curtains
private bool m_East;
[Constructable]
public CurtainsDeed() : base()
{
LootType = LootType.Blessed;
}
public CurtainsDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private CurtainsDeed m_Deed;
public InternalGump( CurtainsDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076581, 0x7FFF, false, false ); // Please select your curtain position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,62 @@
using System;
namespace Server.Items
{
public class FountainAddon : StoneFountainAddon
{
public override BaseAddonDeed Deed { get { return new FountainDeed(); } }
[Constructable]
public FountainAddon() : base()
{
}
public FountainAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class FountainDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new FountainAddon(); } }
public override int LabelNumber { get { return 1076283; } } // Fountain
[Constructable]
public FountainDeed() : base()
{
LootType = LootType.Blessed;
}
public FountainDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,215 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
public abstract class BaseFruitTreeAddon : BaseAddon
{
public override abstract BaseAddonDeed Deed { get; }
public abstract Item Fruit { get; }
private int m_Fruits;
[CommandProperty( AccessLevel.GameMaster )]
public int Fruits
{
get { return m_Fruits; }
set
{
if ( value < 0 )
m_Fruits = 0;
else
m_Fruits = value;
}
}
public BaseFruitTreeAddon() : base()
{
Timer.DelayCall( TimeSpan.FromMinutes( 5 ), new TimerCallback( Respawn ) );
}
public BaseFruitTreeAddon( Serial serial ) : base( serial )
{
}
public override void OnComponentUsed( AddonComponent c, Mobile from )
{
if ( from.InRange( c.Location, 2 ) )
{
if ( m_Fruits > 0 )
{
Item fruit = Fruit;
if ( fruit == null )
return;
if ( !from.PlaceInBackpack( fruit ) )
{
fruit.Delete();
from.SendLocalizedMessage( 501015 ); // There is no room in your backpack for the fruit.
}
else
{
if ( --m_Fruits == 0 )
Timer.DelayCall( TimeSpan.FromMinutes( 30 ), new TimerCallback( Respawn ) );
from.SendLocalizedMessage( 501016 ); // You pick some fruit and put it in your backpack.
}
}
else
from.SendLocalizedMessage( 501017 ); // There is no more fruit on this tree
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
private void Respawn()
{
m_Fruits = Utility.RandomMinMax( 1, 4 );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
writer.Write( (int) m_Fruits );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Fruits = reader.ReadInt();
if ( m_Fruits == 0 )
Respawn();
}
}
public class AppleTreeAddon : BaseFruitTreeAddon
{
public override BaseAddonDeed Deed { get { return new AppleTreeDeed(); } }
public override Item Fruit { get { return new Apple(); } }
[Constructable]
public AppleTreeAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xD98, 1076269 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3124, 1076269 ), 0, 0, 0 );
}
public AppleTreeAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class AppleTreeDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new AppleTreeAddon(); } }
public override int LabelNumber { get { return 1076269; } } // Apple Tree
[Constructable]
public AppleTreeDeed() : base()
{
LootType = LootType.Blessed;
}
public AppleTreeDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class PeachTreeAddon : BaseFruitTreeAddon
{
public override BaseAddonDeed Deed { get { return new PeachTreeDeed(); } }
public override Item Fruit { get { return new Peach(); } }
[Constructable]
public PeachTreeAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xD9C, 1076270 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3123, 1076270 ), 0, 0, 0 );
}
public PeachTreeAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class PeachTreeDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new PeachTreeAddon(); } }
public override int LabelNumber { get { return 1076270; } } // Peach Tree
[Constructable]
public PeachTreeDeed() : base()
{
LootType = LootType.Blessed;
}
public PeachTreeDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class GoldenDecorativeRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new GoldenDecorativeRugDeed(); } }
[Constructable]
public GoldenDecorativeRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xADB, 1076586 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xADC, 1076586 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xADD, 1076586 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xADE, 1076586 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xADF, 1076586 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE0, 1076586 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE1, 1076586 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAE2, 1076586 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xADA, 1076586 ), 0, 0, 0 );
}
public GoldenDecorativeRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class GoldenDecorativeRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new GoldenDecorativeRugAddon(); } }
public override int LabelNumber { get { return 1076586; } } // Golden decorative rug
[Constructable]
public GoldenDecorativeRugDeed() : base()
{
LootType = LootType.Blessed;
}
public GoldenDecorativeRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,175 @@
using System;
using Server;
using Server.Spells;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x125E, 0x1230 )]
public class GuillotineComponent : AddonComponent
{
public override int LabelNumber { get { return 1024656; } } // Guillotine
public GuillotineComponent() : base( 0x125E )
{
}
public GuillotineComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class GuillotineAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new GuillotineDeed(); } }
[Constructable]
public GuillotineAddon() : base()
{
AddComponent( new GuillotineComponent(), 0, 0, 0 );
}
public GuillotineAddon( Serial serial ) : base( serial )
{
}
public override void OnComponentUsed( AddonComponent c, Mobile from )
{
if ( from.InRange( Location, 2 ) )
{
if ( Utility.RandomBool() )
{
from.Location = Location;
Timer.DelayCall( TimeSpan.FromSeconds( 0.5 ), new TimerStateCallback( Activate ), new object[] { c, from } );
}
else
from.LocalOverheadMessage( MessageType.Regular, 0, 501777 ); // Hmm... you suspect that if you used this again, it might hurt.
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private void Activate( object obj )
{
object[] param = (object[]) obj;
if ( param[ 0 ] is AddonComponent && param[ 1 ] is Mobile )
Activate( (AddonComponent) param[ 0 ], (Mobile) param[ 1 ] );
}
public virtual void Activate( AddonComponent c, Mobile from )
{
if ( c.ItemID == 0x125E || c.ItemID == 0x1269 || c.ItemID == 0x1260 )
c.ItemID = 0x1269;
else
c.ItemID = 0x1247;
// blood
int amount = Utility.RandomMinMax( 3, 7 );
for ( int i = 0; i < amount; i++ )
{
int x = c.X + Utility.RandomMinMax( -1, 1 );
int y = c.Y + Utility.RandomMinMax( -1, 1 );
int z = c.Z;
if ( !c.Map.CanFit( x, y, z, 1, false, false, true ) )
{
z = c.Map.GetAverageZ( x, y );
if ( !c.Map.CanFit( x, y, z, 1, false, false, true ) )
continue;
}
Blood blood = new Blood( Utility.RandomMinMax( 0x122C, 0x122F ) );
blood.MoveToWorld( new Point3D( x, y, z ), c.Map );
}
if ( from.Female )
from.PlaySound( Utility.RandomMinMax( 0x150, 0x153 ) );
else
from.PlaySound( Utility.RandomMinMax( 0x15A, 0x15D ) );
from.LocalOverheadMessage( MessageType.Regular, 0, 501777 ); // Hmm... you suspect that if you used this again, it might hurt.
SpellHelper.Damage( TimeSpan.Zero, from, Utility.Dice( 2, 10, 5 ) );
Timer.DelayCall( TimeSpan.FromSeconds( 0.5 ), TimeSpan.FromSeconds( 0.5 ), 2, new TimerStateCallback( Deactivate ), c );
}
private void Deactivate( object obj )
{
if ( obj is AddonComponent )
{
AddonComponent c = (AddonComponent) obj;
if ( c.ItemID == 0x1269 )
c.ItemID = 0x1260;
else if ( c.ItemID == 0x1260 )
c.ItemID = 0x125E;
else if ( c.ItemID == 0x1247 )
c.ItemID = 0x1246;
else if ( c.ItemID == 0x1246 )
c.ItemID = 0x1230;
}
}
}
public class GuillotineDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new GuillotineAddon(); } }
public override int LabelNumber { get { return 1024656; } } // Guillotine
[Constructable]
public GuillotineDeed() : base()
{
LootType = LootType.Blessed;
}
public GuillotineDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,130 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class HangingAxesAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new HangingAxesDeed(); } }
[Constructable]
public HangingAxesAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new LocalizedAddonComponent( 0x156A, 1076271 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x156B, 1076271 ), 0, -1, 0 );
}
else // south
{
AddComponent( new LocalizedAddonComponent( 0x1568, 1076271 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x1569, 1076271 ), 1, 0, 0 );
}
}
public HangingAxesAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class HangingAxesDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new HangingAxesAddon( m_East ); } }
public override int LabelNumber { get { return 1076271; } } // Hanging Axes
private bool m_East;
[Constructable]
public HangingAxesDeed() : base()
{
LootType = LootType.Blessed;
}
public HangingAxesDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private HangingAxesDeed m_Deed;
public InternalGump( HangingAxesDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076745, 0x7FFF, false, false ); // Please select your hanging axe position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,130 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class HangingSwordsAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new HangingSwordsDeed(); } }
[Constructable]
public HangingSwordsAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new LocalizedAddonComponent( 0x1566, 1076272 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x1567, 1076272 ), 0, -1, 0 );
}
else // south
{
AddComponent( new LocalizedAddonComponent( 0x1564, 1076272 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x1565, 1076272 ), 1, 0, 0 );
}
}
public HangingSwordsAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class HangingSwordsDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new HangingSwordsAddon( m_East ); } }
public override int LabelNumber { get { return 1076272; } } // Hanging Swords
private bool m_East;
[Constructable]
public HangingSwordsDeed() : base()
{
LootType = LootType.Blessed;
}
public HangingSwordsDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private HangingSwordsDeed m_Deed;
public InternalGump( HangingSwordsDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076746, 0x7FFF, false, false ); // Please select your hanging sword position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,170 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class HouseLadderAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new HouseLadderDeed(); } }
[Constructable]
public HouseLadderAddon( int type ) : base()
{
switch ( type )
{
case 0: // castle south
AddComponent( new LocalizedAddonComponent( 0x3DB2, 1076791 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3F28, 1076791 ), 0, 1, 28 );
AddComponent( new LocalizedAddonComponent( 0x3DB4, 1076791 ), 0, 2, 20 );
break;
case 1: // castle east
AddComponent( new LocalizedAddonComponent( 0x3DB3, 1076791 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3F28, 1076791 ), 1, 0, 28 );
AddComponent( new LocalizedAddonComponent( 0x3DB5, 1076791 ), 2, 0, 20 );
break;
case 2: // castle north
AddComponent( new LocalizedAddonComponent( 0x2FDF, 1076791 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3F28, 1076791 ), 0, -1, 28 );
AddComponent( new LocalizedAddonComponent( 0x3DB6, 1076791 ), 0, -2, 20 );
break;
case 3: // castle west
AddComponent( new LocalizedAddonComponent( 0x2FDE, 1076791 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x3F28, 1076791 ), -1, 0, 28 );
AddComponent( new LocalizedAddonComponent( 0x3DB7, 1076791 ), -2, 0, 20 );
break;
case 4: // south
AddComponent( new LocalizedAddonComponent( 0x3DB2, 1076287 ), 0, 0, 0 );
break;
case 5: // east
AddComponent( new LocalizedAddonComponent( 0x3DB3, 1076287 ), 0, 0, 0 );
break;
case 6: // north
AddComponent( new LocalizedAddonComponent( 0x2FDF, 1076287 ), 0, 0, 0 );
break;
case 7: // west
AddComponent( new LocalizedAddonComponent( 0x2FDE, 1076287 ), 0, 0, 0 );
break;
}
}
public HouseLadderAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class HouseLadderDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new HouseLadderAddon( m_Type ); } }
public override int LabelNumber { get { return 1076287; } } // Ladder
private int m_Type;
[Constructable]
public HouseLadderDeed() : base()
{
LootType = LootType.Blessed;
}
public HouseLadderDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private HouseLadderDeed m_Deed;
public InternalGump( HouseLadderDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076780, 0x7FFF, false, false ); // Please select your ladder position. <br>Use the ladders marked (castle) <br> for accessing the tops of keeps <br> and castles.
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1076794, 0x7FFF, false, false ); // South (Castle)
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1076795, 0x7FFF, false, false ); // East (Castle)
AddButton( 19, 97, 0x845, 0x846, 3, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 95, 213, 20, 1076792, 0x7FFF, false, false ); // North (Castle)
AddButton( 19, 121, 0x845, 0x846, 4, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 119, 213, 20, 1076793, 0x7FFF, false, false ); // West (Castle)
AddButton( 19, 145, 0x845, 0x846, 5, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 143, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 169, 0x845, 0x846, 6, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 167, 213, 20, 1075387, 0x7FFF, false, false ); // East
AddButton( 19, 193, 0x845, 0x846, 7, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 191, 213, 20, 1075389, 0x7FFF, false, false ); // North
AddButton( 19, 217, 0x845, 0x846, 8, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 215, 213, 20, 1075390, 0x7FFF, false, false ); // West
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
if ( info.ButtonID >= 1 && info.ButtonID <= 8 )
{
m_Deed.m_Type = info.ButtonID - 1;
m_Deed.SendTarget( sender.Mobile );
}
}
}
}
}

View file

@ -0,0 +1,136 @@
using System;
using Server;
using Server.Spells;
using Server.Network;
namespace Server.Items
{
public class IronMaidenAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new IronMaidenDeed(); } }
public IronMaidenAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x1249, 1076288 ), 0, 0, 0 );
}
public IronMaidenAddon( Serial serial ) : base( serial )
{
}
public override void OnComponentUsed( AddonComponent c, Mobile from )
{
if ( from.InRange( this.GetWorldLocation(), 2 ) && from.InLOS( this.GetWorldLocation() ) )
{
if ( Utility.RandomBool() )
{
from.Location = Location;
c.ItemID = 0x124A;
Timer.DelayCall( TimeSpan.FromSeconds( 0.5 ), TimeSpan.FromSeconds( 0.5 ), 3, new TimerStateCallback( Activate ), new object[] { c, from } );
}
else
from.LocalOverheadMessage( MessageType.Regular, 0, 501777 ); // Hmm... you suspect that if you used this again, it might hurt.
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private void Activate( object obj )
{
object[] param = (object[]) obj;
if ( param[ 0 ] is AddonComponent && param[ 1 ] is Mobile )
Activate( (AddonComponent) param[ 0 ], (Mobile) param[ 1 ] );
}
public virtual void Activate( AddonComponent c, Mobile from )
{
c.ItemID += 1;
if ( c.ItemID >= 0x124D )
{
// blood
int amount = Utility.RandomMinMax( 3, 7 );
for ( int i = 0; i < amount; i++ )
{
int x = c.X + Utility.RandomMinMax( -1, 1 );
int y = c.Y + Utility.RandomMinMax( -1, 1 );
int z = c.Z;
if ( !c.Map.CanFit( x, y, z, 1, false, false, true ) )
{
z = c.Map.GetAverageZ( x, y );
if ( !c.Map.CanFit( x, y, z, 1, false, false, true ) )
continue;
}
Blood blood = new Blood( Utility.RandomMinMax( 0x122C, 0x122F ) );
blood.MoveToWorld( new Point3D( x, y, z ), c.Map );
}
if ( from.Female )
from.PlaySound( Utility.RandomMinMax( 0x150, 0x153 ) );
else
from.PlaySound( Utility.RandomMinMax( 0x15A, 0x15D ) );
from.LocalOverheadMessage( MessageType.Regular, 0, 501777 ); // Hmm... you suspect that if you used this again, it might hurt.
SpellHelper.Damage( TimeSpan.Zero, from, Utility.Dice( 2, 10, 5 ) );
Timer.DelayCall( TimeSpan.FromSeconds( 1 ), new TimerStateCallback( Deactivate ), c );
}
}
private void Deactivate( object obj )
{
if ( obj is AddonComponent )
( (AddonComponent) obj ).ItemID = 0x1249;
}
}
public class IronMaidenDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new IronMaidenAddon(); } }
public override int LabelNumber { get { return 1076288; } } // Iron Maiden
[Constructable]
public IronMaidenDeed() : base()
{
LootType = LootType.Blessed;
}
public IronMaidenDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0x3D8E, 0x3D8F )]
public class LargeFishingNetComponent : AddonComponent
{
public override int LabelNumber { get { return 1076285; } } // Large Fish Net
public LargeFishingNetComponent() : base( 0x3D8E )
{
}
public LargeFishingNetComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class LargeFishingNetAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new LargeFishingNetDeed(); } }
[Constructable]
public LargeFishingNetAddon() : base()
{
AddComponent( new LargeFishingNetComponent(), 0, 0, 0 );
}
public LargeFishingNetAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class LargeFishingNetDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new LargeFishingNetAddon(); } }
public override int LabelNumber { get { return 1076285; } } // Large Fish Net
[Constructable]
public LargeFishingNetDeed() : base()
{
LootType = LootType.Blessed;
}
public LargeFishingNetDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class PeachTrunkAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new PeachTrunkDeed(); } }
[Constructable]
public PeachTrunkAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xD9C, 1076786 ), 0, 0, 0 );
}
public PeachTrunkAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class PeachTrunkDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new PeachTrunkAddon(); } }
public override int LabelNumber { get { return 1076786; } } // Peach Trunk
[Constructable]
public PeachTrunkDeed() : base()
{
LootType = LootType.Blessed;
}
public PeachTrunkDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class PinkFancyRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new PinkFancyRugDeed(); } }
[Constructable]
public PinkFancyRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xAEE, 1076590 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAEF, 1076590 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF0, 1076590 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF1, 1076590 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF2, 1076590 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF3, 1076590 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF4, 1076590 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAF5, 1076590 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAEC, 1076590 ), 0, 0, 0 );
}
public PinkFancyRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class PinkFancyRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new PinkFancyRugAddon(); } }
public override int LabelNumber { get { return 1076590; } } // Pink fancy rug
[Constructable]
public PinkFancyRugDeed() : base()
{
LootType = LootType.Blessed;
}
public PinkFancyRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
namespace Server.Items
{
public class RedPlainRugAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new RedPlainRugDeed(); } }
[Constructable]
public RedPlainRugAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0xAC9, 1076588 ), 1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xACA, 1076588 ), -1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xACB, 1076588 ), -1, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xACC, 1076588 ), 1, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xACD, 1076588 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xACE, 1076588 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xACF, 1076588 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xAD0, 1076588 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0xAC6, 1076588 ), 0, 0, 0 );
}
public RedPlainRugAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class RedPlainRugDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new RedPlainRugAddon(); } }
public override int LabelNumber { get { return 1076588; } } // Red plain rug
[Constructable]
public RedPlainRugDeed() : base()
{
LootType = LootType.Blessed;
}
public RedPlainRugDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0x1E34, 0x1E35 )]
public class ScarecrowComponent : AddonComponent
{
public override int LabelNumber { get { return 1076608; } } // Scarecrow
public ScarecrowComponent() : base( 0x1E34 )
{
}
public ScarecrowComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ScarecrowAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new ScarecrowDeed(); } }
[Constructable]
public ScarecrowAddon() : base()
{
AddComponent( new ScarecrowComponent(), 0, 0, 0 );
}
public ScarecrowAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ScarecrowDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new ScarecrowAddon(); } }
public override int LabelNumber { get { return 1076608; } } // Scarecrow
[Constructable]
public ScarecrowDeed() : base()
{
LootType = LootType.Blessed;
}
public ScarecrowDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0x1EA3, 0x1EA4 )]
public class SmallFishingNetComponent : AddonComponent
{
public override int LabelNumber { get { return 1076286; } } // Small Fish Net
public SmallFishingNetComponent() : base( 0x1EA3 )
{
}
public SmallFishingNetComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SmallFishingNetAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new SmallFishingNetDeed(); } }
[Constructable]
public SmallFishingNetAddon() : base()
{
AddComponent( new SmallFishingNetComponent(), 0, 0, 0 );
}
public SmallFishingNetAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SmallFishingNetDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new SmallFishingNetAddon(); } }
public override int LabelNumber { get { return 1076286; } } // Small Fish Net
[Constructable]
public SmallFishingNetDeed() : base()
{
LootType = LootType.Blessed;
}
public SmallFishingNetDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,132 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class StoneStatueAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new StoneStatueDeed(); } }
[Constructable]
public StoneStatueAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new LocalizedAddonComponent( 0x139E, 1076284 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x139F, 1076284 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x13A0, 1076284 ), 0, -1, 0 );
}
else // south
{
AddComponent( new LocalizedAddonComponent( 0x129F, 1076284 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x12A0, 1076284 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0x12A1, 1076284 ), -1, 0, 0 );
}
}
public StoneStatueAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class StoneStatueDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new StoneStatueAddon( m_East ); } }
public override int LabelNumber { get { return 1076284; } } // Statue
private bool m_East;
[Constructable]
public StoneStatueDeed() : base()
{
LootType = LootType.Blessed;
}
public StoneStatueDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private StoneStatueDeed m_Deed;
public InternalGump( StoneStatueDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076579, 0x7FFF, false, false ); // Please select your statue position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0x3DAA, 0x3DA9 )]
public class SuitOfGoldArmorComponent : AddonComponent
{
public override int LabelNumber { get { return 1076265; } } // Suit of Gold Armor
public SuitOfGoldArmorComponent() : base( 0x3DAA )
{
}
public SuitOfGoldArmorComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SuitOfGoldArmorAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new SuitOfGoldArmorDeed(); } }
[Constructable]
public SuitOfGoldArmorAddon() : base()
{
AddComponent( new SuitOfGoldArmorComponent(), 0, 0, 0 );
}
public SuitOfGoldArmorAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SuitOfGoldArmorDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new SuitOfGoldArmorAddon(); } }
public override int LabelNumber { get { return 1076265; } } // Suit of Gold Armor
[Constructable]
public SuitOfGoldArmorDeed() : base()
{
LootType = LootType.Blessed;
}
public SuitOfGoldArmorDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,91 @@
using System;
namespace Server.Items
{
[Flipable( 0x3D86, 0x3D87 )]
public class SuitOfSilverArmorComponent : AddonComponent
{
public override int LabelNumber { get { return 1076266; } } // Suit of Silver Armor
public SuitOfSilverArmorComponent() : base( 0x3D86 )
{
}
public SuitOfSilverArmorComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SuitOfSilverArmorAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new SuitOfSilverArmorDeed(); } }
[Constructable]
public SuitOfSilverArmorAddon() : base()
{
AddComponent( new SuitOfSilverArmorComponent(), 0, 0, 0 );
}
public SuitOfSilverArmorAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SuitOfSilverArmorDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new SuitOfSilverArmorAddon(); } }
public override int LabelNumber { get { return 1076266; } } // Suit of Silver Armor
[Constructable]
public SuitOfSilverArmorDeed() : base()
{
LootType = LootType.Blessed;
}
public SuitOfSilverArmorDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class TableWithBlueClothAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new TableWithBlueClothDeed(); } }
[Constructable]
public TableWithBlueClothAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x118C, 1076276 ), 0, 0, 0 );
}
public TableWithBlueClothAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class TableWithBlueClothDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new TableWithBlueClothAddon(); } }
public override int LabelNumber { get { return 1076276; } } // Table With A Blue Tablecloth
[Constructable]
public TableWithBlueClothDeed() : base()
{
LootType = LootType.Blessed;
}
public TableWithBlueClothDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class TableWithOrangeClothAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new TableWithOrangeClothDeed(); } }
[Constructable]
public TableWithOrangeClothAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x118E, 1076278 ), 0, 0, 0 );
}
public TableWithOrangeClothAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class TableWithOrangeClothDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new TableWithOrangeClothAddon(); } }
public override int LabelNumber { get { return 1076278; } } // Table With An Orange Tablecloth
[Constructable]
public TableWithOrangeClothDeed() : base()
{
LootType = LootType.Blessed;
}
public TableWithOrangeClothDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class TableWithPurpleClothAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new TableWithPurpleClothDeed(); } }
[Constructable]
public TableWithPurpleClothAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x118B, 1076275 ), 0, 0, 0 );
}
public TableWithPurpleClothAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class TableWithPurpleClothDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new TableWithPurpleClothAddon(); } }
public override int LabelNumber { get { return 1076275; } } // Table With A Purple Tablecloth
[Constructable]
public TableWithPurpleClothDeed() : base()
{
LootType = LootType.Blessed;
}
public TableWithPurpleClothDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
namespace Server.Items
{
public class TableWithRedClothAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new TableWithRedClothDeed(); } }
[Constructable]
public TableWithRedClothAddon() : base()
{
AddComponent( new LocalizedAddonComponent( 0x118D, 1076277 ), 0, 0, 0 );
}
public TableWithRedClothAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class TableWithRedClothDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new TableWithRedClothAddon(); } }
public override int LabelNumber { get { return 1076277; } } // Table With A Red Tablecloth
[Constructable]
public TableWithRedClothDeed() : base()
{
LootType = LootType.Blessed;
}
public TableWithRedClothDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,134 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class UnmadeBedAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new UnmadeBedDeed(); } }
[Constructable]
public UnmadeBedAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new LocalizedAddonComponent( 0xA8C, 1076279 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xA8D, 1076279 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xA90, 1076279 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xA91, 1076279 ), -1, -1, 0 );
}
else // south
{
AddComponent( new LocalizedAddonComponent( 0xDB0, 1076279 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xDB1, 1076279 ), -1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0xDB4, 1076279 ), 0, -1, 0 );
AddComponent( new LocalizedAddonComponent( 0xDB5, 1076279 ), -1, -1, 0 );
}
}
public UnmadeBedAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class UnmadeBedDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new UnmadeBedAddon( m_East ); } }
public override int LabelNumber { get { return 1076279; } } // Unmade Bed
private bool m_East;
[Constructable]
public UnmadeBedDeed() : base()
{
LootType = LootType.Blessed;
}
public UnmadeBedDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private UnmadeBedDeed m_Deed;
public InternalGump( UnmadeBedDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076580, 0x7FFF, false, false ); // Pleae select your unmade bed position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,131 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class VanityAddon : BaseAddonContainer
{
public override BaseAddonContainerDeed Deed { get { return new VanityDeed(); } }
public override int LabelNumber { get { return 1074027; } } // Vanity
public override int DefaultGumpID { get { return 0x51; } }
public override int DefaultDropSound { get { return 0x42; } }
[Constructable]
public VanityAddon( bool east ) : base( east ? 0xA44 : 0xA3C )
{
if ( east ) // east
{
AddComponent( new AddonContainerComponent( 0xA45 ), 0, -1, 0 );
}
else // south
{
AddComponent( new AddonContainerComponent( 0xA3D ), -1, 0, 0 );
}
}
public VanityAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class VanityDeed : BaseAddonContainerDeed
{
public override BaseAddonContainer Addon { get { return new VanityAddon( m_East ); } }
public override int LabelNumber { get { return 1074027; } } // Vanity
private bool m_East;
[Constructable]
public VanityDeed() : base()
{
LootType = LootType.Blessed;
}
public VanityDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private VanityDeed m_Deed;
public InternalGump( VanityDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076744, 0x7FFF, false, false ); // Please select your vanity position.
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,112 @@
using System;
using Server;
using Server.Spells;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x3D98, 0x3D94 )]
public class WallTorchComponent : AddonComponent
{
public override int LabelNumber { get { return 1076282; } } // Wall Torch
public WallTorchComponent() : base( 0x3D98 )
{
}
public WallTorchComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( from.InRange( Location, 2 ) )
{
switch ( ItemID )
{
case 0x3D98: ItemID = 0x3D9B; break;
case 0x3D9B: ItemID = 0x3D98; break;
case 0x3D94: ItemID = 0x3D97; break;
case 0x3D97: ItemID = 0x3D94; break;
}
Effects.PlaySound( Location, Map, 0x3BE );
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WallTorchAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new WallTorchDeed(); } }
public WallTorchAddon() : base()
{
AddComponent( new WallTorchComponent(), 0, 0, 0 );
}
public WallTorchAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WallTorchDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new WallTorchAddon(); } }
public override int LabelNumber { get { return 1076282; } } // Wall Torch
[Constructable]
public WallTorchDeed() : base()
{
LootType = LootType.Blessed;
}
public WallTorchDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,159 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class WoodenCoffinComponent : AddonComponent
{
public override int LabelNumber { get { return 1076274; } } // Coffin
public WoodenCoffinComponent( int itemID ) : base( itemID )
{
}
public WoodenCoffinComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WoodenCoffinAddon : BaseAddon
{
public override BaseAddonDeed Deed { get { return new WoodenCoffinDeed(); } }
[Constructable]
public WoodenCoffinAddon( bool east ) : base()
{
if ( east ) // east
{
AddComponent( new WoodenCoffinComponent( 0x1C41 ), 0, 0, 0 );
AddComponent( new WoodenCoffinComponent( 0x1C42 ), 1, 0, 0 );
AddComponent( new WoodenCoffinComponent( 0x1C43 ), 2, 0, 0 );
}
else // south
{
AddComponent( new WoodenCoffinComponent( 0x1C4F ), 0, 0, 0 );
AddComponent( new WoodenCoffinComponent( 0x1C50 ), 0, 1, 0 );
AddComponent( new WoodenCoffinComponent( 0x1C51 ), 0, 2, 0 );
}
}
public WoodenCoffinAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WoodenCoffinDeed : BaseAddonDeed
{
public override BaseAddon Addon { get { return new WoodenCoffinAddon( m_East ); } }
public override int LabelNumber { get { return 1076274; } } // Coffin
private bool m_East;
[Constructable]
public WoodenCoffinDeed() : base()
{
LootType = LootType.Blessed;
}
public WoodenCoffinDeed( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
private void SendTarget( Mobile m )
{
base.OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private WoodenCoffinDeed m_Deed;
public InternalGump( WoodenCoffinDeed deed ) : base( 60, 36 )
{
m_Deed = deed;
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
AddHtmlLocalized( 14, 12, 273, 20, 1076748, 0x7FFF, false, false ); // Please select your coffin position
AddPage( 1 );
AddButton( 19, 49, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47, 213, 20, 1075386, 0x7FFF, false, false ); // South
AddButton( 19, 73, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 71, 213, 20, 1075387, 0x7FFF, false, false ); // East
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted || info.ButtonID == 0 )
return;
m_Deed.m_East = ( info.ButtonID != 1 );
m_Deed.SendTarget( sender.Mobile );
}
}
}
}

View file

@ -0,0 +1,58 @@
using System;
using Server;
using Server.Gumps;
namespace Server.Items
{
public interface ITokunoDyable
{
}
public class HeritageToken : Item
{
public override int LabelNumber { get { return 1076596; } } // A Heritage Token
[Constructable]
public HeritageToken() : base( 0x367A )
{
LootType = LootType.Blessed;
Weight = 5.0;
}
public HeritageToken( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( HeritageTokenGump ) );
from.SendGump( new HeritageTokenGump( this ) );
}
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
list.Add( 1070998, String.Format( "#{0}", 1076595 ) ); // Use this to redeem<br>Your Heritage Items
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,314 @@
using System;
using System.Collections;
using Server.Network;
using Server.Items;
using Server.Multis;
namespace Server.Items
{
public enum HolidayTreeType
{
Classic,
Modern
}
public class HolidayTree : Item, IAddon
{
private ArrayList m_Components;
private Mobile m_Placer;
[CommandProperty( AccessLevel.GameMaster )]
public Mobile Placer
{
get{ return m_Placer; }
set{ m_Placer = value; }
}
private class Ornament : Item
{
public override int LabelNumber{ get{ return 1041118; } } // a tree ornament
public Ornament( int itemID ) : base( itemID )
{
Movable = false;
}
public Ornament( 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();
}
}
private class TreeTrunk : Item
{
private HolidayTree m_Tree;
public override int LabelNumber{ get{ return 1041117; } } // a tree for the holidays
public TreeTrunk( HolidayTree tree, int itemID ) : base( itemID )
{
Movable = false;
MoveToWorld( tree.Location, tree.Map );
m_Tree = tree;
}
public TreeTrunk( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( m_Tree != null && !m_Tree.Deleted )
m_Tree.OnDoubleClick( from );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( m_Tree );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Tree = reader.ReadItem() as HolidayTree;
if ( m_Tree == null )
Delete();
break;
}
}
}
}
public override int LabelNumber{ get{ return 1041117; } } // a tree for the holidays
public HolidayTree( Mobile from, HolidayTreeType type, Point3D loc ) : base( 1 )
{
Movable = false;
MoveToWorld( loc, from.Map );
m_Placer = from;
m_Components = new ArrayList();
switch ( type )
{
case HolidayTreeType.Classic:
{
ItemID = 0xCD7;
AddItem( 0, 0, 0, new TreeTrunk( this, 0xCD6 ) );
AddOrnament( 0, 0, 2, 0xF22 );
AddOrnament( 0, 0, 9, 0xF18 );
AddOrnament( 0, 0, 15, 0xF20 );
AddOrnament( 0, 0, 19, 0xF17 );
AddOrnament( 0, 0, 20, 0xF24 );
AddOrnament( 0, 0, 20, 0xF1F );
AddOrnament( 0, 0, 20, 0xF19 );
AddOrnament( 0, 0, 21, 0xF1B );
AddOrnament( 0, 0, 28, 0xF2F );
AddOrnament( 0, 0, 30, 0xF23 );
AddOrnament( 0, 0, 32, 0xF2A );
AddOrnament( 0, 0, 33, 0xF30 );
AddOrnament( 0, 0, 34, 0xF29 );
AddOrnament( 0, 1, 7, 0xF16 );
AddOrnament( 0, 1, 7, 0xF1E );
AddOrnament( 0, 1, 12, 0xF0F );
AddOrnament( 0, 1, 13, 0xF13 );
AddOrnament( 0, 1, 18, 0xF12 );
AddOrnament( 0, 1, 19, 0xF15 );
AddOrnament( 0, 1, 25, 0xF28 );
AddOrnament( 0, 1, 29, 0xF1A );
AddOrnament( 0, 1, 37, 0xF2B );
AddOrnament( 1, 0, 13, 0xF10 );
AddOrnament( 1, 0, 14, 0xF1C );
AddOrnament( 1, 0, 16, 0xF14 );
AddOrnament( 1, 0, 17, 0xF26 );
AddOrnament( 1, 0, 22, 0xF27 );
break;
}
case HolidayTreeType.Modern:
{
ItemID = 0x1B7E;
AddOrnament( 0, 0, 2, 0xF2F );
AddOrnament( 0, 0, 2, 0xF20 );
AddOrnament( 0, 0, 2, 0xF22 );
AddOrnament( 0, 0, 5, 0xF30 );
AddOrnament( 0, 0, 5, 0xF15 );
AddOrnament( 0, 0, 5, 0xF1F );
AddOrnament( 0, 0, 5, 0xF2B );
AddOrnament( 0, 0, 6, 0xF0F );
AddOrnament( 0, 0, 7, 0xF1E );
AddOrnament( 0, 0, 7, 0xF24 );
AddOrnament( 0, 0, 8, 0xF29 );
AddOrnament( 0, 0, 9, 0xF18 );
AddOrnament( 0, 0, 14, 0xF1C );
AddOrnament( 0, 0, 15, 0xF13 );
AddOrnament( 0, 0, 15, 0xF20 );
AddOrnament( 0, 0, 16, 0xF26 );
AddOrnament( 0, 0, 17, 0xF12 );
AddOrnament( 0, 0, 18, 0xF17 );
AddOrnament( 0, 0, 20, 0xF1B );
AddOrnament( 0, 0, 23, 0xF28 );
AddOrnament( 0, 0, 25, 0xF18 );
AddOrnament( 0, 0, 25, 0xF2A );
AddOrnament( 0, 1, 7, 0xF16 );
break;
}
}
}
public override void OnAfterDelete()
{
for ( int i = 0; i < m_Components.Count; ++i )
((Item)m_Components[i]).Delete();
}
private void AddOrnament( int x, int y, int z, int itemID )
{
AddItem( x + 1, y + 1, z + 11, new Ornament( itemID ) );
}
private void AddItem( int x, int y, int z, Item item )
{
item.MoveToWorld( new Point3D( this.Location.X + x, this.Location.Y + y, this.Location.Z + z ), this.Map );
m_Components.Add( item );
}
public HolidayTree( Serial serial ) : base( serial )
{
}
public bool CouldFit( IPoint3D p, Map map )
{
return map.CanFit( (Point3D)p, 20 );
}
Item IAddon.Deed
{
get{ return new HolidayTreeDeed(); }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( m_Placer );
writer.Write( (int) m_Components.Count );
for ( int i = 0; i < m_Components.Count; ++i )
writer.Write( (Item)m_Components[i] );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Placer = reader.ReadMobile();
goto case 0;
}
case 0:
{
int count = reader.ReadInt();
m_Components = new ArrayList( count );
for ( int i = 0; i < count; ++i )
{
Item item = reader.ReadItem();
if ( item != null )
m_Components.Add( item );
}
break;
}
}
Timer.DelayCall( TimeSpan.Zero, ValidatePlacement );
}
public void ValidatePlacement()
{
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house == null )
{
HolidayTreeDeed deed = new HolidayTreeDeed();
deed.MoveToWorld( Location, Map );
Delete();
}
}
public override void OnDoubleClick( Mobile from )
{
if ( from.InRange( this.GetWorldLocation(), 1 ) )
{
if ( m_Placer == null || from == m_Placer || from.AccessLevel >= AccessLevel.GameMaster )
{
from.AddToBackpack( new HolidayTreeDeed() );
this.Delete();
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house != null && house.Addons.Contains( this ) )
{
house.Addons.Remove( this );
}
from.SendLocalizedMessage( 503393 ); // A deed for the tree has been placed in your backpack.
}
else
{
from.SendLocalizedMessage( 503396 ); // You cannot take this tree down.
}
}
else
{
from.SendLocalizedMessage( 500446 ); // That is too far away.
}
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using Server.Items;
using Server.Network;
namespace Server.Items
{
[Furniture]
[Flipable( 0x232A, 0x232B )]
public class GiftBox : BaseContainer
{
[Constructable]
public GiftBox() : this( Utility.RandomDyedHue() )
{
}
[Constructable]
public GiftBox( int hue ) : base( Utility.Random( 0x232A, 2 ) )
{
Weight = 2.0;
Hue = hue;
}
public GiftBox( 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,66 @@
using System;
using Server;
namespace Server.Items
{
public class GingerBreadHouseAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new GingerBreadHouseDeed(); } }
public GingerBreadHouseAddon()
{
for( int i=0x2be5; i<0x2be8; i++ )
{
LocalizedAddonComponent laoc = new LocalizedAddonComponent( i, 1077395 ); // Gingerbread House
laoc.Light = LightType.SouthSmall;
AddComponent( laoc, (i==0x2be5) ? -1 : 0, (i==0x2be7) ? -1 : 0, 0 );
}
}
public GingerBreadHouseAddon( 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 GingerBreadHouseDeed : BaseAddonDeed
{
public override int LabelNumber{ get{ return 1077394; } } //a Gingerbread House Deed
public override BaseAddon Addon{ get{ return new GingerBreadHouseAddon(); } }
[Constructable]
public GingerBreadHouseDeed()
{
Weight = 1.0;
LootType = LootType.Blessed;
}
public GingerBreadHouseDeed( 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,109 @@
using System;
namespace Server.Items
{
public class HolidayBell : Item
{
private static string[] m_StaffNames = new string[]
{
"Adrick",
"Alai",
"Bulldoz",
"Evocare",
"FierY-iCe",
"Greyburn",
"Hanse",
"Ignatz",
"Jalek",
"LadyMOI",
"Lord Krum",
"Malantus",
"Nimrond",
"Oaks",
"Prophet",
"Runesabre",
"Sage",
"Stellerex",
"T-Bone",
"Tajima",
"Tyrant",
"Vex"
};
private static int[] m_Hues = new int[]
{
0xA, 0x24, 0x42, 0x56, 0x1A, 0x4C, 0x3C, 0x60, 0x2E, 0x55, 0x23, 0x38, 0x482, 0x6, 0x10
};
[CommandProperty(AccessLevel.GameMaster)]
public int SoundID
{
get { return m_SoundID; }
set { m_SoundID = value; InvalidateProperties(); }
}
[CommandProperty(AccessLevel.GameMaster)]
public string Giver { get { return m_Maker; } set { m_Maker = value; } }
public override string DefaultName
{
get { return String.Format("A Holiday Bell From {0}", Giver); }
}
private string m_Maker;
private int m_SoundID;
[Constructable]
public HolidayBell()
: this(m_StaffNames[Utility.Random(m_StaffNames.Length)])
{
}
[Constructable]
public HolidayBell(string maker)
: base(0x1C12)
{
m_Maker = maker;
LootType = LootType.Blessed;
Hue = m_Hues[Utility.Random(m_Hues.Length)];
SoundID = 0x0F5 + Utility.Random(14);
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(GetWorldLocation(), 2))
{
from.SendLocalizedMessage(500446); // That is too far away.
}
else from.PlaySound(m_SoundID);
}
public HolidayBell(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
writer.Write((string)m_Maker);
writer.WriteEncodedInt((int)m_SoundID);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_Maker = reader.ReadString();
m_SoundID = reader.ReadEncodedInt();
Utility.Intern(ref m_Maker);
}
}
}

View file

@ -0,0 +1,188 @@
using System;
using Server.Mobiles;
using Server.Network;
using System.Collections.Generic;
namespace Server.Items
{
public class CandyCane : Food
{
private static Dictionary<Mobile, CandyCaneTimer> m_ToothAches;
public static Dictionary<Mobile, CandyCaneTimer> ToothAches
{
get { return m_ToothAches; }
set { m_ToothAches = value; }
}
public static void Initialize()
{
m_ToothAches = new Dictionary<Mobile, CandyCaneTimer>();
}
public class CandyCaneTimer : Timer
{
private int m_Eaten;
private Mobile m_Eater;
public Mobile Eater { get { return m_Eater; } }
public int Eaten { get { return m_Eaten; } set { m_Eaten = value; } }
public CandyCaneTimer( Mobile eater )
: base( TimeSpan.FromSeconds( 30 ), TimeSpan.FromSeconds( 30 ) )
{
m_Eater = eater;
Priority = TimerPriority.FiveSeconds;
Start();
}
protected override void OnTick()
{
--m_Eaten;
if ( m_Eater == null || m_Eater.Deleted || m_Eaten <= 0 )
{
Stop();
m_ToothAches.Remove( m_Eater );
}
else if ( m_Eater.Map != Map.Internal && m_Eater.Alive )
{
if ( m_Eaten > 60 )
{
m_Eater.Say( 1077388 + Utility.Random( 5 ) );
/* ARRGH! My tooth hurts sooo much!
* You just can't find a good Britannian dentist these days...
* My teeth!
* MAKE IT STOP!
* AAAH! It feels like someone kicked me in the teeth!
*/
if ( Utility.RandomBool() && m_Eater.Body.IsHuman && !m_Eater.Mounted )
m_Eater.Animate( 32, 5, 1, true, false, 0 );
}
else if ( m_Eaten == 60 )
{
m_Eater.SendLocalizedMessage( 1077393 ); // The extreme pain in your teeth subsides.
}
}
}
}
private static CandyCaneTimer EnsureTimer( Mobile from )
{
CandyCaneTimer timer;
if ( !m_ToothAches.TryGetValue( from, out timer ) )
m_ToothAches[from] = timer = new CandyCaneTimer( from );
return timer;
}
public static int GetToothAche( Mobile from )
{
CandyCaneTimer timer;
if ( m_ToothAches.TryGetValue( from, out timer ) )
return timer.Eaten;
return 0;
}
public static void SetToothAche( Mobile from, int value )
{
EnsureTimer( from ).Eaten = value;
}
[Constructable]
public CandyCane()
: this( 0x2bdd + Utility.Random( 4 ) )
{
}
public CandyCane( int itemID )
: base( itemID )
{
Stackable = false;
LootType = LootType.Blessed;
}
public override bool CheckHunger( Mobile from )
{
EnsureTimer( from ).Eaten += 32;
from.SendLocalizedMessage( 1077387 ); // You feel as if you could eat as much as you wanted!
return true;
}
public CandyCane( 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 GingerBreadCookie : Food
{
private readonly int[] m_Messages =
{
0,
1077396, // Noooo!
1077397, // Please don't eat me... *whimper*
1077405, // Not the face!
1077406, // Ahhhhhh! My foots gone!
1077407, // Please. No! I have gingerkids!
1077408, // No, no! Im really made of poison. Really.
1077409 // Run, run as fast as you can! You can't catch me! I'm the gingerbread man!
};
[Constructable]
public GingerBreadCookie()
: base( Utility.RandomBool() ? 0x2be1 : 0x2be2 )
{
Stackable = false;
LootType = LootType.Blessed;
}
public GingerBreadCookie( Serial serial )
: base( serial )
{
}
public override bool Eat( Mobile from )
{
int message = m_Messages[Utility.Random( m_Messages.Length )];
if ( message != 0 )
{
SendLocalizedMessageTo( from, message );
return false;
}
return base.Eat( from );
}
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,221 @@
using System;
namespace Server.Items
{
public class GiftBoxHues
{
public static int RandomGiftBoxHue{ get { return m_NormalHues[Utility.Random(m_NormalHues.Length)]; }}
public static int RandomNeonBoxHue{ get { return m_NeonHues[Utility.Random(m_NeonHues.Length)]; }}
/* there's possibly a couple more, but this is what we could verify on OSI */
private static readonly int[] m_NormalHues =
{
0x672,
0x454,
0x507,
0x4ac,
0x504,
0x84b,
0x495,
0x97c,
0x493,
0x4a8,
0x494,
0x4aa,
0xb8b,
0x84f,
0x491,
0x851,
0x503,
0xb8c,
0x4ab,
0x84B
};
private static readonly int[] m_NeonHues =
{
0x438,
0x424,
0x433,
0x445,
0x42b,
0x448
};
}
[FlipableAttribute(0x46A5, 0x46A6)]
public class GiftBoxRectangle : BaseContainer
{
public override int DefaultGumpID { get { return 0x11E; } }
[Constructable]
public GiftBoxRectangle()
: base(Utility.RandomBool() ? 0x46A5 : 0x46A6)
{
Hue = GiftBoxHues.RandomGiftBoxHue;
}
public GiftBoxRectangle(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 GiftBoxCube : BaseContainer
{
public override int DefaultGumpID { get { return 0x11B; } }
[Constructable]
public GiftBoxCube()
: base(0x46A2)
{
Hue = GiftBoxHues.RandomGiftBoxHue;
}
public GiftBoxCube(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 GiftBoxCylinder : BaseContainer
{
public override int DefaultGumpID { get { return 0x11C; } }
[Constructable]
public GiftBoxCylinder()
: base(0x46A3)
{
Hue = GiftBoxHues.RandomGiftBoxHue;
}
public GiftBoxCylinder(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 GiftBoxOctogon : BaseContainer
{
public override int DefaultGumpID { get { return 0x11D; } }
[Constructable]
public GiftBoxOctogon()
: base(0x46A4)
{
Hue = GiftBoxHues.RandomGiftBoxHue;
}
public GiftBoxOctogon(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 GiftBoxAngel : BaseContainer
{
public override int DefaultGumpID { get { return 0x11F; } }
[Constructable]
public GiftBoxAngel()
: base(0x46A7)
{
Hue = GiftBoxHues.RandomGiftBoxHue;
}
public GiftBoxAngel(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();
}
}
[Flipable(0x232A, 0x232B)]
public class GiftBoxNeon : BaseContainer
{
[Constructable]
public GiftBoxNeon()
: base(Utility.RandomBool() ? 0x232A : 0x232B)
{
Hue = GiftBoxHues.RandomNeonBoxHue;
}
public GiftBoxNeon(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,155 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class HolidayPottedPlant : Item
{
public override bool ForceShowProperties { get { return ObjectPropertyList.Enabled; } }
[Constructable]
public HolidayPottedPlant()
: this( Utility.RandomMinMax( 0x11C8, 0x11CC ) )
{
}
[Constructable]
public HolidayPottedPlant( int itemID )
: base( itemID )
{
}
public HolidayPottedPlant( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class PottedPlantDeed : Item
{
public override int LabelNumber { get { return 1041114; } } // A deed for a potted plant.
public override double DefaultWeight { get { return 1.0; } }
[Constructable]
public PottedPlantDeed()
: base( 0x14F0 )
{
LootType = LootType.Blessed;
}
public PottedPlantDeed( Serial serial )
: base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
{
from.SendLocalizedMessage( 1042038 ); // You must have the object in your backpack to use it.
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private PottedPlantDeed m_Deed;
public InternalGump( PottedPlantDeed deed ) : base( 100, 200 )
{
m_Deed = deed;
Closable = true;
Disposable = true;
Dragable = true;
Resizable = false;
AddPage( 0 );
AddBackground( 0, 0, 360, 195, 0xA28 );
AddPage( 1 );
AddLabel( 45, 15, 0, "Choose a Potted Plant:" );
AddItem( 45, 75, 0x11C8 );
AddButton( 55, 50, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddItem( 100, 75, 0x11C9 );
AddButton( 115, 50, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddItem( 160, 75, 0x11CA );
AddButton( 175, 50, 0x845, 0x846, 3, GumpButtonType.Reply, 0 );
AddItem( 225, 75, 0x11CB );
AddButton( 235, 50, 0x845, 0x846, 4, GumpButtonType.Reply, 0 );
AddItem( 280, 75, 0x11CC );
AddButton( 295, 50, 0x845, 0x846, 5, GumpButtonType.Reply, 0 );
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted )
return;
Mobile from = sender.Mobile;
if ( !m_Deed.IsChildOf( from.Backpack ) )
{
from.SendLocalizedMessage( 1042038 ); // You must have the object in your backpack to use it
return;
}
int index = info.ButtonID - 1;
if ( index >= 0 && index <= 4 )
{
HolidayPottedPlant plant = new HolidayPottedPlant( 0x11C8 + index );
if ( !from.PlaceInBackpack( plant ) )
{
plant.Delete();
from.SendLocalizedMessage( 1078837 ); // Your backpack is full! Please make room and try again.
}
else
{
m_Deed.Delete();
}
}
}
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using Server;
namespace Server.Items
{
public class HolidayTimepiece : Clock
{
public override int LabelNumber { get { return 1041113; } } // a holiday timepiece
public override double DefaultWeight { get { return 1.0; } }
[Constructable]
public HolidayTimepiece()
: base( 0x1086 )
{
Weight = DefaultWeight;
LootType = LootType.Blessed;
Layer = Layer.Bracelet;
}
public HolidayTimepiece( 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,167 @@
using System;
namespace Server.Items
{
public class IcicleLargeSouth : Item
{
[Constructable]
public IcicleLargeSouth()
: base(0x4572)
{
}
public IcicleLargeSouth(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class IcicleMedSouth : Item
{
[Constructable]
public IcicleMedSouth ()
: base(0x4573)
{
}
public IcicleMedSouth (Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class IcicleSmallSouth : Item
{
[Constructable]
public IcicleSmallSouth ()
: base(0x4574)
{
}
public IcicleSmallSouth (Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class IcicleLargeEast : Item
{
[Constructable]
public IcicleLargeEast ()
: base(0x4575)
{
}
public IcicleLargeEast (Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class IcicleMedEast : Item
{
[Constructable]
public IcicleMedEast ()
: base(0x4576)
{
}
public IcicleMedEast (Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class IcicleSmallEast : Item
{
[Constructable]
public IcicleSmallEast ()
: base(0x4577)
{
}
public IcicleSmallEast(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,125 @@
using System;
using Server.Mobiles;
using Server.Spells;
namespace Server.Items
{
public class IcyPatch : Item
{
public override int LabelNumber { get { return 1095159; } } //An Icy Patch
public override double DefaultWeight { get { return 5.0; } }
/* On OSI, the iceypatch with itemid 0x122a is "rarer", so we will give it 1:10 chance of creating it that way */
[Constructable]
public IcyPatch()
: this((Utility.Random(10) == 0) ? 0x122A : 0x122F)
{
}
public IcyPatch(int itemid)
: base (itemid)
{
Hue = 0x481;
}
public IcyPatch(Serial serial)
: base(serial)
{
}
public override bool OnMoveOver(Mobile m)
{
if (m is PlayerMobile && m.Alive && m.AccessLevel == AccessLevel.Player)
{
switch (Utility.Random(3))
{
case 0: RunSequence(m, 1095160, false); break; //You steadily walk over the slippery surface.
case 1: RunSequence(m, 1095161, true); break; //You skillfully manage to maintain your balance.
default: RunSequence(m, 1095162, true); break; //You lose your footing and ungracefully splatter on the ground.
}
}
return base.OnMoveOver(m);
}
public virtual void RunSequence(Mobile m, int message, bool freeze)
{
object[] arg = null;
if (freeze)
{
m.Frozen = freeze;
Timer.DelayCall(TimeSpan.FromSeconds((message==1095162) ? 2.0 : 1.25), new TimerStateCallback(EndFall_Callback), m);
}
m.SendLocalizedMessage(message);
if (message == 1095162)
{
if (m.Mounted)
{
m.Mount.Rider = null;
}
Point3D p = new Point3D(Location);
if (SpellHelper.FindValidSpawnLocation(Map, ref p, true))
{
Timer.DelayCall(TimeSpan.FromSeconds(0), new TimerStateCallback(Relocate_Callback), new object[] { m, p });
}
arg = new object[] { m, (21 + Utility.Random(2)), !m.Female ? 0x426 : 0x317 };
}
else if (message == 1095161)
{
arg = new object[] { m, 17, !m.Female ? 0x429 : 0x319 };
}
if (arg != null)
{
Timer.DelayCall(TimeSpan.FromSeconds(.4), new TimerStateCallback(BeginFall_Callback), arg);
}
}
private static void Relocate_Callback(object state)
{
object[] states = (object[])state;
Mobile m = (Mobile)states[0];
Point3D to = (Point3D)states[1];
m.MoveToWorld(to, m.Map);
}
private static void BeginFall_Callback(object state)
{
object[] states = (object[])state;
Mobile m = (Mobile)states[0];
int action = (int)states[1];
int sound = (int)states[2];
if (!m.Mounted)
{
m.Animate(action, 1, 1, false, true, 0);
}
m.PlaySound(sound);
}
private static void EndFall_Callback(object state)
{
((Mobile)state).Frozen = false;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,93 @@
using System;
using Server.Mobiles;
using Server.Network;
using System.Collections.Generic;
namespace Server.Items
{
public class Coal : Item
{
public override string DefaultName{ get { return "Coal"; }}
[Constructable]
public Coal() : base( 0x19b9 )
{
Stackable = false;
LootType=LootType.Blessed;
Hue = 0x965;
}
public Coal( 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 BadCard : Item
{
public override int LabelNumber{ get { return 1041428; }} // Maybe next year youll get a better...
[Constructable]
public BadCard() : base( 0x14ef )
{
int[] m_CardHues=new int[]{ 0x45, 0x27, 0x3d0 };
Hue = m_CardHues[Utility.Random(m_CardHues.Length)];
Stackable = false;
LootType=LootType.Blessed;
Movable=true;
}
public BadCard( 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 Spam : Food
{
[Constructable]
public Spam() : base( 0x1044 )
{
Stackable = false;
LootType=LootType.Blessed;
}
public Spam( 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,62 @@
using System;
using Server.Items;
using Server.Network;
namespace Server.Items
{
public class RedPoinsettia : Item
{
[Constructable]
public RedPoinsettia() : base( 0x2330 )
{
Weight = 1.0;
LootType = LootType.Blessed;
}
public RedPoinsettia( 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 WhitePoinsettia : Item
{
[Constructable]
public WhitePoinsettia() : base( 0x2331 )
{
Weight = 1.0;
LootType = LootType.Blessed;
}
public WhitePoinsettia( 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,311 @@
using System;
using Server;
namespace Server.Items
{
public class SnowGlobe : Item
{
public override double DefaultWeight { get { return 1.0; } }
public SnowGlobe()
: base( 0xE2F )
{
LootType = LootType.Blessed;
Light = LightType.Circle150;
}
public SnowGlobe( 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 enum SnowGlobeTypeOne
{
Britain,
Moonglow,
Minoc,
Magincia,
BuccaneersDen,
Trinsic,
Yew,
SkaraBrae,
Jhelom,
Nujelm,
Papua,
Delucia,
Cove,
Ocllo,
SerpentsHold,
EmpathAbbey,
TheLycaeum,
Vesper,
Wind
}
public class SnowGlobeOne : SnowGlobe
{
private SnowGlobeTypeOne m_Type;
[CommandProperty( AccessLevel.GameMaster )]
public SnowGlobeTypeOne Place
{
get { return m_Type; }
set { m_Type = value; InvalidateProperties(); }
}
public override int LabelNumber { get { return 1041454 + (int) m_Type; } }
[Constructable]
public SnowGlobeOne()
: this( (SnowGlobeTypeOne) Utility.Random( 19 ) )
{
}
[Constructable]
public SnowGlobeOne( SnowGlobeTypeOne type )
{
m_Type = type;
}
public SnowGlobeOne( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.WriteEncodedInt( (int) m_Type );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Type = (SnowGlobeTypeOne) reader.ReadEncodedInt();
break;
}
}
}
}
public enum SnowGlobeTypeTwo
{
AncientCitadel,
BlackthornesCastle,
CityofMontor,
CityofMistas,
ExodusLair,
LakeofFire,
Lakeshire,
PassofKarnaugh,
TheEtherealFortress,
TwinOaksTavern,
ChaosShrine,
ShrineofHumility,
ShrineofSacrifice,
ShrineofCompassion,
ShrineofHonor,
ShrineofHonesty,
ShrineofSpirituality,
ShrineofJustice,
ShrineofValor
}
public class SnowGlobeTwo : SnowGlobe
{
/* Oddly, these are not localized. */
private static readonly string[] m_PlaceNames = new string[]
{
/* AncientCitadel */ "Ancient Citadel",
/* BlackthornesCastle */ "Blackthorne's Castle",
/* CityofMontor */ "City of Montor",
/* CityofMistas */ "City of Mistas",
/* ExodusLair */ "Exodus' Lair",
/* LakeofFire */ "Lake of Fire",
/* Lakeshire */ "Lakeshire",
/* PassofKarnaugh */ "Pass of Karnaugh",
/* TheEtherealFortress */ "The Etheral Fortress",
/* TwinOaksTavern */ "Twin Oaks Tavern",
/* ChaosShrine */ "Chaos Shrine",
/* ShrineofHumility */ "Shrine of Humility",
/* ShrineofSacrifice */ "Shrine of Sacrifice",
/* ShrineofCompassion */ "Shrine of Compassion",
/* ShrineofHonor */ "Shrine of Honor",
/* ShrineofHonesty */ "Shrine of Honesty",
/* ShrineofSpirituality */ "Shrine of Spirituality",
/* ShrineofJustice */ "Shrine of Justice",
/* ShrineofValor */ "Shrine of Valor"
};
private SnowGlobeTypeTwo m_Type;
[CommandProperty( AccessLevel.GameMaster )]
public SnowGlobeTypeTwo Place
{
get { return m_Type; }
set { m_Type = value; InvalidateProperties(); }
}
public override string DefaultName
{
get
{
int idx = (int) m_Type;
if ( idx < 0 || idx >= m_PlaceNames.Length )
return "a snowy scene";
return String.Format( "a snowy scene of {0}", m_PlaceNames[idx] );
}
}
[Constructable]
public SnowGlobeTwo()
: this( (SnowGlobeTypeTwo) Utility.Random( 19 ) )
{
}
[Constructable]
public SnowGlobeTwo( SnowGlobeTypeTwo type )
{
m_Type = type;
}
public SnowGlobeTwo( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.WriteEncodedInt( (int) m_Type );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Type = (SnowGlobeTypeTwo) reader.ReadEncodedInt();
break;
}
}
}
}
public enum SnowGlobeTypeThree
{
Luna,
Umbra,
Zento,
Heartwood,
Covetous,
Deceit,
Destard,
Hythloth,
Khaldun,
Shame,
Wrong,
Doom,
TheCitadel,
ThePalaceofParoxysmus,
TheBlightedGrove,
ThePrismofLight
}
public class SnowGlobeThree : SnowGlobe
{
private SnowGlobeTypeThree m_Type;
[CommandProperty( AccessLevel.GameMaster )]
public SnowGlobeTypeThree Place
{
get { return m_Type; }
set { m_Type = value; InvalidateProperties(); }
}
public override int LabelNumber
{
get
{
if ( m_Type >= SnowGlobeTypeThree.Covetous )
return 1075440 + ( (int) m_Type - 4 );
return 1075294 + (int) m_Type;
}
}
[Constructable]
public SnowGlobeThree()
: this( (SnowGlobeTypeThree) Utility.Random( 16 ) )
{
}
[Constructable]
public SnowGlobeThree( SnowGlobeTypeThree type )
{
m_Type = type;
}
public SnowGlobeThree( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.WriteEncodedInt( (int) m_Type );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Type = (SnowGlobeTypeThree) reader.ReadEncodedInt();
break;
}
}
}
}
}

View file

@ -0,0 +1,42 @@
namespace Server.Items
{
public class SnowPileDeco : Item
{
public override string DefaultName{ get { return "Snow Pile"; } }
public override double DefaultWeight{ get { return 2.0; } }
private static readonly int[] m_Types = new int[] { 0x8E2, 0x8E0, 0x8E6, 0x8E5, 0x8E3 };
[Constructable]
public SnowPileDeco()
: this(m_Types[Utility.Random(m_Types.Length)])
{
}
[Constructable]
public SnowPileDeco( int itemid )
: base(itemid)
{
Hue = 0x481;
}
public SnowPileDeco(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,246 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x456E, 0x456F )]
public class SnowStatuePegasus : Item
{
public override bool ForceShowProperties { get { return ObjectPropertyList.Enabled; } }
[Constructable]
public SnowStatuePegasus()
: base( 0x456E )
{
}
public SnowStatuePegasus( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
[Flipable( 0x4578, 0x4579 )]
public class SnowStatueSeahorse : Item
{
public override bool ForceShowProperties { get { return ObjectPropertyList.Enabled; } }
[Constructable]
public SnowStatueSeahorse()
: base( 0x4578 )
{
}
public SnowStatueSeahorse( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
[Flipable( 0x457A, 0x457B )]
public class SnowStatueMermaid : Item
{
public override bool ForceShowProperties { get { return ObjectPropertyList.Enabled; } }
[Constructable]
public SnowStatueMermaid()
: base( 0x457A )
{
}
public SnowStatueMermaid( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
[Flipable( 0x457C, 0x457D )]
public class SnowStatueGriffon : Item
{
public override bool ForceShowProperties { get { return ObjectPropertyList.Enabled; } }
[Constructable]
public SnowStatueGriffon()
: base( 0x457C )
{
}
public SnowStatueGriffon( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SnowStatueDeed : Item
{
public override int LabelNumber { get { return 1114296; } } // snow statue deed
public override double DefaultWeight { get { return 1.0; } }
[Constructable]
public SnowStatueDeed()
: base( 0x14F0 )
{
LootType = LootType.Blessed;
}
public SnowStatueDeed( Serial serial )
: base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
{
from.CloseGump( typeof( InternalGump ) );
from.SendGump( new InternalGump( this ) );
}
else
{
from.SendLocalizedMessage( 1042038 ); // You must have the object in your backpack to use it.
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private class InternalGump : Gump
{
private SnowStatueDeed m_Deed;
public InternalGump( SnowStatueDeed deed ) : base( 100, 200 )
{
m_Deed = deed;
Closable = true;
Disposable = true;
Dragable = true;
Resizable = false;
AddPage( 0 );
AddBackground( 0, 0, 360, 225, 0xA28 );
AddPage( 1 );
AddLabel( 45, 15, 0, "Select One:" );
AddItem( 35, 75, 0x456E );
AddButton( 65, 50, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
AddItem( 120, 75, 0x4578 );
AddButton( 135, 50, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
AddItem( 190, 75, 0x457A );
AddButton( 205, 50, 0x845, 0x846, 3, GumpButtonType.Reply, 0 );
AddItem( 250, 75, 0x457C );
AddButton( 275, 50, 0x845, 0x846, 4, GumpButtonType.Reply, 0 );
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Deed == null || m_Deed.Deleted )
return;
Mobile from = sender.Mobile;
if ( !m_Deed.IsChildOf( from.Backpack ) )
{
from.SendLocalizedMessage( 1042038 ); // You must have the object in your backpack to use it
return;
}
Item statue = null;
switch ( info.ButtonID )
{
case 1: statue = new SnowStatuePegasus(); break;
case 2: statue = new SnowStatueSeahorse(); break;
case 3: statue = new SnowStatueMermaid(); break;
case 4: statue = new SnowStatueGriffon(); break;
}
if ( statue == null )
return;
if ( !from.PlaceInBackpack( statue ) )
{
statue.Delete();
from.SendLocalizedMessage( 1078837 ); // Your backpack is full! Please make room and try again.
}
else
{
m_Deed.Delete();
}
}
}
}
}

View file

@ -0,0 +1,62 @@
using System;
using Server.Items;
using Server.Network;
namespace Server.Items
{
public class BlueSnowflake : Item
{
[Constructable]
public BlueSnowflake() : base( 0x232E )
{
Weight = 1.0;
LootType = LootType.Blessed;
}
public BlueSnowflake( 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 WhiteSnowflake : Item
{
[Constructable]
public WhiteSnowflake() : base( 0x232F )
{
Weight = 1.0;
LootType = LootType.Blessed;
}
public WhiteSnowflake( 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,159 @@
using System;
using Server.Items;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x2328, 0x2329 )]
public class Snowman : Item, IDyable
{
public static string GetRandomTitle()
{
// All hail OSI staff
string[] titles = new string[]
{
/* 1 */ "Backflash",
/* 2 */ "Carbon",
/* 3 */ "Colbalistic",
/* 4 */ "Comforl",
/* 5 */ "Coppacchia",
/* 6 */ "Cyrus",
/* 7 */ "DannyB",
/* 8 */ "DJSoul",
/* 9 */ "DraconisRex",
/* 10 */ "Earia",
/* 11 */ "Foster",
/* 12 */ "Gonzo",
/* 13 */ "Haan",
/* 14 */ "Halona",
/* 15 */ "Hugo",
/* 16 */ "Hyacinth",
/* 17 */ "Imirian",
/* 18 */ "Jinsol",
/* 19 */ "Liciatia",
/* 20 */ "Loewen",
/* 21 */ "Loke",
/* 22 */ "Magnus",
/* 23 */ "Maleki",
/* 24 */ "Morpheus",
/* 25 */ "Obberron",
/* 26 */ "Odee",
/* 27 */ "Orbeus",
/* 28 */ "Pax",
/* 29 */ "Phields",
/* 30 */ "Pigpen",
/* 31 */ "Platinum",
/* 32 */ "Polpol",
/* 33 */ "Prume",
/* 34 */ "Quinnly",
/* 35 */ "Ragnarok",
/* 36 */ "Rend",
/* 37 */ "Roland",
/* 38 */ "RyanM",
/* 39 */ "Screach",
/* 40 */ "Seraph",
/* 41 */ "Silvani",
/* 42 */ "Sherbear",
/* 43 */ "SkyWalker",
/* 44 */ "Snark",
/* 45 */ "Sowl",
/* 46 */ "Spada",
/* 47 */ "Starblade",
/* 48 */ "Tenacious",
/* 49 */ "Tnez",
/* 50 */ "Wasia",
/* 51 */ "Zilo",
/* 52 */ "Zippy",
/* 53 */ "Zoer"
};
if ( titles.Length > 0 )
return titles[Utility.Random( titles.Length )];
return null;
}
private string m_Title;
[CommandProperty( AccessLevel.GameMaster )]
public string Title
{
get{ return m_Title; }
set{ m_Title = value; InvalidateProperties(); }
}
[Constructable]
public Snowman() : this( Utility.RandomDyedHue(), GetRandomTitle() )
{
}
[Constructable]
public Snowman( int hue ) : this( hue, GetRandomTitle() )
{
}
[Constructable]
public Snowman( string title ) : this( Utility.RandomDyedHue(), title )
{
}
[Constructable]
public Snowman( int hue, string title ) : base( Utility.Random( 0x2328, 2 ) )
{
Weight = 10.0;
Hue = hue;
LootType = LootType.Blessed;
m_Title = title;
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( m_Title != null )
list.Add( 1062841, m_Title ); // ~1_NAME~ the Snowman
}
public bool Dye( Mobile from, DyeTub sender )
{
if ( Deleted )
return false;
Hue = sender.DyedHue;
return true;
}
public Snowman( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( (string) m_Title );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Title = reader.ReadString();
break;
}
}
Utility.Intern( ref m_Title );
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
[Furniture]
[FlipableAttribute( 0x2bd9, 0x2bda )]
public class GreenStocking : BaseContainer
{
public override int DefaultGumpID{ get{ return 0x103; } }
public override int DefaultDropSound{ get{ return 0x42; } }
[Constructable]
public GreenStocking() : base ( Utility.Random( 0x2BD9, 2 ) )
{
}
public GreenStocking( 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();
}
}
[Furniture]
[FlipableAttribute( 0x2bdb, 0x2bdc )]
public class RedStocking : BaseContainer
{
public override int DefaultGumpID{ get{ return 0x103; } }
public override int DefaultDropSound{ get{ return 0x42; } }
[Constructable]
public RedStocking() : base ( Utility.Random( 0x2BDB, 2 ) )
{
}
public RedStocking( 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,37 @@
using System;
using Server.Items;
using Server.Network;
namespace Server.Items
{
[Flipable( 0x232A, 0x232B )]
public class WinterGiftPackage2003 : GiftBox
{
[Constructable]
public WinterGiftPackage2003()
{
DropItem( new Snowman() );
DropItem( new WreathDeed() );
DropItem( new BlueSnowflake() );
DropItem( new RedPoinsettia() );
}
public WinterGiftPackage2003( 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();
}
}
}

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