Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
347
Scripts/Items/Decorative/EnchantedWheelbarrow.cs
Normal file
347
Scripts/Items/Decorative/EnchantedWheelbarrow.cs
Normal file
@@ -0,0 +1,347 @@
|
||||
using System;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class EnchantedWheelbarrow : Item, IFlipable, ISecurable
|
||||
{
|
||||
public override int LabelNumber { get { return 1125214; } } // enchanted wheelbarrow
|
||||
|
||||
private bool m_Harvest;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Harvest
|
||||
{
|
||||
get { return m_Harvest; }
|
||||
set
|
||||
{
|
||||
|
||||
if (value && (ItemID == 0xA0E6 || ItemID == 0xA0E7))
|
||||
ItemID = ItemID + 2;
|
||||
else if (ItemID == 0xA0E8 || ItemID == 0xA0E9)
|
||||
ItemID = ItemID - 2;
|
||||
|
||||
m_Harvest = value;
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level { get; set; }
|
||||
|
||||
private Timer m_Timer;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime NextHarvest { get; set; }
|
||||
|
||||
private static Type[] DecorativePlants = new Type[]
|
||||
{
|
||||
typeof(DecorativePlant), typeof(DecorativePlantWhiteFlowers), typeof(DecorativePlantVines),
|
||||
typeof(DecorativePlantFlax), typeof(DecorativePlantPoppies), typeof(DecorativePlantLilypad)
|
||||
};
|
||||
|
||||
[Constructable]
|
||||
public EnchantedWheelbarrow()
|
||||
: base(0xA0E6)
|
||||
{
|
||||
Harvest = true;
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public void StopTimer()
|
||||
{
|
||||
if (m_Timer != null)
|
||||
m_Timer.Stop();
|
||||
|
||||
m_Timer = null;
|
||||
}
|
||||
|
||||
public void StartTimer()
|
||||
{
|
||||
if (m_Timer != null)
|
||||
return;
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromHours(1.0), TimeSpan.FromHours(1.0), new TimerCallback(OnTick));
|
||||
}
|
||||
|
||||
public void OnTick()
|
||||
{
|
||||
if (Harvest)
|
||||
{
|
||||
StopTimer();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (NextHarvest < DateTime.UtcNow)
|
||||
{
|
||||
Harvest = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckAccessible(Mobile from, Item item)
|
||||
{
|
||||
if (from.AccessLevel >= AccessLevel.GameMaster)
|
||||
return true; // Staff can access anything
|
||||
|
||||
BaseHouse house = BaseHouse.FindHouseAt(item);
|
||||
|
||||
if (house == null)
|
||||
return false;
|
||||
|
||||
switch (Level)
|
||||
{
|
||||
case SecureLevel.Owner: return house.IsOwner(from);
|
||||
case SecureLevel.CoOwners: return house.IsCoOwner(from);
|
||||
case SecureLevel.Friends: return house.IsFriend(from);
|
||||
case SecureLevel.Anyone: return true;
|
||||
case SecureLevel.Guild: return house.IsGuildMember(from);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OnFlip(Mobile from)
|
||||
{
|
||||
if (ItemID == 0xA0E6 || ItemID == 0xA0E8)
|
||||
ItemID = ItemID + 1;
|
||||
else
|
||||
ItemID = ItemID - 1;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (!m.InRange(GetWorldLocation(), 3))
|
||||
{
|
||||
m.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
else if (!IsLockedDown)
|
||||
{
|
||||
m.SendLocalizedMessage(1114298); // This must be locked down in order to use it.
|
||||
}
|
||||
else
|
||||
{
|
||||
if (CheckAccessible(m, this))
|
||||
{
|
||||
if (Harvest)
|
||||
{
|
||||
Item i = Activator.CreateInstance(DecorativePlants[Utility.Random(DecorativePlants.Length)]) as Item;
|
||||
|
||||
if (i != null)
|
||||
{
|
||||
m.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, 1158330); // *You collect a plant from the wheelbarrow*
|
||||
m.AddToBackpack(i);
|
||||
Harvest = false;
|
||||
NextHarvest = DateTime.UtcNow + TimeSpan.FromDays(7);
|
||||
StartTimer();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m.SendLocalizedMessage(1158329); // There is nothing to harvest.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EnchantedWheelbarrow(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
|
||||
writer.Write((bool)m_Harvest);
|
||||
writer.Write((int)Level);
|
||||
writer.Write((DateTime)NextHarvest);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Harvest = reader.ReadBool();
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
NextHarvest = reader.ReadDateTime();
|
||||
|
||||
if (!Harvest)
|
||||
StartTimer();
|
||||
}
|
||||
}
|
||||
|
||||
public class DecorativePlant : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1125205; } } // decorative plant
|
||||
|
||||
private static readonly int[] DecorativePlants = new[]
|
||||
{
|
||||
0xA0E1, 0xA0E2, 0xA0E3, 0xA0E4, 0xA0E5, 0xA0ED, 0xA11B, 0xA11C, 0xA11F, 0xA120, 0xA121, 0xA122, 0xA123, 0xA124, 0xA125, 0xA128, 0xA12B
|
||||
};
|
||||
|
||||
[Constructable]
|
||||
public DecorativePlant()
|
||||
: base(DecorativePlants[Utility.Random(DecorativePlants.Length)])
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public DecorativePlant(int id)
|
||||
: base(id)
|
||||
{
|
||||
}
|
||||
|
||||
public DecorativePlant(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable(0xA0DD, 0xA0DE)]
|
||||
public class DecorativePlantWhiteFlowers : DecorativePlant
|
||||
{
|
||||
[Constructable]
|
||||
public DecorativePlantWhiteFlowers()
|
||||
: base(0xA0DD)
|
||||
{
|
||||
}
|
||||
|
||||
public DecorativePlantWhiteFlowers(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable(0xA0DF, 0xA0E0)]
|
||||
public class DecorativePlantVines : DecorativePlant
|
||||
{
|
||||
[Constructable]
|
||||
public DecorativePlantVines()
|
||||
: base(0xA0DF)
|
||||
{
|
||||
}
|
||||
|
||||
public DecorativePlantVines(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable(0xA11D, 0xA11E)]
|
||||
public class DecorativePlantFlax : DecorativePlant
|
||||
{
|
||||
[Constructable]
|
||||
public DecorativePlantFlax()
|
||||
: base(0xA11D)
|
||||
{
|
||||
}
|
||||
|
||||
public DecorativePlantFlax(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable(0xA126, 0xA127)]
|
||||
public class DecorativePlantPoppies : DecorativePlant
|
||||
{
|
||||
[Constructable]
|
||||
public DecorativePlantPoppies()
|
||||
: base(0xA126)
|
||||
{
|
||||
}
|
||||
|
||||
public DecorativePlantPoppies(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable(0xA129, 0xA12A)]
|
||||
public class DecorativePlantLilypad : DecorativePlant
|
||||
{
|
||||
[Constructable]
|
||||
public DecorativePlantLilypad()
|
||||
: base(0xA129)
|
||||
{
|
||||
}
|
||||
|
||||
public DecorativePlantLilypad(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user