branch sync

This commit is contained in:
mark 2007-11-27 06:36:57 +00:00
parent 0b19ae183e
commit 162cf6f0a9
13 changed files with 226 additions and 40 deletions

View file

@ -246,7 +246,7 @@ namespace Server.Engines.Harvest
{
Item preLoot = null;
switch ( Utility.Random( 7 ) )
switch ( Utility.Random( 8 ) )
{
case 0: // Body parts
{
@ -288,7 +288,16 @@ namespace Server.Engines.Harvest
preLoot = new ShipwreckedItem( Utility.Random( 0xFC4, 9 ) );
break;
}
case 5: // Misc
case 5: //Hats
{
if ( Utility.RandomBool() )
preLoot = new SkullCap();
else
preLoot = new TricorneHat();
break;
}
case 6: // Misc
{
int[] list = new int[]
{
@ -299,13 +308,22 @@ namespace Server.Engines.Harvest
0x1EB1, 0x1EB2, 0x1EB3, 0x1EB4 // barrel staves
};
preLoot = new ShipwreckedItem( Utility.RandomList( list ) );
if ( Utility.Random( list.Length + 1 ) == 0 )
preLoot = new Candelabra();
else
preLoot = new ShipwreckedItem( Utility.RandomList( list ) );
break;
}
}
if ( preLoot != null )
{
if ( preLoot is IShipwreckedItem )
( (IShipwreckedItem)preLoot ).IsShipwreckedItem = true;
return preLoot;
}
LockableContainer chest;

View file

@ -10,10 +10,10 @@ namespace Server.Gumps
{
public enum ResurrectMessage
{
ChaosShrine=0,
VirtueShrine=1,
Healer=2,
Generic=3,
ChaosShrine = 0,
VirtueShrine = 1,
Healer = 2,
Generic = 3,
}
public class ResurrectGump : Gump

View file

@ -3,6 +3,8 @@ using System.IO;
using System.Text;
using Server;
using Server.Network;
using Server.Gumps;
using Server.Multis;
namespace Server.Items
{
@ -51,12 +53,13 @@ namespace Server.Items
}
}
public class BaseBook : Item
public class BaseBook : Item, ISecurable
{
private string m_Title;
private string m_Author;
private BookPageInfo[] m_Pages;
private bool m_Writable;
private SecureLevel m_SecureLevel;
[CommandProperty( AccessLevel.GameMaster )]
public string Title
@ -177,7 +180,11 @@ namespace Server.Items
if ( content == null || !content.IsMatch( m_Pages ) )
flags |= SaveFlags.Content;
writer.Write( (int) 3 ); // version
writer.Write( (int) 4 ); // version
writer.Write( (int)m_SecureLevel );
writer.Write( (byte) flags );
@ -204,6 +211,11 @@ namespace Server.Items
switch ( version )
{
case 4:
{
m_SecureLevel = (SecureLevel)reader.ReadInt();
goto case 3;
}
case 3:
case 2:
{
@ -324,7 +336,7 @@ namespace Server.Items
Mobile from = state.Mobile;
BaseBook book = World.FindItem( pvSrc.ReadInt32() ) as BaseBook;
if ( book == null || !book.Writable || !from.InRange( book.GetWorldLocation(), 1 ) )
if ( book == null || !book.Writable || !from.InRange( book.GetWorldLocation(), 1 ) || !book.IsAccessibleTo( from ) )
return;
pvSrc.Seek( 4, SeekOrigin.Current ); // Skip flags and page count
@ -341,7 +353,7 @@ namespace Server.Items
Mobile from = state.Mobile;
BaseBook book = World.FindItem( pvSrc.ReadInt32() ) as BaseBook;
if ( book == null || !book.Writable || !from.InRange( book.GetWorldLocation(), 1 ) )
if ( book == null || !book.Writable || !from.InRange( book.GetWorldLocation(), 1 ) || !book.IsAccessibleTo( from ) )
return;
pvSrc.Seek( 4, SeekOrigin.Current ); // Skip flags and page count
@ -369,7 +381,7 @@ namespace Server.Items
Mobile from = state.Mobile;
BaseBook book = World.FindItem( pvSrc.ReadInt32() ) as BaseBook;
if ( book == null || !book.Writable || !from.InRange( book.GetWorldLocation(), 1 ) )
if ( book == null || !book.Writable || !from.InRange( book.GetWorldLocation(), 1 ) || !book.IsAccessibleTo( from ) )
return;
int pageCount = pvSrc.ReadUInt16();
@ -408,6 +420,23 @@ namespace Server.Items
}
}
}
#region ISecurable Members
[CommandProperty( AccessLevel.GameMaster )]
public SecureLevel Level
{
get
{
return m_SecureLevel;
}
set
{
m_SecureLevel = value;
}
}
#endregion
}
public sealed class BookPageDetails : Packet

