This commit is contained in:
mark 2011-06-29 03:29:14 +00:00
parent e6562fda8c
commit b2b1229fb8
6 changed files with 140 additions and 36 deletions

View file

@ -37,18 +37,34 @@ namespace Server.Misc
private static CityInfo[] StartingCities = new CityInfo[]
{
new CityInfo( "Yew", "The Empath Abbey", 633, 858, 0 ),
new CityInfo( "Minoc", "The Barnacle", 2476, 413, 15 ),
new CityInfo( "Britain", "Sweet Dreams Inn", 1496, 1628, 10 ),
new CityInfo( "Moonglow", "The Scholars Inn", 4408, 1168, 0 ),
new CityInfo( "Trinsic", "The Traveler's Inn", 1845, 2745, 0 ),
new CityInfo( "Magincia", "The Great Horns Tavern", 3734, 2222, 20 ),
new CityInfo( "Jhelom", "The Mercenary Inn", 1374, 3826, 0 ),
new CityInfo( "Skara Brae", "The Falconer's Inn", 618, 2234, 0 ),
new CityInfo( "Vesper", "The Ironwood Inn", 2771, 976, 0 ),
new CityInfo( "Haven", "Buckler's Hideaway", 3667, 2625, 0 )
new CityInfo( "New Haven", "New Haven Bank", 1150168, 3667, 2625, 0 ),
new CityInfo( "Yew", "The Empath Abbey", 1075072, 633, 858, 0 ),
new CityInfo( "Minoc", "The Barnacle", 1075073, 2476, 413, 15 ),
new CityInfo( "Britain", "The Wayfarer's Inn", 1075074, 1602, 1591, 20 ),
new CityInfo( "Moonglow", "The Scholars Inn", 1075075, 4408, 1168, 0 ),
new CityInfo( "Trinsic", "The Traveler's Inn", 1075076, 1845, 2745, 0 ),
new CityInfo( "Jhelom", "The Mercenary Inn", 1075078, 1374, 3826, 0 ),
new CityInfo( "Skara Brae", "The Falconer's Inn", 1075079, 618, 2234, 0 ),
new CityInfo( "Vesper", "The Ironwood Inn", 1075080, 2771, 976, 0 )
};
/* Old Haven/Magincia Locations
new CityInfo( "Britain", "Sweet Dreams Inn", 1496, 1628, 10 );
// ..
// Trinsic
new CityInfo( "Magincia", "The Great Horns Tavern", 3734, 2222, 20 ),
// Jhelom
// ..
new CityInfo( "Haven", "Buckler's Hideaway", 3667, 2625, 0 )
if ( Core.AOS )
{
//CityInfo haven = new CityInfo( "Haven", "Uzeraan's Mansion", 3618, 2591, 0 );
CityInfo haven = new CityInfo( "Haven", "Uzeraan's Mansion", 3503, 2574, 14 );
StartingCities[StartingCities.Length - 1] = haven;
}
*/
private static bool PasswordCommandEnabled = false;
public static void Initialize()
@ -59,13 +75,6 @@ namespace Server.Misc
if ( PasswordCommandEnabled )
CommandSystem.Register( "Password", AccessLevel.Player, new CommandEventHandler( Password_OnCommand ) );
if ( Core.AOS )
{
//CityInfo haven = new CityInfo( "Haven", "Uzeraan's Mansion", 3618, 2591, 0 );
CityInfo haven = new CityInfo( "Haven", "Uzeraan's Mansion", 3503, 2574, 14 );
StartingCities[StartingCities.Length - 1] = haven;
}
}
[Usage( "Password <newPassword> <repeatPassword>" )]

View file

