This commit is contained in:
eos 2013-02-10 02:10:03 +00:00
parent 661e2b3cda
commit 75d9694012
7 changed files with 532 additions and 2 deletions

View file

@ -12,7 +12,7 @@ namespace Server.Items
public TwilightLantern()
: base()
{
Hue = Utility.RandomBool() ? 142 : 947;
Hue = Utility.RandomBool() ? 244 : 997;
}
public override bool AllowEquipedCast( Mobile from )

View file

@ -0,0 +1,34 @@
using System;
using Server;
namespace Server.Items
{
[FlipableAttribute( 0x49CC, 0x49D0 )]
public class AnimatedHeartShapedBox : HeartShapedBox
{
[Constructable]
public AnimatedHeartShapedBox()
{
ItemID = 0x49CC;
}
public AnimatedHeartShapedBox( 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,274 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public abstract class StValentinesBear : Item
{
private string m_Owner;
private string m_Line1;
private string m_Line2;
private string m_Line3;
private DateTime m_EditLimit;
[CommandProperty( AccessLevel.GameMaster )]
public string Owner
{
get { return m_Owner; }
set { m_Owner = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public string Line1
{
get { return m_Line1; }
set { m_Line1 = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public string Line2
{
get { return m_Line2; }
set { m_Line2 = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public string Line3
{
get { return m_Line3; }
set { m_Line3 = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public DateTime EditLimit
{
get { return m_EditLimit; }
set { m_EditLimit = value; }
}
public bool IsSigned
{
get { return ( m_Line1 != null || m_Line2 != null || m_Line3 != null ); }
}
public bool CanSign
{
get { return ( !IsSigned || DateTime.Now <= m_EditLimit ); }
}
public StValentinesBear( int itemid, string name )
: base( itemid )
{
m_Owner = name;
LootType = LootType.Blessed;
}
public override void AddNameProperty( ObjectPropertyList list )
{
if ( m_Owner != null )
list.Add( 1150295, m_Owner ); // ~1_NAME~'s St. Valentine Bear
else
list.Add( 1150294 ); // St. Valentine Bear
AddLine( list, 1150301, m_Line1 ); // [ ~1_LINE0~ ]
AddLine( list, 1150302, m_Line2 ); // [ ~1_LINE1~ ]
AddLine( list, 1150303, m_Line3 ); // [ ~1_LINE2~ ]
}
private static void AddLine( ObjectPropertyList list, int cliloc, string line )
{
if ( line != null )
list.Add( cliloc, line );
}
public override void OnDoubleClick( Mobile from )
{
if ( !CupidsArrow.CheckSeason( from ) || !CanSign )
return;
if ( !IsChildOf( from.Backpack ) )
{
from.SendLocalizedMessage( 1080063 ); // This must be in your backpack to use it.
return;
}
from.SendGump( new InternalGump( this ) );
}
public StValentinesBear( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );
writer.Write( m_Owner );
writer.Write( m_Line1 );
writer.Write( m_Line2 );
writer.Write( m_Line3 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Owner = Utility.Intern( reader.ReadString() );
m_Line1 = Utility.Intern( reader.ReadString() );
m_Line2 = Utility.Intern( reader.ReadString() );
m_Line3 = Utility.Intern( reader.ReadString() );
}
private class InternalGump : Gump
{
private StValentinesBear m_Bear;
public InternalGump( StValentinesBear bear )
: base( 50, 50 )
{
m_Bear = bear;
AddPage( 0 );
AddBackground( 0, 0, 420, 320, 9300 );
AddHtml( 10, 10, 400, 21, "<CENTER>St. Valentine Bear</CENTER>", false, false );
AddHtmlLocalized( 10, 40, 400, 75, 1150293, 0, false, false ); // Enter up to three lines of personalized greeting for your St. Valentine Bear. You many enter up to 25 characters per line. Once you enter text, you will only be able to correct mistakes for 10 minutes.
AddHtmlLocalized( 10, 129, 400, 21, 1150296, 0, false, false ); // Line 1:
AddBackground( 10, 150, 400, 24, 9350 );
AddTextEntry( 15, 152, 390, 20, 0, 0, "", 25 );
AddHtmlLocalized( 10, 179, 400, 21, 1150297, 0, false, false ); // Line 2:
AddBackground( 10, 200, 400, 24, 9350 );
AddTextEntry( 15, 202, 390, 20, 0, 1, "", 25 );
AddHtmlLocalized( 10, 229, 400, 21, 1150298, 0, false, false ); // Line 3:
AddBackground( 10, 250, 400, 24, 9350 );
AddTextEntry( 15, 252, 390, 20, 0, 2, "", 25 );
AddButton( 15, 285, 242, 241, 0, GumpButtonType.Reply, 0 );
AddButton( 335, 285, 247, 248, 1, GumpButtonType.Reply, 0 );
}
public override void OnResponse( NetState sender, RelayInfo info )
{
Mobile from = sender.Mobile;
if ( m_Bear.Deleted || !m_Bear.IsChildOf( from.Backpack ) || !m_Bear.CanSign || info.ButtonID != 1 )
return;
string line1 = GetLine( info, 0 );
string line2 = GetLine( info, 1 );
string line3 = GetLine( info, 2 );
if ( string.IsNullOrEmpty( line1 )
|| string.IsNullOrEmpty( line2 )
|| string.IsNullOrEmpty( line3 ) )
{
from.SendMessage( "Lines cannot be left blank." );
return;
}
else if ( line1.Length > 25
|| line2.Length > 25
|| line3.Length > 25 )
{
from.SendMessage( "Lines may not exceed 25 characters." );
return;
}
if ( !m_Bear.IsSigned )
m_Bear.EditLimit = DateTime.Now + TimeSpan.FromMinutes( 10 );
m_Bear.Line1 = Utility.FixHtml( line1 );
m_Bear.Line2 = Utility.FixHtml( line2 );
m_Bear.Line3 = Utility.FixHtml( line3 );
from.SendMessage( "You add the personalized greeting to your St. Valentine Bear." );
}
private static string GetLine( RelayInfo info, int idx )
{
TextRelay tr = info.GetTextEntry( idx );
return ( tr == null ) ? null : tr.Text;
}
}
}
[FlipableAttribute( 0x48E0, 0x48E1 )]
public class StValentinesPanda : StValentinesBear
{
[Constructable]
public StValentinesPanda()
: this( null )
{
}
[Constructable]
public StValentinesPanda( string name )
: base( 0x48E0, name )
{
}
public StValentinesPanda( 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( 0x48E2, 0x48E3 )]
public class StValentinesPolarBear : StValentinesBear
{
[Constructable]
public StValentinesPolarBear()
: this( null )
{
}
[Constructable]
public StValentinesPolarBear( string name )
: base( 0x48E2, name )
{
}
public StValentinesPolarBear( 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,37 @@
using System;
using Server;
namespace Server.Items
{
[FlipableAttribute( 0x4F7C, 0x4F7D )]
public class CupidStatue : Item
{
public override int LabelNumber { get { return 1099220; } } // cupid statue
[Constructable]
public CupidStatue()
: base( 0x4F7D )
{
LootType = LootType.Blessed;
}
public CupidStatue( 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,127 @@
using System;
using Server;
using Server.Targeting;
namespace Server.Items
{
public class CupidsArrow : Item
{
// TODO: Check messages
public override int LabelNumber { get { return 1152270; } } // Cupid's Arrow 2012
private string m_From;
private string m_To;
[CommandProperty( AccessLevel.GameMaster )]
public string From
{
get { return m_From; }
set { m_From = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public string To
{
get { return m_To; }
set { m_To = value; InvalidateProperties(); }
}
public bool IsSigned
{
get { return ( m_From != null && m_To != null ); }
}
[Constructable]
public CupidsArrow()
: base( 0x4F7F )
{
LootType = LootType.Blessed;
}
public override void AddNameProperty( ObjectPropertyList list )
{
base.AddNameProperty( list );
if ( IsSigned )
list.Add( 1152273, String.Format( "{0}\t{1}", m_From, m_To ) ); // ~1_val~ is madly in love with ~2_val~
}
public static bool CheckSeason( Mobile from )
{
if ( DateTime.Now.Month == 2 )
return true;
from.SendLocalizedMessage( 1152318 ); // You may not use this item out of season.
return false;
}
public override void OnDoubleClick( Mobile from )
{
if ( IsSigned || !CheckSeason( from ) )
return;
if ( !IsChildOf( from.Backpack ) )
{
from.SendLocalizedMessage( 1080063 ); // This must be in your backpack to use it.
return;
}
from.BeginTarget( 10, false, TargetFlags.None, new TargetCallback( OnTarget ) );
from.SendMessage( "Who do you wish to use this on?" );
}
private void OnTarget( Mobile from, object targeted )
{
if ( IsSigned || !IsChildOf( from.Backpack ) )
return;
if ( targeted is Mobile )
{
Mobile m = (Mobile)targeted;
if ( !m.Alive )
{
from.SendLocalizedMessage( 1152269 ); // That target is dead and even Cupid's arrow won't make them love you.
return;
}
m_From = from.Name;
m_To = m.Name;
InvalidateProperties();
from.SendMessage( "You inscribe the arrow." );
}
else
{
from.SendMessage( "That is not a person." );
}
}
public CupidsArrow( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );
writer.Write( m_From );
writer.Write( m_To );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_From = Utility.Intern( reader.ReadString() );
m_To = Utility.Intern( reader.ReadString() );
}
}
}

View file

@ -0,0 +1,55 @@
using System;
using Server;
namespace Server.Items
{
[FlipableAttribute( 0x49CA, 0x49CB )]
public class HeartShapedBox : BaseContainer
{
public override int DefaultDropSound { get { return m_DropSound; } }
[Constructable]
public HeartShapedBox()
: base( 0x49CA )
{
}
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
{
PrepareSound( from );
return base.OnDragDropInto( from, item, p );
}
public override bool OnDragDrop( Mobile from, Item dropped )
{
PrepareSound( from );
return base.OnDragDrop( from, dropped );
}
private static int m_DropSound;
private static void PrepareSound( Mobile from )
{
m_DropSound = from.Female ? 0x430 : 0x320;
}
public HeartShapedBox( 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();
}
}
}