500 lines
16 KiB
C#
500 lines
16 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Gumps;
|
|
using Server.Multis;
|
|
using Server.Network;
|
|
using Server.Targeting;
|
|
using Server.Engines.VeteranRewards;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class WallBannerComponent : AddonComponent, IDyable
|
|
{
|
|
public override bool NeedsWall{ get{ return true; } }
|
|
public override Point3D WallPosition{ get{ return this.East ? new Point3D( -1, 0, 0 ) : new Point3D( 0, -1, 0 ); } }
|
|
|
|
public bool East{ get { return ((WallBanner)Addon).East; } }
|
|
|
|
public WallBannerComponent( int itemID ) : base( itemID )
|
|
{
|
|
}
|
|
|
|
public WallBannerComponent( 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 bool Dye( Mobile from, DyeTub sender )
|
|
{
|
|
if ( Deleted )
|
|
return false;
|
|
|
|
if ( Addon != null )
|
|
Addon.Hue = sender.DyedHue;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public class WallBanner : BaseAddon, IRewardItem
|
|
{
|
|
public override BaseAddonDeed Deed
|
|
{
|
|
get
|
|
{
|
|
WallBannerDeed deed = new WallBannerDeed();
|
|
deed.IsRewardItem = m_IsRewardItem;
|
|
|
|
return deed;
|
|
}
|
|
}
|
|
|
|
private bool m_IsRewardItem;
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public bool IsRewardItem
|
|
{
|
|
get{ return m_IsRewardItem; }
|
|
set{ m_IsRewardItem = value; InvalidateProperties(); }
|
|
}
|
|
|
|
private bool m_East;
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public bool East
|
|
{
|
|
get{ return m_East; }
|
|
set{ m_IsRewardItem = value; InvalidateProperties(); }
|
|
}
|
|
|
|
[Constructable]
|
|
public WallBanner( int bannerID ) : base()
|
|
{
|
|
m_East = ((bannerID % 2) == 1 );
|
|
|
|
switch ( bannerID )
|
|
{
|
|
case 1:
|
|
AddComponent( new WallBannerComponent( 0x161F ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x161E ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x161D ), 0, 2, 0 );
|
|
break;
|
|
case 2:
|
|
AddComponent( new WallBannerComponent( 0x1586 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1587 ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1588 ), 2, 0, 0 );
|
|
break;
|
|
case 3:
|
|
AddComponent( new WallBannerComponent( 0x1622 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1621 ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1620 ), 0, 2, 0 );
|
|
break;
|
|
case 4:
|
|
AddComponent( new WallBannerComponent( 0x1589 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x158A ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x158B ), 2, 0, 0 );
|
|
break;
|
|
case 5:
|
|
AddComponent( new WallBannerComponent( 0x1625 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1624 ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1623 ), 0, 2, 0 );
|
|
break;
|
|
case 6:
|
|
AddComponent( new WallBannerComponent( 0x158C ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x158D ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x158E ), 2, 0, 0 );
|
|
break;
|
|
case 7:
|
|
AddComponent( new WallBannerComponent( 0x1628 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1627 ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1626 ), 0, 2, 0 );
|
|
break;
|
|
case 8:
|
|
AddComponent( new WallBannerComponent( 0x1590 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1591 ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x158F ), 2, 0, 0 );
|
|
break;
|
|
case 9:
|
|
AddComponent( new WallBannerComponent( 0x162A ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1629 ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1626 ), 0, 2, 0 );
|
|
break;
|
|
case 10:
|
|
AddComponent( new WallBannerComponent( 0x1592 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1593 ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x158F ), 2, 0, 0 );
|
|
break;
|
|
case 11:
|
|
AddComponent( new WallBannerComponent( 0x162D ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x162C ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x162B ), 0, 2, 0 );
|
|
break;
|
|
case 12:
|
|
AddComponent( new WallBannerComponent( 0x1594 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1595 ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1596 ), 2, 0, 0 );
|
|
break;
|
|
case 13:
|
|
AddComponent( new WallBannerComponent( 0x1632 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1631 ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x162E ), 0, 2, 0 );
|
|
break;
|
|
case 14:
|
|
AddComponent( new WallBannerComponent( 0x1598 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x159B ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x159C ), 2, 0, 0 );
|
|
break;
|
|
case 15:
|
|
AddComponent( new WallBannerComponent( 0x1633 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1630 ), 0, 1, 0 );
|
|
AddComponent( new WallBannerComponent( 0x162F ), 0, 2, 0 );
|
|
break;
|
|
case 16:
|
|
AddComponent( new WallBannerComponent( 0x1599 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x159A ), 1, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x159D ), 2, 0, 0 );
|
|
break;
|
|
|
|
|
|
case 17:
|
|
AddComponent( new WallBannerComponent( 0x1610 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x160F ), 0, 1, 0 );
|
|
break;
|
|
case 18:
|
|
AddComponent( new WallBannerComponent( 0x15A0 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15A1 ), 1, 0, 0 );
|
|
break;
|
|
|
|
case 19:
|
|
AddComponent( new WallBannerComponent( 0x1612 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1611 ), 0, 1, 0 );
|
|
break;
|
|
case 20:
|
|
AddComponent( new WallBannerComponent( 0x15A2 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15A3 ), 1, 0, 0 );
|
|
break;
|
|
|
|
case 21:
|
|
AddComponent( new WallBannerComponent( 0x1614 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1613 ), 0, 1, 0 );
|
|
break;
|
|
case 22:
|
|
AddComponent( new WallBannerComponent( 0x15A4 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15A5 ), 1, 0, 0 );
|
|
break;
|
|
|
|
case 23:
|
|
AddComponent( new WallBannerComponent( 0x1616 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1615 ), 0, 1, 0 );
|
|
break;
|
|
case 24:
|
|
AddComponent( new WallBannerComponent( 0x15A6 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15A7 ), 1, 0, 0 );
|
|
break;
|
|
|
|
case 25:
|
|
AddComponent( new WallBannerComponent( 0x1618 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1617 ), 0, 1, 0 );
|
|
break;
|
|
case 26:
|
|
AddComponent( new WallBannerComponent( 0x15A8 ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15A9 ), 1, 0, 0 );
|
|
break;
|
|
|
|
case 27:
|
|
AddComponent( new WallBannerComponent( 0x161A ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x1619 ), 0, 1, 0 );
|
|
break;
|
|
case 28:
|
|
AddComponent( new WallBannerComponent( 0x15AA ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15AB ), 1, 0, 0 );
|
|
break;
|
|
|
|
case 29:
|
|
AddComponent( new WallBannerComponent( 0x161C ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x161B ), 0, 1, 0 );
|
|
break;
|
|
case 30:
|
|
AddComponent( new WallBannerComponent( 0x15AC ), 0, 0, 0 );
|
|
AddComponent( new WallBannerComponent( 0x15AD ), 1, 0, 0 );
|
|
break;
|
|
}
|
|
}
|
|
|
|
public WallBanner( Serial serial ) : base( serial )
|
|
{
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.WriteEncodedInt( 0 ); // version
|
|
|
|
writer.Write( (bool) m_East );
|
|
writer.Write( (bool) m_IsRewardItem );
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
|
|
m_East = reader.ReadBool();
|
|
m_IsRewardItem = reader.ReadBool();
|
|
}
|
|
}
|
|
|
|
public class WallBannerDeed : BaseAddonDeed, IRewardItem
|
|
{
|
|
public override int LabelNumber{ get{ return 1080549; } } // Wall Banner Deed
|
|
|
|
public override BaseAddon Addon
|
|
{
|
|
get
|
|
{
|
|
WallBanner addon = new WallBanner( m_BannerID );
|
|
addon.IsRewardItem = m_IsRewardItem;
|
|
|
|
return addon;
|
|
}
|
|
}
|
|
|
|
private int m_BannerID;
|
|
private bool m_IsRewardItem;
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public bool IsRewardItem
|
|
{
|
|
get{ return m_IsRewardItem; }
|
|
set{ m_IsRewardItem = value; InvalidateProperties(); }
|
|
}
|
|
|
|
[Constructable]
|
|
public WallBannerDeed() : base()
|
|
{
|
|
LootType = LootType.Blessed;
|
|
}
|
|
|
|
public WallBannerDeed( Serial serial ) : base( serial )
|
|
{
|
|
}
|
|
|
|
public override void GetProperties( ObjectPropertyList list )
|
|
{
|
|
base.GetProperties( list );
|
|
|
|
if ( m_IsRewardItem )
|
|
list.Add( 1076225 ); // 9th Year Veteran Reward
|
|
}
|
|
|
|
public override void OnDoubleClick( Mobile from )
|
|
{
|
|
if ( m_IsRewardItem && !RewardSystem.CheckIsUsableBy( from, this, null ) )
|
|
return;
|
|
|
|
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 void Use( Mobile m, int bannerID )
|
|
{
|
|
m_BannerID = bannerID;
|
|
|
|
base.OnDoubleClick( m );
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.WriteEncodedInt( 0 ); // version
|
|
|
|
writer.Write( (bool) m_IsRewardItem );
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
|
|
m_IsRewardItem = reader.ReadBool();
|
|
}
|
|
|
|
private class InternalGump : Gump
|
|
{
|
|
private WallBannerDeed m_WallBanner;
|
|
|
|
public InternalGump( WallBannerDeed WallBanner ) : base( 150, 50 )
|
|
{
|
|
m_WallBanner = WallBanner;
|
|
|
|
Closable = true;
|
|
Disposable = true;
|
|
Dragable = true;
|
|
Resizable = false;
|
|
|
|
AddBackground( 25, 0, 500, 265, 0xA28 );
|
|
AddLabel( 70, 12, 0x3E3, "Choose a Wall Banner:" );
|
|
|
|
AddPage( 1 );
|
|
|
|
AddItem( 55, 110, 0x161D );
|
|
AddItem( 75, 90, 0x161E );
|
|
AddItem( 95, 70, 0x161F );
|
|
AddButton( 70, 50, 0x845, 0x846, 1, GumpButtonType.Reply, 0 );
|
|
AddItem( 105, 70, 0x1586 );
|
|
AddItem( 125, 90, 0x1587 );
|
|
AddItem( 145, 110, 0x1588 );
|
|
AddButton( 145, 50, 0x845, 0x846, 2, GumpButtonType.Reply, 0 );
|
|
AddItem( 200, 110, 0x1620 );
|
|
AddItem( 220, 90, 0x1621 );
|
|
AddItem( 240, 70, 0x1622 );
|
|
AddButton( 220, 50, 0x845, 0x846, 3, GumpButtonType.Reply, 0 );
|
|
AddItem( 250, 70, 0x1589 );
|
|
AddItem( 270, 90, 0x158A );
|
|
AddItem( 290, 110, 0x158B );
|
|
AddButton( 300, 50, 0x845, 0x846, 4, GumpButtonType.Reply, 0 );
|
|
AddItem( 350, 110, 0x1623 );
|
|
AddItem( 370, 90, 0x1624 );
|
|
AddItem( 390, 70, 0x1625 );
|
|
AddButton( 365, 50, 0x845, 0x846, 5, GumpButtonType.Reply, 0 );
|
|
AddItem( 400, 70, 0x158C );
|
|
AddItem( 420, 90, 0x158D );
|
|
AddItem( 440, 110, 0x158E );
|
|
AddButton( 445, 50, 0x845, 0x846, 6, GumpButtonType.Reply, 0 );
|
|
AddButton( 455, 205, 0x8B0, 0x8B0, 0, GumpButtonType.Page, 2 );
|
|
|
|
AddPage( 2 );
|
|
|
|
AddItem( 52, 110, 0x1626 );
|
|
AddItem( 72, 90, 0x1627 );
|
|
AddItem( 95, 70, 0x1628 );
|
|
AddButton( 70, 50, 0x845, 0x846, 7, GumpButtonType.Reply, 0 );
|
|
AddItem( 105, 70, 0x1590 );
|
|
AddItem( 125, 90, 0x1591 );
|
|
AddItem( 145, 110, 0x158F );
|
|
AddButton( 145, 50, 0x845, 0x846, 8, GumpButtonType.Reply, 0 );
|
|
AddItem( 197, 110, 0x1626 );
|
|
AddItem( 217, 90, 0x1629 );
|
|
AddItem( 240, 70, 0x162A );
|
|
AddButton( 220, 50, 0x845, 0x846, 9, GumpButtonType.Reply, 0 );
|
|
AddItem( 250, 70, 0x1592 );
|
|
AddItem( 270, 90, 0x1593 );
|
|
AddItem( 290, 110, 0x158F );
|
|
AddButton( 300, 50, 0x845, 0x846, 10, GumpButtonType.Reply, 0 );
|
|
AddItem( 340, 110, 0x162B );
|
|
AddItem( 363, 90, 0x162C );
|
|
AddItem( 385, 70, 0x162D );
|
|
AddButton( 365, 50, 0x845, 0x846, 11, GumpButtonType.Reply, 0 );
|
|
AddItem( 395, 70, 0x1594 );
|
|
AddItem( 417, 90, 0x1595 );
|
|
AddItem( 439, 111, 0x1596 );
|
|
AddButton( 445, 50, 0x845, 0x846, 12, GumpButtonType.Reply, 0 );
|
|
AddButton( 70, 205, 0x8AF, 0x8AF, 0, GumpButtonType.Page, 1 );
|
|
AddButton( 455, 205, 0x8B0, 0x8B0, 0, GumpButtonType.Page, 3 );
|
|
|
|
AddPage( 3 );
|
|
|
|
AddItem( 55, 110, 0x162E );
|
|
AddItem( 75, 93, 0x1631 );
|
|
AddItem( 95, 70, 0x1632 );
|
|
AddButton( 70, 50, 0x845, 0x846, 13, GumpButtonType.Reply, 0 );
|
|
AddItem( 118, 70, 0x1598 );
|
|
AddItem( 138, 94, 0x159B );
|
|
AddItem( 159, 113, 0x159C );
|
|
AddButton( 160, 50, 0x845, 0x846, 14, GumpButtonType.Reply, 0 );
|
|
AddItem( 219, 111, 0x162F );
|
|
AddItem( 238, 94, 0x1630 );
|
|
AddItem( 258, 70, 0x1633 );
|
|
AddButton( 240, 50, 0x845, 0x846, 15, GumpButtonType.Reply, 0 );
|
|
AddItem( 279, 70, 0x1599 );
|
|
AddItem( 298, 93, 0x159A );
|
|
AddItem( 319, 113, 0x159D );
|
|
AddButton( 320, 50, 0x845, 0x846, 16, GumpButtonType.Reply, 0 );
|
|
AddItem( 380, 90, 0x160F );
|
|
AddItem( 400, 70, 0x1610 );
|
|
AddButton( 390, 50, 0x845, 0x846, 17, GumpButtonType.Reply, 0 );
|
|
AddItem( 420, 70, 0x15A0 );
|
|
AddItem( 440, 90, 0x15A1 );
|
|
AddButton( 455, 50, 0x845, 0x846, 18, GumpButtonType.Reply, 0 );
|
|
AddButton( 70, 205, 0x8AF, 0x8AF, 0, GumpButtonType.Page, 2 );
|
|
AddButton( 455, 205, 0x8B0, 0x8B0, 0, GumpButtonType.Page, 4 );
|
|
|
|
AddPage( 4 );
|
|
|
|
AddItem( 55, 90, 0x1611 );
|
|
AddItem( 75, 70, 0x1612 );
|
|
AddButton( 70, 50, 0x845, 0x846, 19, GumpButtonType.Reply, 0 );
|
|
AddItem( 105, 70, 0x15A2 );
|
|
AddItem( 125, 90, 0x15A3 );
|
|
AddButton( 145, 50, 0x845, 0x846, 20, GumpButtonType.Reply, 0 );
|
|
AddItem( 200, 84, 0x1613 );
|
|
AddItem( 220, 70, 0x1614 );
|
|
AddButton( 215, 50, 0x845, 0x846, 21, GumpButtonType.Reply, 0 );
|
|
AddItem( 250, 70, 0x15A4 );
|
|
AddItem( 270, 84, 0x15A5 );
|
|
AddButton( 290, 50, 0x845, 0x846, 22, GumpButtonType.Reply, 0 );
|
|
AddItem( 350, 90, 0x1615 );
|
|
AddItem( 370, 70, 0x1616 );
|
|
AddButton( 365, 50, 0x845, 0x846, 23, GumpButtonType.Reply, 0 );
|
|
AddItem( 400, 70, 0x15A6 );
|
|
AddItem( 420, 90, 0x15A7 );
|
|
AddButton( 445, 50, 0x845, 0x846, 24, GumpButtonType.Reply, 0 );
|
|
AddButton( 70, 205, 0x8AF, 0x8AF, 0, GumpButtonType.Page, 3 );
|
|
AddButton( 455, 205, 0x8B0, 0x8B0, 0, GumpButtonType.Page, 5 );
|
|
|
|
AddPage( 5 );
|
|
|
|
AddItem( 55, 90, 0x1617 );
|
|
AddItem( 77, 70, 0x1618 );
|
|
AddButton( 70, 50, 0x845, 0x846, 25, GumpButtonType.Reply, 0 );
|
|
AddItem( 105, 70, 0x15A8 );
|
|
AddItem( 127, 90, 0x15A9 );
|
|
AddButton( 145, 50, 0x845, 0x846, 26, GumpButtonType.Reply, 0 );
|
|
AddItem( 200, 90, 0x1619 );
|
|
AddItem( 222, 70, 0x161A );
|
|
AddButton( 220, 50, 0x845, 0x846, 27, GumpButtonType.Reply, 0 );
|
|
AddItem( 250, 70, 0x15AA );
|
|
AddItem( 272, 90, 0x15AB );
|
|
AddButton( 300, 50, 0x845, 0x846, 28, GumpButtonType.Reply, 0 );
|
|
AddItem( 350, 90, 0x161B );
|
|
AddItem( 372, 70, 0x161C );
|
|
AddButton( 365, 50, 0x845, 0x846, 29, GumpButtonType.Reply, 0 );
|
|
AddItem( 400, 70, 0x15AC );
|
|
AddItem( 422, 90, 0x15AD );
|
|
AddButton( 445, 50, 0x845, 0x846, 30, GumpButtonType.Reply, 0 );
|
|
AddButton( 70, 205, 0x8AF, 0x8AF, 0, GumpButtonType.Page, 4 );
|
|
}
|
|
|
|
public override void OnResponse( NetState sender, RelayInfo info )
|
|
{
|
|
if ( m_WallBanner == null || m_WallBanner.Deleted )
|
|
return;
|
|
|
|
if ( info.ButtonID > 0 && info.ButtonID < 31 )
|
|
m_WallBanner.Use( sender.Mobile, info.ButtonID );
|
|
}
|
|
}
|
|
}
|
|
}
|