Esempio n. 1
0
        private void HandlePoolCamera()
        {
            if (DateTime.Now.TimeOfDay.TotalSeconds > mCameraNext || mCameraDay != DateTime.Now.DayOfYear)
            {
                if (SpecialMath.RandomNumber(0, 10) > 5)
                {
                    int randomTarget = mRoomInstance.mRoomUserIDs[SpecialMath.RandomNumber(0, mRoomInstance.mRoomUserIDs.Count - 1)];

                    int targetCamera = 1;
                    if (SpecialMath.RandomNumber(0, 10) > 5)
                    {
                        targetCamera = 2;
                    }
                    SendCameraPacket("setcamera " + targetCamera.ToString());

                    string transition = "fade";
                    if (SpecialMath.RandomNumber(0, 10) > 5)
                    {
                        transition = "cameraPan";
                    }
                    SendCameraPacket("transition " + transition);

                    SendCameraPacket("targetcamera " + randomTarget.ToString());
                }

                mCameraNext = DateTime.Now.TimeOfDay.TotalSeconds + 5;
                mCameraDay  = DateTime.Now.DayOfYear;
            }
        }
Esempio n. 2
0
        public void RoomTalkBroadcast(int sourceX, int sourceY, string chat, int roomUser)
        {
            Logging.LogEvent("Chatting to room " + mRoomID.ToString() + ": " + chat, Logging.LogLevel.Debug);
            foreach (int sessionId in mMemberSessions.Keys)
            {
                if (mRoomUsers.ContainsKey(sessionId))
                {
                    string currentChat = chat;
                    int    xDistance   = Math.Abs(sourceX - mRoomUsers[sessionId].CurrentX);
                    int    yDistance   = Math.Abs(sourceY - mRoomUsers[sessionId].CurrentY);

                    if (xDistance >= 6 || yDistance >= 6) //Garble text
                    {
                        for (int i = 0; i < chat.Length; i++)
                        {
                            if (SpecialMath.RandomNumber(0, 10) > 5 && chat[i] != ' ')
                            {
                                currentChat = currentChat.Replace(chat[i], '.');
                            }
                        }
                    }

                    if (xDistance < 9 && yDistance < 9) // User can at least partially hear
                    {
                        mMessage.Init(24);              //@X
                        mMessage.appendString(ArgumentEncoding.encodeInt(roomUser));
                        mMessage.appendString(currentChat);
                        mMessage.appendChar(2);
                        InstanceManager.Sessions.GetSession(sessionId).SendMessage(mMessage.ToString(), false);
                    }
                }
            }
        }
Esempio n. 3
0
        public void RequestSetStuffDataFloorItem(int itemId, string data, RoomUser user, FurniInfo.VarTypes overrideType)
        {
            FurniInfo     item     = GetFurniObject(itemId);
            ClientMessage mMessage = new ClientMessage();

            if (item != null)
            {
                if (overrideType != 0)
                {
                    item.VarType = overrideType;
                }

                switch (item.VarType)
                {
                case FurniInfo.VarTypes.TempOpen:
                    if (TilesTouching(item.PosX, item.PosY, user.CurrentX, user.CurrentY))
                    {
                        InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, "FALSE");
                        if (data == "TRUE")
                        {
                            NotifyClientSetStuffTempOpen(itemId);
                        }
                    }
                    break;

                case FurniInfo.VarTypes.TrueFalse:
                    if (TilesTouching(item.PosX, item.PosY, user.CurrentX, user.CurrentY))
                    {
                        if ((data == "TRUE" || data == "FALSE"))
                        {
                            InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, data);
                            NotifyClientSetStuffChange(itemId, data);
                        }
                    }
                    break;

                case FurniInfo.VarTypes.DoorDivider:
                    if (user.HasAdmin || user.HasRights)
                    {
                        if (data == "O" || data == "C")
                        {
                            if (!PlayerCheck(item.PosX, item.PosY))
                            {
                                InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, data);
                                NotifyClientSetStuffChange(itemId, data);
                                mFloorFurni = InstanceManager.Game.Furni.GetRoomFloorFurni(mRoomInstance.RoomInfo.RoomID);
                                GenerateMaps();
                            }
                        }
                    }
                    break;

                case FurniInfo.VarTypes.Dice:
                    if (TilesTouching(item.PosX, item.PosY, user.CurrentX, user.CurrentY))
                    {
                        if (data == "dice_roll" || data == "dice_off")
                        {
                            int newVal = 0;
                            if (data == "dice_roll")
                            {
                                newVal = SpecialMath.RandomNumber(1, 6);
                            }
                            bool isRoll  = newVal > 0;
                            int  rollVal = (item.FurniID * 38) + newVal;
                            InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, newVal.ToString());
                            NotifyClientDiceRoll(item.FurniID, rollVal, isRoll);
                        }
                    }
                    break;

                case FurniInfo.VarTypes.Bottle:
                    if (data == "dice_roll")
                    {
                        int  newVal  = SpecialMath.RandomNumber(0, 7);
                        bool isRoll  = newVal > 0;
                        int  rollVal = (item.FurniID * 38) + newVal;
                        InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, newVal.ToString());
                        NotifyClientDiceRoll(item.FurniID, rollVal, isRoll);
                    }
                    break;

                case FurniInfo.VarTypes.OnOff:
                    if (data == "ON" || data == "OFF")
                    {
                        InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, data);
                        NotifyClientSetStuffChange(itemId, data);
                    }
                    break;

                case FurniInfo.VarTypes.OpenOrClosed:
                    if (data == "O" || data == "C")
                    {
                        InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, data);
                        NotifyClientSetStuffChange(itemId, data);
                    }
                    break;

                case FurniInfo.VarTypes.NumericalOff:
                    int tmpNum = -1;

                    if (int.TryParse(data, out tmpNum) || data == "OFF")
                    {
                        if (tmpNum >= -1 && tmpNum < 10 && !(tmpNum == -1 && data == "-1"))
                        {
                            InstanceManager.Game.Furni.SetStuffDataFloorItem(itemId, data);
                            NotifyClientSetStuffChange(itemId, data);
                        }
                    }
                    break;
                }
            }
        }