Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
329
Scripts/Services/CleanUpBritannia/Items/DragonHead.cs
Normal file
329
Scripts/Services/CleanUpBritannia/Items/DragonHead.cs
Normal file
@@ -0,0 +1,329 @@
|
||||
using System;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public enum AddonFacing
|
||||
{
|
||||
South = 0,
|
||||
East = 1,
|
||||
}
|
||||
|
||||
public class DragonHeadAddon : BaseAddon
|
||||
{
|
||||
public override BaseAddonDeed Deed { get { return new DragonHeadAddonDeed(); } }
|
||||
|
||||
public AddonFacing Facing { get; set; }
|
||||
|
||||
[Constructable]
|
||||
public DragonHeadAddon()
|
||||
: this(AddonFacing.South)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public DragonHeadAddon(AddonFacing facing)
|
||||
{
|
||||
Facing = facing;
|
||||
|
||||
switch (facing)
|
||||
{
|
||||
case AddonFacing.South:
|
||||
AddComponent(new DragonHeadComponent(0x2234), 0, 0, 10);
|
||||
break;
|
||||
case AddonFacing.East:
|
||||
AddComponent(new DragonHeadComponent(0x2235), 0, 0, 10);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private class DragonHeadComponent : AddonComponent
|
||||
{
|
||||
public override bool NeedsWall { get { return true; } }
|
||||
public override Point3D WallPosition
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (ItemID)
|
||||
{
|
||||
default:
|
||||
case 0x2234: return new Point3D(0, -1, 0);
|
||||
case 0x2235: return new Point3D(-1, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DragonHeadComponent(int id)
|
||||
: base(id)
|
||||
{
|
||||
}
|
||||
|
||||
public DragonHeadComponent(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
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 DragonHeadAddon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
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 DragonHeadAddonDeed : BaseAddonDeed, IRewardOption
|
||||
{
|
||||
public override BaseAddon Addon { get { return new DragonHeadAddon(Facing); } }
|
||||
|
||||
private AddonFacing Facing { get; set; }
|
||||
|
||||
public override int LabelNumber { get { return 1080209; } } // Dragon Head
|
||||
|
||||
[Constructable]
|
||||
public DragonHeadAddonDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump(typeof(RewardOptionGump));
|
||||
from.SendGump(new RewardOptionGump(this));
|
||||
}
|
||||
else
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
|
||||
public DragonHeadAddonDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
||||
public void GetOptions(RewardOptionList list)
|
||||
{
|
||||
list.Add((int)AddonFacing.South, 1080208);
|
||||
list.Add((int)AddonFacing.East, 1080207);
|
||||
}
|
||||
|
||||
|
||||
public void OnOptionSelected(Mobile from, int choice)
|
||||
{
|
||||
Facing = (AddonFacing)choice;
|
||||
|
||||
if (!Deleted)
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
}
|
||||
|
||||
// old classes
|
||||
[TypeAlias("Server.Items.DragonHead")]
|
||||
public class DragonHeadOld : Item, IAddon
|
||||
{
|
||||
public override bool IsArtifact { get { return true; } }
|
||||
|
||||
[Constructable]
|
||||
public DragonHeadOld()
|
||||
: this(0x2234)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public DragonHeadOld(int itemID)
|
||||
: base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public DragonHeadOld(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties
|
||||
{
|
||||
get
|
||||
{
|
||||
return ObjectPropertyList.Enabled;
|
||||
}
|
||||
}
|
||||
public Item Deed
|
||||
{
|
||||
get
|
||||
{
|
||||
return new DragonHeadAddonDeed();
|
||||
}
|
||||
}
|
||||
public bool FacingEast
|
||||
{
|
||||
get
|
||||
{
|
||||
return ItemID == 0x2235;
|
||||
}
|
||||
}
|
||||
|
||||
void IChopable.OnChop(Mobile user)
|
||||
{
|
||||
OnDoubleClick(user);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (from.InRange(Location, 2))
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if (house != null && house.IsOwner(from))
|
||||
{
|
||||
from.CloseGump(typeof(RewardDemolitionGump));
|
||||
from.SendGump(new RewardDemolitionGump(this, 1049783)); // Do you wish to re-deed this decoration?
|
||||
}
|
||||
else
|
||||
from.SendLocalizedMessage(1049784); // You can only re-deed this decoration if you are the house owner or originally placed the decoration.
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
public bool CouldFit(IPoint3D p, Map map)
|
||||
{
|
||||
if (map == null || !map.CanFit(p.X, p.Y, p.Z, ItemData.Height))
|
||||
return false;
|
||||
|
||||
if (FacingEast)
|
||||
return BaseAddon.IsWall(p.X - 1, p.Y, p.Z, map); // west wall
|
||||
else
|
||||
return BaseAddon.IsWall(p.X, p.Y - 1, p.Z, map); // north wall
|
||||
}
|
||||
}
|
||||
|
||||
[TypeAlias("Server.Items.DragonHeadDeed")]
|
||||
public class DragonHeadDeedOld : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1028756; } } // dragon head
|
||||
|
||||
[Constructable]
|
||||
public DragonHeadDeedOld()
|
||||
: base(0x14F0)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public DragonHeadDeedOld(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(10), Replace);
|
||||
}
|
||||
|
||||
private void Replace()
|
||||
{
|
||||
Container c = Parent as Container;
|
||||
|
||||
if (c != null)
|
||||
{
|
||||
var deed = new DragonHeadAddonDeed();
|
||||
c.DropItem(deed);
|
||||
}
|
||||
else if (Parent == null)
|
||||
{
|
||||
Server.Multis.BaseHouse house = Server.Multis.BaseHouse.FindHouseAt(this);
|
||||
|
||||
var deed = new DragonHeadAddonDeed();
|
||||
deed.MoveToWorld(Location, Map);
|
||||
|
||||
deed.IsLockedDown = IsLockedDown;
|
||||
deed.IsSecure = IsSecure;
|
||||
deed.Movable = Movable;
|
||||
|
||||
if (house != null && house.LockDowns.ContainsKey(this))
|
||||
{
|
||||
house.LockDowns.Remove(this);
|
||||
house.LockDowns.Add(deed, house.Owner);
|
||||
}
|
||||
else if (house != null && house.IsSecure(this))
|
||||
{
|
||||
house.ReleaseSecure(house.Owner, this);
|
||||
house.AddSecure(house.Owner, deed);
|
||||
}
|
||||
}
|
||||
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user