#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
169
Scripts/Items/Games/BaseBoard.cs
Normal file
169
Scripts/Items/Games/BaseBoard.cs
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseBoard : Container, ISecurable
|
||||
{
|
||||
private SecureLevel m_Level;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public SecureLevel Level
|
||||
{
|
||||
get{ return m_Level; }
|
||||
set{ m_Level = value; }
|
||||
}
|
||||
|
||||
public BaseBoard( int itemID ) : base( itemID )
|
||||
{
|
||||
CreatePieces();
|
||||
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public abstract void CreatePieces();
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
for ( int i = Items.Count - 1; i >= 0; --i )
|
||||
{
|
||||
if ( i < Items.Count )
|
||||
Items[i].Delete();
|
||||
}
|
||||
|
||||
CreatePieces();
|
||||
}
|
||||
|
||||
public void CreatePiece( BasePiece piece, int x, int y )
|
||||
{
|
||||
AddItem( piece );
|
||||
piece.Location = new Point3D( x, y, 0 );
|
||||
}
|
||||
|
||||
public override bool DisplaysContent{ get{ return false; } } // Do not display (x items, y stones)
|
||||
|
||||
public override bool IsDecoContainer{ get{ return false; } }
|
||||
|
||||
public BaseBoard( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 1 ); // version
|
||||
|
||||
writer.Write( (int)m_Level );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( version == 1 )
|
||||
m_Level = (SecureLevel)reader.ReadInt();
|
||||
|
||||
if ( Weight == 1.0 )
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public override TimeSpan DecayTime{ get{ return TimeSpan.FromDays( 1.0 ); } }
|
||||
|
||||
public override bool OnDragDrop( Mobile from, Item dropped )
|
||||
{
|
||||
BasePiece piece = dropped as BasePiece;
|
||||
|
||||
return ( piece != null && piece.Board == this && base.OnDragDrop( from, dropped ) );
|
||||
}
|
||||
|
||||
public override bool OnDragDropInto( Mobile from, Item dropped, Point3D point )
|
||||
{
|
||||
BasePiece piece = dropped as BasePiece;
|
||||
|
||||
if ( piece != null && piece.Board == this && base.OnDragDropInto( from, dropped, point ) )
|
||||
{
|
||||
Packet p = new PlaySound( 0x127, GetWorldLocation() );
|
||||
|
||||
p.Acquire();
|
||||
|
||||
if ( RootParent == from )
|
||||
{
|
||||
from.Send( p );
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ( NetState state in this.GetClientsInRange( 2 ) )
|
||||
state.Send( p );
|
||||
}
|
||||
|
||||
p.Release();
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
|
||||
{
|
||||
base.GetContextMenuEntries( from, list );
|
||||
|
||||
if ( ValidateDefault( from, this ) )
|
||||
list.Add( new DefaultEntry( from, this ) );
|
||||
|
||||
SetSecureLevelEntry.AddTo( from, this, list );
|
||||
}
|
||||
|
||||
public static bool ValidateDefault( Mobile from, BaseBoard board )
|
||||
{
|
||||
if ( from.AccessLevel >= AccessLevel.GameMaster )
|
||||
return true;
|
||||
|
||||
if ( !from.Alive )
|
||||
return false;
|
||||
|
||||
if ( board.IsChildOf( from.Backpack ) )
|
||||
return true;
|
||||
|
||||
object root = board.RootParent;
|
||||
|
||||
if ( root is Mobile && root != from )
|
||||
return false;
|
||||
|
||||
if ( board.Deleted || board.Map != from.Map || !from.InRange( board.GetWorldLocation(), 1 ) )
|
||||
return false;
|
||||
|
||||
BaseHouse house = BaseHouse.FindHouseAt( board );
|
||||
|
||||
return ( house != null && house.IsOwner( from ) );
|
||||
}
|
||||
|
||||
public class DefaultEntry : ContextMenuEntry
|
||||
{
|
||||
private Mobile m_From;
|
||||
private BaseBoard m_Board;
|
||||
|
||||
public DefaultEntry( Mobile from, BaseBoard board ) : base( 6162, from.AccessLevel >= AccessLevel.GameMaster ? -1 : 1 )
|
||||
{
|
||||
m_From = from;
|
||||
m_Board = board;
|
||||
}
|
||||
|
||||
public override void OnClick()
|
||||
{
|
||||
if ( BaseBoard.ValidateDefault( m_From, m_Board ) )
|
||||
m_Board.Reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue