public virtual void OnChop(Mobile from) { BaseHouse house = BaseHouse.FindHouseAt(this); if (house != null && house.IsOwner(from)) { if (!IsSecure) { Effects.PlaySound(GetWorldLocation(), Map, 0x3B3); from.SendLocalizedMessage(500461); // You destroy the item. int hue = 0; if (RetainDeedHue) { for (int i = 0; hue == 0 && i < m_Components.Count; ++i) { AddonContainerComponent c = m_Components[i]; if (c.Hue != 0) { hue = c.Hue; } } } DropItemsToGround(); Delete(); house.Addons.Remove(this); BaseAddonContainerDeed deed = Deed; if (deed != null) { deed.Resource = Resource; if (RetainDeedHue) { deed.Hue = hue; } from.AddToBackpack(deed); } } else { from.SendLocalizedMessage(1074870); // This item must be unlocked/unsecured before re-deeding it. } } }
public void AddComponent(AddonContainerComponent c, int x, int y, int z) { if (Deleted) { return; } m_Components.Add(c); c.Addon = this; c.Offset = new Point3D(x, y, z); c.MoveToWorld(new Point3D(X + x, Y + y, Z + z), Map); }
public virtual void OnComponentUsed(AddonContainerComponent c, Mobile from) { }
public virtual void OnComponentLoaded(AddonContainerComponent c) { }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is Item && InteriorDecorator.CheckUse(m_Decorator, from)) { BaseHouse house = BaseHouse.FindHouseAt(from); Item item = (Item)targeted; bool isDecorableComponent = false; if (item is AddonComponent || item is AddonContainerComponent || item is BaseAddonContainer) { object addon = null; int count = 0; if (item is AddonComponent) { AddonComponent component = (AddonComponent)item; count = component.Addon.Components.Count; addon = component.Addon; } else if (item is AddonContainerComponent) { AddonContainerComponent component = (AddonContainerComponent)item; count = component.Addon.Components.Count; addon = component.Addon; } else if (item is BaseAddonContainer) { BaseAddonContainer container = (BaseAddonContainer)item; count = container.Components.Count; addon = container; } if (count == 1 && Core.SE) { isDecorableComponent = true; } if (m_Decorator.Command == DecorateCommand.Turn) { FlipableAddonAttribute[] attributes = (FlipableAddonAttribute[])addon.GetType().GetCustomAttributes(typeof(FlipableAddonAttribute), false); if (attributes.Length > 0) { isDecorableComponent = true; } } } if (house == null || !house.IsCoOwner(from)) { from.SendLocalizedMessage(502092); // You must be in your house to do this. } else if (item.Parent != null || !house.IsInside(item)) { from.SendLocalizedMessage(1042270); // That is not in your house. } else if (!house.IsLockedDown(item) && !house.IsSecure(item) && !isDecorableComponent) { if (item is AddonComponent && m_Decorator.Command == DecorateCommand.Up) { from.SendLocalizedMessage(1042274); // You cannot raise it up any higher. } else if (item is AddonComponent && m_Decorator.Command == DecorateCommand.Down) { from.SendLocalizedMessage(1042275); // You cannot lower it down any further. } else { from.SendLocalizedMessage(1042271); // That is not locked down. } } else if (item is VendorRentalContract) { from.SendLocalizedMessage(1062491); // You cannot use the house decorator on that object. } else if (item.TotalWeight + item.PileWeight > 100) { from.SendLocalizedMessage(1042272); // That is too heavy. } else { switch (m_Decorator.Command) { case DecorateCommand.Up: Up(item, from); break; case DecorateCommand.Down: Down(item, from); break; case DecorateCommand.Turn: Turn(item, from); break; } } } from.Target = new InternalTarget(m_Decorator); }