Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View 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();
}
}
}