View file

@ -639,21 +639,7 @@ namespace Server.Items
{
List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();
if ( DisplayLootType )
{
if ( LootType == LootType.Blessed )
attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
else if ( LootType == LootType.Cursed )
attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
}
#region Factions
if ( m_FactionState != null )
attrs.Add( new EquipInfoAttribute( 1041350 ) ); // faction item
#endregion
if ( m_Quality == ClothingQuality.Exceptional )
attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );
AddEquipInfoAttributes( from, attrs );
int number;
@ -675,6 +661,25 @@ namespace Server.Items
from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
}
public virtual void AddEquipInfoAttributes( Mobile from, List<EquipInfoAttribute> attrs )
{
if ( DisplayLootType )
{
if ( LootType == LootType.Blessed )
attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
else if ( LootType == LootType.Cursed )
attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
}
#region Factions
if ( m_FactionState != null )
attrs.Add( new EquipInfoAttribute( 1041350 ) ); // faction item
#endregion
if ( m_Quality == ClothingQuality.Exceptional )
attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );
}
#region Serialization
private static void SetSaveFlag( ref SaveFlag flags, SaveFlag toSet, bool setIf )
{

View file

@ -1,10 +1,21 @@
using System;
using Server.Engines.Craft;
using Server.Network;
using System.Collections.Generic;
namespace Server.Items
{
public abstract class BaseHat : BaseClothing
public abstract class BaseHat : BaseClothing, IShipwreckedItem
{
private bool m_IsShipwreckedItem;
[CommandProperty( AccessLevel.GameMaster )]
public bool IsShipwreckedItem
{
get { return m_IsShipwreckedItem; }
set { m_IsShipwreckedItem = value; }
}
public BaseHat( int itemID ) : this( itemID, 0 )
{
}
@ -21,7 +32,9 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) 1 ); // version
writer.Write( m_IsShipwreckedItem );
}
public override void Deserialize( GenericReader reader )
@ -29,6 +42,31 @@ namespace Server.Items
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_IsShipwreckedItem = reader.ReadBool();
break;
}
}
}
public override void AddEquipInfoAttributes( Mobile from, List<EquipInfoAttribute> attrs )
{
base.AddEquipInfoAttributes( from, attrs );
if( m_IsShipwreckedItem )
attrs.Add( new EquipInfoAttribute( 1041645 ) ); // recovered from a shipwreck
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
if ( m_IsShipwreckedItem )
list.Add( 1041645 ); // recovered from a shipwreck
}
public override int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue )

View file

@ -5,7 +5,7 @@ using Server.Engines.Craft;
namespace Server.Items
{
public abstract class LockableContainer : TrapableContainer, ILockable, ILockpickable, ICraftable//, ITelekinesisable
public abstract class LockableContainer : TrapableContainer, ILockable, ILockpickable, ICraftable, IShipwreckedItem
{
private bool m_Locked;
private int m_LockLevel, m_MaxLockLevel, m_RequiredSkill;
@ -121,7 +121,9 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 5 ); // version
writer.Write( (int) 6 ); // version
writer.Write( m_IsShipwreckedItem );
writer.Write( (bool) m_TrapOnLockpick );
@ -142,6 +144,12 @@ namespace Server.Items
switch ( version )
{
case 6:
{
m_IsShipwreckedItem = reader.ReadBool();
goto case 5;
}
case 5:
{
m_TrapOnLockpick = reader.ReadBool();
@ -332,6 +340,21 @@ namespace Server.Items
}
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
if ( m_IsShipwreckedItem )
list.Add( 1041645 ); // recovered from a shipwreck
}
public override void OnSingleClick( Mobile from )
{
base.OnSingleClick( from );
LabelTo( from, 1041645 ); //recovered from a shipwreck
}
#region ICraftable Members
public int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue )
@ -372,5 +395,18 @@ namespace Server.Items
}
#endregion
#region IShipwreckedItem Members
private bool m_IsShipwreckedItem;
[CommandProperty( AccessLevel.GameMaster )]
public bool IsShipwreckedItem
{
get { return m_IsShipwreckedItem; }
set { m_IsShipwreckedItem = value; }
}
#endregion
}
}

