268 lines
6.5 KiB
C#
268 lines
6.5 KiB
C#
using System;
|
|
using Server.Network;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public abstract class BaseFruitTreeAddon : BaseAddon
|
|
{
|
|
private int m_Fruits;
|
|
public BaseFruitTreeAddon()
|
|
: base()
|
|
{
|
|
Timer.DelayCall(TimeSpan.FromMinutes(5), new TimerCallback(Respawn));
|
|
}
|
|
|
|
public BaseFruitTreeAddon(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override abstract BaseAddonDeed Deed { get; }
|
|
public abstract Item Fruit { get; }
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public int Fruits
|
|
{
|
|
get
|
|
{
|
|
return this.m_Fruits;
|
|
}
|
|
set
|
|
{
|
|
if (value < 0)
|
|
this.m_Fruits = 0;
|
|
else
|
|
this.m_Fruits = value;
|
|
}
|
|
}
|
|
public override void OnComponentUsed(AddonComponent c, Mobile from)
|
|
{
|
|
if (from.InRange(c.Location, 2))
|
|
{
|
|
if (this.m_Fruits > 0)
|
|
{
|
|
Item fruit = this.Fruit;
|
|
|
|
if (fruit == null)
|
|
return;
|
|
|
|
if (!from.PlaceInBackpack(fruit))
|
|
{
|
|
fruit.Delete();
|
|
from.SendLocalizedMessage(501015); // There is no room in your backpack for the fruit.
|
|
}
|
|
else
|
|
{
|
|
if (--this.m_Fruits == 0)
|
|
Timer.DelayCall(TimeSpan.FromMinutes(30), new TimerCallback(Respawn));
|
|
|
|
from.SendLocalizedMessage(501016); // You pick some fruit and put it in your backpack.
|
|
}
|
|
}
|
|
else
|
|
from.SendLocalizedMessage(501017); // There is no more fruit on this tree
|
|
}
|
|
else
|
|
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.WriteEncodedInt(0); // version
|
|
|
|
writer.Write((int)this.m_Fruits);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
|
|
this.m_Fruits = reader.ReadInt();
|
|
|
|
if (this.m_Fruits == 0)
|
|
this.Respawn();
|
|
}
|
|
|
|
private void Respawn()
|
|
{
|
|
this.m_Fruits = Utility.RandomMinMax(1, 4);
|
|
}
|
|
}
|
|
|
|
public class AppleTreeAddon : BaseFruitTreeAddon
|
|
{
|
|
[Constructable]
|
|
public AppleTreeAddon()
|
|
: base()
|
|
{
|
|
this.AddComponent(new LocalizedAddonComponent(0xD98, 1076269), 0, 0, 0);
|
|
this.AddComponent(new LocalizedAddonComponent(0x3124, 1076269), 0, 0, 0);
|
|
}
|
|
|
|
public AppleTreeAddon(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override BaseAddonDeed Deed
|
|
{
|
|
get
|
|
{
|
|
return new AppleTreeDeed();
|
|
}
|
|
}
|
|
public override Item Fruit
|
|
{
|
|
get
|
|
{
|
|
return new Apple();
|
|
}
|
|
}
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.WriteEncodedInt(0); // version
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
}
|
|
}
|
|
|
|
public class AppleTreeDeed : BaseAddonDeed
|
|
{
|
|
[Constructable]
|
|
public AppleTreeDeed()
|
|
: base()
|
|
{
|
|
this.LootType = LootType.Blessed;
|
|
}
|
|
|
|
public AppleTreeDeed(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override BaseAddon Addon
|
|
{
|
|
get
|
|
{
|
|
return new AppleTreeAddon();
|
|
}
|
|
}
|
|
public override int LabelNumber
|
|
{
|
|
get
|
|
{
|
|
return 1076269;
|
|
}
|
|
}// Apple Tree
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.WriteEncodedInt(0); // version
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
}
|
|
}
|
|
|
|
public class PeachTreeAddon : BaseFruitTreeAddon
|
|
{
|
|
[Constructable]
|
|
public PeachTreeAddon()
|
|
: base()
|
|
{
|
|
this.AddComponent(new LocalizedAddonComponent(0xD9C, 1076270), 0, 0, 0);
|
|
this.AddComponent(new LocalizedAddonComponent(0x3123, 1076270), 0, 0, 0);
|
|
}
|
|
|
|
public PeachTreeAddon(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override BaseAddonDeed Deed
|
|
{
|
|
get
|
|
{
|
|
return new PeachTreeDeed();
|
|
}
|
|
}
|
|
public override Item Fruit
|
|
{
|
|
get
|
|
{
|
|
return new Peach();
|
|
}
|
|
}
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.WriteEncodedInt(0); // version
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
}
|
|
}
|
|
|
|
public class PeachTreeDeed : BaseAddonDeed
|
|
{
|
|
[Constructable]
|
|
public PeachTreeDeed()
|
|
: base()
|
|
{
|
|
this.LootType = LootType.Blessed;
|
|
}
|
|
|
|
public PeachTreeDeed(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override BaseAddon Addon
|
|
{
|
|
get
|
|
{
|
|
return new PeachTreeAddon();
|
|
}
|
|
}
|
|
public override int LabelNumber
|
|
{
|
|
get
|
|
{
|
|
return 1076270;
|
|
}
|
|
}// Peach Tree
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.WriteEncodedInt(0); // version
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadEncodedInt();
|
|
}
|
|
}
|
|
} |