Kod: // Designed By: EternaL
// Part of the Armagedon scripts
using System;
using Server.Network;
using Server.Prompts;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
namespace Server.Items
{
public class TamingTarget : Target
{
private TamingDeed m_Deed;
public TamingTarget( TamingDeed deed ) : base( 1, false, TargetFlags.None )
{
m_Deed = deed;
}
protected override void OnTarget( Mobile from, object target )
{
if ( target is BaseCreature )
{
BaseCreature t = ( BaseCreature ) target;
if ( t.Controled == true )
{
from.SendMessage( "That pet is already tamed!" );
}
else if ( t.Tamable == false )
{
from.SendMessage( "That creature is not tamable!" );
}
else
{
t.Controled = !t.Controled;
t.SetControlMaster( from );
t.IsBonded = true;
t.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 502799, from.NetState ); // It seems to accept you as master.
m_Deed.Delete(); // Delete the deed
}
}
else
{
from.SendMessage( "That is not a valid traget." );
}
}
}
public class TamingDeed : Item // Create the item class which is derived from the base item class
{
[Constructable]
public TamingDeed() : base( 0x14F0 )
{
Weight = 1.0;
Name = "a pet Taming deed";
LootType = LootType.Blessed;
Hue = 1154;
}
public TamingDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
LootType = LootType.Blessed;
int version = reader.ReadInt();
}
public override bool DisplayLootType{ get{ return false; } }
public override void OnDoubleClick( Mobile from ) // Override double click of the deed to call our target
{
if ( !IsChildOf( from.Backpack ) ) // Make sure its in their pack
{
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
else
{
from.SendMessage( "Choose the pet you wish to Tame" );
from.Target = new TamingTarget( this ); // Call our target
}
}
}
}
|