public static void Replace(Item oldItem, CraftableItemType type) { BaseAddon addon = oldItem is AddonComponent ? ((AddonComponent)oldItem).Addon : null; CraftableHouseItem item = new CraftableHouseItem(type); if (oldItem.Parent is Container) { ((Container)oldItem.Parent).DropItem(item); } else { BaseHouse house = BaseHouse.FindHouseAt(oldItem); item.MoveToWorld(oldItem.Location, oldItem.Map); item.IsLockedDown = oldItem.IsLockedDown; item.IsSecure = oldItem.IsSecure; item.Movable = oldItem.Movable; if (house != null) { if (house.LockDowns.ContainsKey(oldItem)) { house.LockDowns.Remove(oldItem); house.LockDowns.Add(item, house.Owner); } else if (house.IsSecure(oldItem)) { house.ReleaseSecure(house.Owner, oldItem); house.AddSecure(house.Owner, item); } else if (addon != null) { if (house.Addons.ContainsKey(addon)) { house.Addons.Remove(addon); } house.LockDowns.Add(item, house.Owner); } } item.InvalidateProperties(); } if (addon != null) { addon.Delete(); } else { oldItem.Delete(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); ItemType = (CraftableItemType)reader.ReadInt(); Timer.DelayCall(TimeSpan.FromSeconds(30), () => { CraftableHouseItem.Replace(this, ItemType); }); }