Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
159
Scripts/Items/Functional/Incubator.cs
Normal file
159
Scripts/Items/Functional/Incubator.cs
Normal file
@@ -0,0 +1,159 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Gumps;
|
||||
using Server.Engines;
|
||||
using Server.Multis;
|
||||
using Server.Commands;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlipableAttribute(0x407C, 0x407D)]
|
||||
public class Incubator : Container, ISecurable
|
||||
{
|
||||
public static readonly int MaxEggs = 6;
|
||||
|
||||
public override int LabelNumber { get { return 1112479; } } //an incubator
|
||||
|
||||
private SecureLevel m_Level;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level
|
||||
{
|
||||
get { return m_Level; }
|
||||
set { m_Level = value; }
|
||||
}
|
||||
|
||||
public override int DefaultGumpID { get { return 1156; } }
|
||||
public override int DefaultDropSound { get { return 66; } }
|
||||
|
||||
[Constructable]
|
||||
public Incubator()
|
||||
: base(0x407C)
|
||||
{
|
||||
m_Level = SecureLevel.CoOwners;
|
||||
}
|
||||
|
||||
public override bool OnDragDropInto(Mobile from, Item item, Point3D p)
|
||||
{
|
||||
bool canDrop = base.OnDragDropInto(from, item, p);
|
||||
|
||||
if (canDrop && item is ChickenLizardEgg)
|
||||
{
|
||||
ChickenLizardEgg egg = (ChickenLizardEgg)item;
|
||||
|
||||
if (egg.TotalIncubationTime > TimeSpan.FromHours(120))
|
||||
egg.BurnEgg();
|
||||
else
|
||||
{
|
||||
egg.IncubationStart = DateTime.UtcNow;
|
||||
egg.Incubating = true;
|
||||
}
|
||||
}
|
||||
|
||||
return canDrop;
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item item)
|
||||
{
|
||||
bool canDrop = base.OnDragDrop(from, item);
|
||||
|
||||
if (canDrop && item is ChickenLizardEgg)
|
||||
{
|
||||
ChickenLizardEgg egg = (ChickenLizardEgg)item;
|
||||
|
||||
if (egg.TotalIncubationTime > TimeSpan.FromHours(120))
|
||||
egg.BurnEgg();
|
||||
else
|
||||
{
|
||||
egg.IncubationStart = DateTime.UtcNow;
|
||||
egg.Incubating = true;
|
||||
}
|
||||
}
|
||||
|
||||
return canDrop;
|
||||
}
|
||||
|
||||
public override bool CheckHold(Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight)
|
||||
{
|
||||
if (!BaseHouse.CheckSecured(this))
|
||||
{
|
||||
m.SendLocalizedMessage(1113711); //The incubator must be secured for the egg to grow, not locked down.
|
||||
return false;
|
||||
}
|
||||
if (!(item is ChickenLizardEgg))
|
||||
{
|
||||
m.SendMessage("This will only accept chicken eggs.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (MaxEggs > -1 && Items.Count >= MaxEggs)
|
||||
{
|
||||
m.SendMessage("You can only put {0} chicken eggs in the incubator at a time.", MaxEggs.ToString()); //TODO: Get Message
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void CheckEggs_Callback()
|
||||
{
|
||||
if (!BaseHouse.CheckSecured(this))
|
||||
return;
|
||||
|
||||
foreach (Item item in Items)
|
||||
{
|
||||
if (item is ChickenLizardEgg)
|
||||
((ChickenLizardEgg)item).CheckStatus();
|
||||
}
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
CommandSystem.Register("IncreaseStage", AccessLevel.Counselor, new CommandEventHandler(IncreaseStage_OnCommand));
|
||||
}
|
||||
|
||||
public static void IncreaseStage_OnCommand(CommandEventArgs e)
|
||||
{
|
||||
e.Mobile.SendMessage("Target the egg.");
|
||||
e.Mobile.BeginTarget(12, false, Server.Targeting.TargetFlags.None, new TargetCallback(IncreaseStage_OnTarget));
|
||||
}
|
||||
|
||||
public static void IncreaseStage_OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (targeted is ChickenLizardEgg)
|
||||
{
|
||||
((ChickenLizardEgg)targeted).TotalIncubationTime += TimeSpan.FromHours(24);
|
||||
((ChickenLizardEgg)targeted).CheckStatus();
|
||||
}
|
||||
}
|
||||
|
||||
public Incubator(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
|
||||
writer.Write((int)m_Level);
|
||||
|
||||
if (Items.Count > 0)
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(10), new TimerCallback(CheckEggs_Callback));
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Level = (SecureLevel)reader.ReadInt();
|
||||
|
||||
if (Items.Count > 0)
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(60), new TimerCallback(CheckEggs_Callback));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user