branch sync
This commit is contained in:
parent
0b19ae183e
commit
162cf6f0a9
13 changed files with 226 additions and 40 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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 )
|
||||
|
|
|
|||
|
|
@ -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 );
|
||||
|
|
|
|||
|
|
@ -88,7 +88,6 @@ namespace Server.Mobiles
|
|||
|
||||
ScaleResistances();
|
||||
DoCounter( attacker );
|
||||
|
||||
}
|
||||
|
||||
private void ScaleResistances()
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue