Heritage items, talismans

This commit is contained in:
xavier 2011-07-24 01:47:01 +00:00
parent e7db1fd9f7
commit 129cac945b
109 changed files with 11659 additions and 188 deletions

View file

@ -303,7 +303,14 @@ namespace Server
if( attrs != null )
value += attrs[attribute];
}
}
else if ( obj is BaseTalisman )
{
AosAttributes attrs = ((BaseTalisman)obj).Attributes;
if (attrs != null)
value += attrs[attribute];
}
}
return value;

View file

@ -630,6 +630,44 @@ namespace Server
{
return Construct( m_LibraryBookTypes ) as BaseBook;
}
public static BaseTalisman RandomTalisman()
{
BaseTalisman talisman = new BaseTalisman( BaseTalisman.GetRandomItemID() );
talisman.Summoner = BaseTalisman.GetRandomSummoner();
if ( talisman.Summoner.IsEmpty )
{
talisman.Removal = BaseTalisman.GetRandomRemoval();
if ( talisman.Removal != TalismanRemoval.None )
{
talisman.MaxCharges = BaseTalisman.GetRandomCharges();
talisman.MaxChargeTime = 1200;
}
}
else
{
talisman.MaxCharges = Utility.RandomMinMax( 10, 50 );
if ( talisman.Summoner.IsItem )
talisman.MaxChargeTime = 60;
else
talisman.MaxChargeTime = 1800;
}
talisman.Blessed = BaseTalisman.GetRandomBlessed();
talisman.Slayer = BaseTalisman.GetRandomSlayer();
talisman.Protection = BaseTalisman.GetRandomProtection();
talisman.Killer = BaseTalisman.GetRandomKiller();
talisman.Skill = BaseTalisman.GetRandomSkill();
talisman.ExceptionalBonus = BaseTalisman.GetRandomExceptional();
talisman.SuccessBonus = BaseTalisman.GetRandomSuccessful();
talisman.Charges = talisman.MaxCharges;
return talisman;
}
#endregion
#region Construction methods

View file

@ -24,6 +24,18 @@ namespace Server
m_String = text;
}
public TextDefinition( GenericReader reader )
{
int type = reader.ReadEncodedInt();
switch ( type )
{
case 1: m_Number = reader.ReadEncodedInt(); m_String = null; break;
case 2: m_Number = 0; m_String = reader.ReadString(); break;
default: m_Number = 0; m_String = null; break;
}
}
public override string ToString()
{
if ( m_Number > 0 )
@ -34,6 +46,22 @@ namespace Server
return "(empty)";
}
public virtual void Serialize( GenericWriter writer )
{
if ( m_Number > 0 )
{
writer.WriteEncodedInt( 1 );
writer.WriteEncodedInt( m_Number );
}
else if ( m_String != null )
{
writer.WriteEncodedInt( 2 );
writer.Write( m_String );
}
else
writer.WriteEncodedInt( 0 );
}
public static void AddTo( ObjectPropertyList list, TextDefinition def )
{
if ( def != null && def.m_Number > 0 )