Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
199
Scripts/Items/Addons/PetParrot.cs
Normal file
199
Scripts/Items/Addons/PetParrot.cs
Normal file
@@ -0,0 +1,199 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class PetParrot : BaseCreature
|
||||
{
|
||||
private DateTime m_Birth;
|
||||
[Constructable]
|
||||
public PetParrot()
|
||||
: this(DateTime.MinValue, null, 0)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public PetParrot(DateTime birth, string name, int hue)
|
||||
: base(AIType.AI_Animal, FightMode.None, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = "a pet parrot";
|
||||
Title = "the parrot";
|
||||
Body = 0x11A;
|
||||
BaseSoundID = 0xBF;
|
||||
|
||||
SetStr(1, 5);
|
||||
SetDex(25, 30);
|
||||
SetInt(2);
|
||||
|
||||
SetHits(1, Str);
|
||||
SetStam(25, Dex);
|
||||
SetMana(0);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 2);
|
||||
|
||||
SetSkill(SkillName.MagicResist, 4);
|
||||
SetSkill(SkillName.Tactics, 4);
|
||||
SetSkill(SkillName.Wrestling, 4);
|
||||
|
||||
CantWalk = true;
|
||||
Frozen = true;
|
||||
Blessed = true;
|
||||
|
||||
if (birth != DateTime.MinValue)
|
||||
m_Birth = birth;
|
||||
else
|
||||
m_Birth = DateTime.UtcNow;
|
||||
|
||||
if (name != null)
|
||||
Name = name;
|
||||
|
||||
if (hue > 0)
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public PetParrot(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool NoHouseRestrictions
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime Birth
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Birth;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Birth = value;
|
||||
}
|
||||
}
|
||||
public override FoodType FavoriteFood
|
||||
{
|
||||
get
|
||||
{
|
||||
return FoodType.FruitsAndVegies;
|
||||
}
|
||||
}
|
||||
public static int GetWeeks(DateTime birth)
|
||||
{
|
||||
TimeSpan span = DateTime.UtcNow - birth;
|
||||
|
||||
return (int)(span.TotalDays / 7);
|
||||
}
|
||||
|
||||
public override void OnStatsQuery(Mobile from)
|
||||
{
|
||||
if (from.Map == Map && Utility.InUpdateRange(this, from) && from.CanSee(this))
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if (house != null && house.IsCoOwner(from) && from.AccessLevel == AccessLevel.Player)
|
||||
from.SendLocalizedMessage(1072625); // As the house owner, you may rename this Parrot.
|
||||
|
||||
from.Send(new Server.Network.MobileStatus(from, this));
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
int weeks = GetWeeks(m_Birth);
|
||||
|
||||
if (weeks == 1)
|
||||
list.Add(1072626); // 1 week old
|
||||
else if (weeks > 1)
|
||||
list.Add(1072627, weeks.ToString()); // ~1_AGE~ weeks old
|
||||
}
|
||||
|
||||
public override bool CanBeRenamedBy(Mobile from)
|
||||
{
|
||||
if ((int)from.AccessLevel > (int)AccessLevel.Player)
|
||||
return true;
|
||||
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if (house != null && house.IsCoOwner(from))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void OnSpeech(SpeechEventArgs e)
|
||||
{
|
||||
base.OnSpeech(e);
|
||||
|
||||
if (Utility.RandomDouble() < 0.05)
|
||||
{
|
||||
Say(e.Speech);
|
||||
PlaySound(0xC0);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (dropped is ParrotWafer)
|
||||
{
|
||||
dropped.Delete();
|
||||
|
||||
switch ( Utility.Random(6) )
|
||||
{
|
||||
case 0:
|
||||
Say(1072602, "#" + Utility.RandomMinMax(1012003, 1012010));
|
||||
break; // I just flew in from ~1_CITYNAME~ and boy are my wings tired!
|
||||
case 1:
|
||||
Say(1072603);
|
||||
break; // Wind in the sails! Wind in the sails!
|
||||
case 2:
|
||||
Say(1072604);
|
||||
break; // Arrrr, matey!
|
||||
case 3:
|
||||
Say(1072605);
|
||||
break; // Loot and plunder! Loot and plunder!
|
||||
case 4:
|
||||
Say(1072606);
|
||||
break; // I want a cracker!
|
||||
case 5:
|
||||
Say(1072607);
|
||||
break; // I'm just a house pet!
|
||||
}
|
||||
|
||||
PlaySound(Utility.RandomMinMax(0xBF, 0xC3));
|
||||
Direction = Utility.GetDirection(this, from);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
|
||||
writer.Write((DateTime)m_Birth);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Birth = reader.ReadDateTime();
|
||||
|
||||
Frozen = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user