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; } }
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); } } } }
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; } } }