Example #1
0
        public bool Sleep(Player player)
        {
            if (House == null)
            {
                return(false);
            }

            if (SleeperGuid != 0)
            {
                return(false);
            }

            BedItem nextBedItem = GetNextBedItem();

            InternalSetSleeper(player);

            if (nextBedItem != null)
            {
                nextBedItem.InternalSetSleeper(player);
            }

            // update the bedSleepersMap
            Game.SetBedSleeper(this, player.CharacterId);

            // make the player walk onto the bed
            Map.MoveCreature(player, Parent as Tile);

            // display 'Zzzz'/sleep effect
            Game.AddMagicEffect(player.GetPosition(), MagicEffects.Sleep);

            // kick player after he sees himself walk onto the bed and it change id
            uint playerId = player.Id;

            DispatcherManager.Scheduler.AddEvent(SchedulerTask.CreateSchedulerTask(SchedulerTask.SchedulerMinTicks,
                                                                                   () => Game.KickPlayer(playerId, false)));

            // change self and partner's appearance
            UpdateAppearance(player);

            if (nextBedItem != null)
            {
                nextBedItem.UpdateAppearance(player);
            }

            return(true);
        }