View file

@ -3,7 +3,7 @@ using Server;
namespace Server.Items
{
public class Candelabra : BaseLight
public class Candelabra : BaseLight, IShipwreckedItem
{
public override int LitItemID{ get { return 0xB1D; } }
public override int UnlitItemID{ get { return 0xA27; } }
@ -24,13 +24,51 @@ namespace Server.Items
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
writer.Write( (int) 1 );
writer.Write( m_IsShipwreckedItem );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_IsShipwreckedItem = reader.ReadBool();
break;
}
}
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
if ( m_IsShipwreckedItem )
list.Add( 1041645 ); // recovered from a shipwreck
}
public override void OnSingleClick( Mobile from )
{
base.OnSingleClick( from );
LabelTo( from, 1041645 ); //recovered from a shipwreck
}
#region IShipwreckedItem Members
private bool m_IsShipwreckedItem;
[CommandProperty( AccessLevel.GameMaster )]
public bool IsShipwreckedItem
{
get { return m_IsShipwreckedItem; }
set { m_IsShipwreckedItem = value; }
}
#endregion
}
}

View file

@ -2,7 +2,12 @@ using System;
namespace Server.Items
{
public class ShipwreckedItem : Item, IDyable
public interface IShipwreckedItem
{
bool IsShipwreckedItem { get; set; }
}
public class ShipwreckedItem : Item, IDyable, IShipwreckedItem
{
public ShipwreckedItem( int itemID ) : base( itemID )
{
@ -57,5 +62,20 @@ namespace Server.Items
from.SendLocalizedMessage( sender.FailMessage );
return false;
}
#region IShipwreckedItem Members
public bool IsShipwreckedItem
{
get
{
return true; //It's a ShipwreckedItem item. 'Course it's gonna be a Shipwreckeditem
}
set
{
}
}
#endregion
}
}

View file

@ -277,7 +277,7 @@ namespace Server.Misc
return Notoriety.Enemy;
}
if( target.Kills >= 5 || (target.Body.IsMonster && IsSummoned( target as BaseCreature ) && !(target is BaseFamiliar) && !(target is Golem)) || (target is BaseCreature && (((BaseCreature)target).AlwaysMurderer || ((BaseCreature)target).IsAnimatedDead)) )
if ( target.Kills >= 5 || ( target.Body.IsMonster && IsSummoned( target as BaseCreature ) && !( target is BaseFamiliar ) && !( target is ArcaneFey ) && !( target is Golem ) ) || ( target is BaseCreature && ( ( (BaseCreature)target ).AlwaysMurderer || ( (BaseCreature)target ).IsAnimatedDead ) ) )
return Notoriety.Murderer;
if( target.Criminal )

View file

@ -151,7 +151,7 @@ namespace Server.Misc
get { return "shard poller"; }
}
[Constructable]
[Constructable( AccessLevel.Administrator )]
public ShardPoller() : base( 0x1047 )
{
m_Duration = TimeSpan.FromHours( 24.0 );

View file

@ -88,7 +88,6 @@ namespace Server.Mobiles
ScaleResistances();
DoCounter( attacker );
}
private void ScaleResistances()

View file

@ -1013,8 +1013,6 @@ namespace Server.Multis
return true;
else if ( item is Clock )
return true;
else if ( item is BaseBook )
return true;
else if ( item is BaseInstrument )
return true;
else if ( item is Dyes || item is DyeTub )

View file

@ -913,7 +913,12 @@ namespace Server.Multis
}
else if ( cost < 0 )
{
if ( Banker.Deposit( from, -cost ) )
if ( this.Deleted ) {
from.SendLocalizedMessage( 1060397, ( -cost ).ToString() ); // ~1_AMOUNT~ gold has been deposited into your bank box. (let them think it worked)
using ( StreamWriter op = new StreamWriter( "customexploiters.log", true ) )
op.WriteLine( "{0}\t{1}\t{2}\tLocation: {3}", from.Account, from.NetState != null ? from.NetState.ToString() : "null account", from.RawName, from.Location.ToString() );
}
else if ( Banker.Deposit( from, -cost ) )
from.SendLocalizedMessage( 1060397, ( -cost ).ToString() ); // ~1_AMOUNT~ gold has been deposited into your bank box.
else
return;