Files
abysmal-isle/Scripts/Items/Addons/Parrot.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

113 lines
3.8 KiB
C#

using System;
using Server.Mobiles;
using Server.Multis;
using Server.Targeting;
namespace Server.Items
{
public class ParrotItem : Item
{
private static readonly int[] m_Hues = new int[]
{
0x3, 0xD, 0x13, 0x1C, 0x21, 0x30, 0x3F, 0x44, 0x59, 0x62, 0x71
};
[Constructable]
public ParrotItem()
: base(0x20EE)
{
this.Weight = 1;
this.Hue = Utility.RandomList(m_Hues);
}
public ParrotItem(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1074281;
}
}// pet parrot
public override void OnDoubleClick(Mobile from)
{
if (this.IsChildOf(from.Backpack))
{
from.Target = new InternalTarget(this);
from.SendLocalizedMessage(1072612); // Target the Parrot Perch you wish to place this Parrot upon.
}
else
from.SendLocalizedMessage(1042004); // That must be in your pack for you to use it.
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
public class InternalTarget : Target
{
private readonly ParrotItem m_Parrot;
public InternalTarget(ParrotItem parrot)
: base(2, false, TargetFlags.None)
{
this.m_Parrot = parrot;
}
protected override void OnTarget(Mobile from, object targeted)
{
if (targeted is AddonComponent)
{
AddonComponent component = (AddonComponent)targeted;
if (component.Addon is ParrotPerchAddon)
{
ParrotPerchAddon perch = (ParrotPerchAddon)component.Addon;
BaseHouse house = BaseHouse.FindHouseAt(perch);
if (house != null && house.IsCoOwner(from))
{
if (perch.Parrot == null || perch.Parrot.Deleted)
{
PetParrot parrot = new PetParrot();
parrot.Hue = this.m_Parrot.Hue;
parrot.MoveToWorld(perch.Location, perch.Map);
parrot.Z += 12;
perch.Parrot = parrot;
this.m_Parrot.Delete();
}
else
from.SendLocalizedMessage(1072616); //That Parrot Perch already has a Parrot.
}
else
from.SendLocalizedMessage(1072618); //Parrots can only be placed on Parrot Perches in houses where you are an owner or co-owner.
}
else
from.SendLocalizedMessage(1072614); //You must place the Parrot on a Parrot Perch.
}
else
from.SendLocalizedMessage(1072614); //You must place the Parrot on a Parrot Perch.
}
protected override void OnTargetOutOfRange(Mobile from, object targeted)
{
base.OnTargetOutOfRange(from, targeted);
from.SendLocalizedMessage(1072613); //You must be closer to the Parrot Perch to place the Parrot upon it.
}
}
}
}