private static void ApplyDecoration(Session Session, ClientMessage Message) { RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.CurrentRoomId); if (Instance == null || !Instance.CheckUserRights(Session, true)) { return; } Item Item = Session.InventoryCache.GetItem(Message.PopWiredUInt32()); if (Item == null) { return; } string DecorationKey = string.Empty; switch (Item.Definition.Behavior) { case ItemBehavior.Floor: QuestManager.ProgressUserQuest(Session, QuestType.FURNI_DECORATION_FLOOR); DecorationKey = "floor"; break; case ItemBehavior.Wallpaper: QuestManager.ProgressUserQuest(Session, QuestType.FURNI_DECORATION_WALL); DecorationKey = "wallpaper"; break; case ItemBehavior.Landscape: DecorationKey = "landscape"; break; } if (DecorationKey.Length == 0) { return; } Session.InventoryCache.RemoveItem(Item.Id); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { Item.RemovePermanently(MySqlClient); Instance.Info.ApplyDecoration(MySqlClient, DecorationKey, Item.Flags); } Instance.BroadcastMessage(RoomDecorationComposer.Compose(DecorationKey, Item.Flags)); Session.SendData(InventoryItemRemovedComposer.Compose(Item.Id)); }
public static void EnterRoom(Session Session, RoomInstance Instance) { if (!Session.RoomAuthed || Session.RoomJoined || Session.AbsoluteRoomId != Instance.RoomId) { return; } Session.SendData(RoomUrlComposer.Compose("http://www.meth0d.org/snowlight")); Session.SendData(RoomEntryModelComposer.Compose(Instance.Model.Id, Instance.Info.Id)); if (Instance.Info.Type == RoomType.Flat) { Dictionary <string, string> Decorations = Instance.Info.Decorations; foreach (KeyValuePair <string, string> Decoration in Decorations) { Session.SendData(RoomDecorationComposer.Compose(Decoration.Key, Decoration.Value)); } Session.SendData(RoomRatingInfoComposer.Compose((Session.RatedRoomsCache.HasRatedRoom(Instance.RoomId) || Instance.CheckUserRights(Session, true)) ? Instance.Info.Score : -1)); Session.SendData(RoomEventInfoComposer.Compose(Instance.Event)); } }