@ -8,8 +8,8 @@ namespace Server.Items
{
public static void Initialize()
{
TileData.ItemTable[0x2199].Flags = TileFlag.Wall | TileFlag.NoShoot;
TileData.ItemTable[0x2199].Height = 20;
TileData.ItemTable[0x21A2].Flags = TileFlag.Wall | TileFlag.NoShoot;
TileData.ItemTable[0x21A2].Height = 20;
}
public override string DefaultName
@ -18,7 +18,7 @@ namespace Server.Items
}
[Constructable]
public LOSBlocker() : base( 0x2199 )
public LOSBlocker() : base( 0x21A2 )
{
Movable = false;
}
@ -41,7 +41,7 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 0 );
writer.Write( (int) 1 );
}
public override void Deserialize( GenericReader reader )
@ -49,6 +49,9 @@ namespace Server.Items
base.Deserialize( reader );
int version = reader.ReadInt();
if ( version < 1 && ItemID == 0x2199 )
this.ItemID = 0x21A2;
}
public sealed class GMItemPacket : Packet

View file

@ -692,7 +692,6 @@ namespace Server.Misc
}
CityInfo city = GetStartLocation( args, young );
//CityInfo city = new CityInfo( "Britain", "Sweet Dreams Inn", 1496, 1628, 10, Map.Felucca );
newChar.MoveToWorld( city.Location, city.Map );

View file

@ -165,7 +165,9 @@ namespace Server.Network {
set {
m_Version = value;
if ( value >= m_Version7090 ) {
if ( value >= m_Version70130 ) {
_ProtocolChanges = ProtocolChanges.Version70130;
} else if ( value >= m_Version7090 ) {
_ProtocolChanges = ProtocolChanges.Version7090;
} else if ( value >= m_Version7000 ) {
_ProtocolChanges = ProtocolChanges.Version7000;
@ -196,6 +198,7 @@ namespace Server.Network {
private static ClientVersion m_Version60142 = new ClientVersion( "6.0.14.2" );
private static ClientVersion m_Version7000 = new ClientVersion( "7.0.0.0" );
private static ClientVersion m_Version7090 = new ClientVersion( "7.0.9.0" );
private static ClientVersion m_Version70130 = new ClientVersion( "7.0.13.0" );
private ProtocolChanges _ProtocolChanges;
@ -209,6 +212,7 @@ namespace Server.Network {
ExtendedSupportedFeatures = 0x00000040,
StygianAbyss = 0x00000080,
HighSeas = 0x00000100,
NewCharacterList = 0x00000200,
Version400a = NewSpellbook,
Version407a = Version400a | DamagePacket,
@ -218,7 +222,8 @@ namespace Server.Network {
Version6017 = Version6000 | ContainerGridLines,
Version60142 = Version6017 | ExtendedSupportedFeatures,
Version7000 = Version60142 | StygianAbyss,
Version7090 = Version7000 | HighSeas
Version7090 = Version7000 | HighSeas,
Version70130 = Version7090 | NewCharacterList
}
public bool NewSpellbook { get { return ((_ProtocolChanges & ProtocolChanges.NewSpellbook) != 0); } }
@ -230,6 +235,7 @@ namespace Server.Network {
public bool ExtendedSupportedFeatures { get { return ((_ProtocolChanges & ProtocolChanges.ExtendedSupportedFeatures) != 0); } }
public bool StygianAbyss { get { return ((_ProtocolChanges & ProtocolChanges.StygianAbyss) != 0); } }
public bool HighSeas { get { return ((_ProtocolChanges & ProtocolChanges.HighSeas) != 0); } }
public bool NewCharacterList { get { return ((_ProtocolChanges & ProtocolChanges.NewCharacterList) != 0); } }
public bool IsUOTDClient {
get {

View file

@ -2262,7 +2262,11 @@ namespace Server.Network
state.Send( SupportedFeatures.Instantiate( state ) );
state.Send( new CharacterList( state.Account, state.CityInfo ) );
if ( state.NewCharacterList ) {
state.Send( new CharacterList( state.Account, state.CityInfo ) );
} else {
state.Send( new CharacterListOld( state.Account, state.CityInfo ) );
}
}
else
{

View file

@ -3579,18 +3579,28 @@ namespace Server.Network
{
private string m_City;
private string m_Building;
private int m_Description;
private Point3D m_Location;
private Map m_Map;
public CityInfo( string city, string building, int x, int y, int z, Map m )
public CityInfo( string city, string building, int description, int x, int y, int z, Map m )
{
m_City = city;
m_Building = building;
m_Description = description;
m_Location = new Point3D( x, y, z );
m_Map = m;
}
public CityInfo( string city, string building, int x, int y, int z ) : this( city, building, x, y, z, Map.Trammel )
public CityInfo( string city, string building, int x, int y, int z, Map m ) : this( city, building, 0, x, y, z, m )
{
}
public CityInfo( string city, string building, int description, int x, int y, int z ) : this( city, building, description, x, y, z, Map.Trammel )
{
}
public CityInfo( string city, string building, int x, int y, int z ) : this( city, building, 0, x, y, z, Map.Trammel )
{
}
@ -3618,6 +3628,18 @@ namespace Server.Network
}
}
public int Description
{
get
{
return m_Description;
}
set
{
m_Description = value;
}
}
public int X
{
get
@ -3711,6 +3733,75 @@ namespace Server.Network
public sealed class CharacterList : Packet
{
public CharacterList( IAccount a, CityInfo[] info ) : base( 0xA9 )
{
this.EnsureCapacity( 11 + (a.Length * 60) + (info.Length * 89) );
int highSlot = -1;
for ( int i = 0; i < a.Length; ++i )
{
if ( a[i] != null )
highSlot = i;
}
int count = Math.Max( Math.Max( highSlot + 1, a.Limit ), 5 );
m_Stream.Write( (byte) count );
for ( int i = 0; i < count; ++i )
{
if ( a[i] != null )
{
m_Stream.WriteAsciiFixed( a[i].Name, 30 );
m_Stream.Fill( 30 ); // password
}
else
{
m_Stream.Fill( 60 );
}
}
m_Stream.Write( (byte) info.Length );
for ( int i = 0; i < info.Length; ++i )
{
CityInfo ci = info[i];
m_Stream.Write( (byte) i );
m_Stream.WriteAsciiFixed( ci.City, 32 );
m_Stream.WriteAsciiFixed( ci.Building, 32 );
m_Stream.Write( (int) ci.X );
m_Stream.Write( (int) ci.Y );
m_Stream.Write( (int) ci.Z );
m_Stream.Write( (int) ci.Map.MapID );
m_Stream.Write( (int) ci.Description );
m_Stream.Write( (int) 0 );
}
CharacterListFlags flags = ExpansionInfo.CurrentExpansion.CharacterListFlags;
if ( count > 6 )
flags |= (CharacterListFlags.SeventhCharacterSlot | CharacterListFlags.SixthCharacterSlot); // 7th Character Slot - TODO: Is SixthCharacterSlot Required?
else if ( count == 6 )
flags |= CharacterListFlags.SixthCharacterSlot; // 6th Character Slot
else if ( a.Limit == 1 )
flags |= (CharacterListFlags.SlotLimit & CharacterListFlags.OneCharacterSlot); // Limit Characters & One Character
m_Stream.Write( (int)(flags | m_AdditionalFlags) ); // Additional Flags
}
private static CharacterListFlags m_AdditionalFlags;
public static CharacterListFlags AdditionalFlags
{
get{ return m_AdditionalFlags; }
set{ m_AdditionalFlags = value; }
}
}
public sealed class CharacterListOld : Packet
{
public CharacterListOld( IAccount a, CityInfo[] info ) : base( 0xA9 )
{
this.EnsureCapacity( 9 + (a.Length * 60) + (info.Length * 63) );
@ -3759,15 +3850,7 @@ namespace Server.Network
else if ( a.Limit == 1 )
flags |= (CharacterListFlags.SlotLimit & CharacterListFlags.OneCharacterSlot); // Limit Characters & One Character
m_Stream.Write( (int)(flags | m_AdditionalFlags) ); // Additional Flags
}
private static CharacterListFlags m_AdditionalFlags;
public static CharacterListFlags AdditionalFlags
{
get{ return m_AdditionalFlags; }
set{ m_AdditionalFlags = value; }
m_Stream.Write( (int)(flags | CharacterList.AdditionalFlags) ); // Additional Flags
}
}