예제 #1
0
		public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRight)
		{
			if (UserHasRight)
			{
				if (this.Modes == 0)
				{
					Item.UpdateState(false, true);
				}
				int num = 0;
				int num2 = 0;
				if (Item.ExtraData.Length > 0)
				{
					num = int.Parse(Item.ExtraData);
				}
				if (num <= 0)
				{
					num2 = 1;
				}
				else
				{
					if (num >= this.Modes)
					{
						num2 = 0;
					}
					else
					{
						num2 = num + 1;
					}
				}
				if (num2 == 0)
				{
					if (Item.GetRoom().method_97(Item.GetX, Item.GetY))
					{
						return;
					}
					Dictionary<int, AffectedTile> dictionary = Item.GetRoom().GetAffectedTiles(Item.GetBaseItem().Length, Item.GetBaseItem().Width, Item.GetX, Item.GetY, Item.Rot);
					if (dictionary == null)
					{
						dictionary = new Dictionary<int, AffectedTile>();
					}
					foreach (AffectedTile current in dictionary.Values)
					{
						if (Item.GetRoom().method_97(current.X, current.Y))
						{
							return;
						}
					}
				}
				Item.ExtraData = num2.ToString();
				Item.UpdateState();
				Item.GetRoom().GenerateMaps();
			}
		}
예제 #2
0
 public override void OnRemove(GameClient Session, RoomItem Item)
 {
     RoomMusicController roomMusicController = PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId).GetRoomMusicController();
     roomMusicController.Stop();
     roomMusicController.UnLinkRoomOutputItem();
     Item.UpdateState(true, true);
 }
		public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0)
		{
            if (RoomItem_0.ExtraData != "-1")
			{
                RoomItem_0.ExtraData = "-1";
                RoomItem_0.UpdateState(false, true);
				RoomItem_0.ReqUpdate(3);
			}
		}
예제 #4
0
		public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRight)
		{
			if (UserHasRight && Item.ExtraData == "0")
			{
				Item.ExtraData = "1";
				Item.UpdateState(false, true);
				Item.ReqUpdate(4);
			}
		}
예제 #5
0
		public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRight)
		{
			if (UserHasRight && Item.ExtraData != "-1")
			{
				Item.ExtraData = "-1";
				Item.UpdateState();
				Item.ReqUpdate(10);
			}
		}
예제 #6
0
		public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRight)
		{
			RoomUser @class = null;
			if (Session != null)
			{
				@class = Item.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id);
				if (@class == null)
				{
					return;
				}
			}
			if (Session == null || Item.GetRoom().method_99(Item.GetX, Item.GetY, @class.X, @class.Y))
			{
				if (Item.ExtraData != "-1")
				{
					if (Request == -1)
					{
						Item.ExtraData = "0";
						Item.UpdateState();
					}
					else
					{
						Item.InteractingUser = @class.HabboId;
						Item.ExtraData = "-1";
						Item.UpdateState(false, true);
						Item.ReqUpdate(4);
					}
				}
			}
			else
			{
				if (Session != null && @class != null && @class.CanWalk)
				{
					try
					{
						@class.MoveTo(Item.SquareInFront);
					}
					catch
					{
					}
				}
			}
		}
예제 #7
0
		public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0)
		{
			if (bool_0)
			{
				int num = 0;
				if (RoomItem_0.ExtraData.Length > 0)
				{
					num = int.Parse(RoomItem_0.ExtraData);
				}
				if (int_0 == 0)
				{
					if (num <= -1)
					{
						num = 0;
					}
					else
					{
						if (num >= 0)
						{
							num = -1;
						}
					}
				}
				else
				{
					if (int_0 >= 1)
					{
						if (int_0 == 1)
						{
							num--;
							if (num < 0)
							{
								num = 0;
							}
						}
						else
						{
							if (int_0 == 2)
							{
								num++;
								if (num >= 100)
								{
									num = 0;
								}
							}
						}
					}
				}
				RoomItem_0.ExtraData = num.ToString();
				RoomItem_0.UpdateState();
			}
		}
예제 #8
0
		public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0)
		{
			if (RoomItem_0.ExtraData != "1" && RoomItem_0.GetBaseItem().VendingIds.Count >= 1 && RoomItem_0.InteractingUser == 0u)
			{
				if (Session != null)
				{
					RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id);
					if (@class == null)
					{
						return;
					}
					if (!RoomItem_0.GetRoom().method_99(@class.X, @class.Y, RoomItem_0.GetX, RoomItem_0.GetY))
					{
						if ([email protected])
						{
							return;
						}
						try
						{
							@class.MoveTo(RoomItem_0.SquareInFront);
							return;
						}
						catch
						{
							return;
						}
					}
					RoomItem_0.InteractingUser = Session.GetHabbo().Id;
					@class.CanWalk = false;
					@class.ClearMovement(true);
					@class.SetRot(Rotation.Calculate(@class.X, @class.Y, RoomItem_0.GetX, RoomItem_0.GetY));
				}
				RoomItem_0.ReqUpdate(2);
				RoomItem_0.ExtraData = "1";
				RoomItem_0.UpdateState(false, true);
			}
		}
예제 #9
0
        internal void ProcessUpdates()
        {
            this.UpdateCounter--;
            if (this.UpdateCounter <= 0)
            {
                this.UpdateNeeded  = false;
                this.UpdateCounter = 0;
                if (this.TimerRunning && this.int_0 > 0)
                {
                    this.int_0            += 500;
                    this.GetRoom().int_13 += 500;
                    this.UpdateNeeded      = true;
                    if (this.int_0 > SongManager.GetSong(Convert.ToInt32(this.ExtraData)).Length)
                    {
                        ServerMessage Message = new ServerMessage(327);
                        Message.AppendInt32(7);
                        Message.AppendInt32(6);
                        Message.AppendInt32(7);
                        Message.AppendInt32(0);
                        Message.AppendInt32(0);
                        this.GetRoom().SendMessage(Message, null);
                        this.int_0            = 1;
                        this.GetRoom().int_13 = 0;
                    }
                }
                else
                {
                    string text = this.GetBaseItem().InteractionType.ToLower();
                    switch (text)
                    {
                    case "onewaygate":
                    {
                        RoomUser roomUserByHabbo = null;
                        if (this.InteractingUser > 0)
                        {
                            roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                        }
                        if (roomUserByHabbo != null && roomUserByHabbo.X == this.mX && roomUserByHabbo.Y == this.mY && this.Extra1 != "tried")
                        {
                            this.ExtraData = "1";
                            this.Extra1    = "tried";
                            roomUserByHabbo.UnlockWalking();
                            roomUserByHabbo.MoveTo(this.SquareBehind);
                            this.ReqUpdate(0);
                            this.UpdateState(false, true);
                        }
                        else
                        {
                            if ((roomUserByHabbo != null && (roomUserByHabbo.Coordinate != this.SquareBehind)) || this.Extra1 == "tried")
                            {
                                this.Extra1          = "";
                                this.ExtraData       = "0";
                                this.InteractingUser = 0;
                                this.UpdateState(false, true);
                                this.GetRoom().GenerateMaps();
                            }
                            else
                            {
                                if (this.ExtraData == "1")
                                {
                                    this.ExtraData = "0";
                                    this.UpdateState(false, true);
                                }
                            }
                        }
                        if (roomUserByHabbo == null)
                        {
                            this.InteractingUser = 0u;
                        }
                        break;
                    }

                    case "teleport":
                    {
                        bool flag  = false;
                        bool flag2 = false;
                        if (this.InteractingUser > 0u)
                        {
                            RoomUser roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (roomUserByHabbo != null)
                            {
                                if (!(roomUserByHabbo.Coordinate == this.Coordinate))
                                {
                                    roomUserByHabbo.AllowOverride = false;
                                    if (roomUserByHabbo.TeleDelay == -1)
                                    {
                                        roomUserByHabbo.TeleDelay = 1;
                                    }
                                    if (TeleHandler.IsTeleLinked(this.Id))
                                    {
                                        flag2 = true;
                                        if (roomUserByHabbo.TeleDelay == 0)
                                        {
                                            uint num2 = TeleHandler.GetLinkedTele(this.Id);
                                            uint num3 = TeleHandler.GetTeleRoomId(num2);
                                            if (num3 == this.RoomId)
                                            {
                                                RoomItem class2 = this.GetRoom().GetItem(num2);
                                                if (class2 == null)
                                                {
                                                    roomUserByHabbo.UnlockWalking();
                                                }
                                                else
                                                {
                                                    roomUserByHabbo.SetPos(class2.GetX, class2.GetY, class2.GetZ);
                                                    roomUserByHabbo.SetRot(class2.Rot);
                                                    class2.ExtraData = "2";
                                                    class2.UpdateState(false, true);
                                                    class2.InteractingUser2 = this.InteractingUser;
                                                }
                                            }
                                            else
                                            {
                                                if (!roomUserByHabbo.IsBot)
                                                {
                                                    PhoenixEnvironment.GetGame().GetRoomManager().method_5(new TeleUserData(roomUserByHabbo.GetClient().GetMessageHandler(), roomUserByHabbo.GetClient().GetHabbo(), num3, num2));
                                                }
                                            }
                                            this.InteractingUser = 0u;
                                        }
                                        else
                                        {
                                            roomUserByHabbo.TeleDelay--;
                                        }
                                    }
                                    else
                                    {
                                        roomUserByHabbo.UnlockWalking();
                                        this.InteractingUser = 0u;
                                        roomUserByHabbo.MoveTo(this.SquareInFront);
                                    }
                                }
                                else
                                {
                                    if ((roomUserByHabbo.Coordinate == this.SquareInFront) && roomUserByHabbo.Item == this)
                                    {
                                        roomUserByHabbo.AllowOverride = true;
                                        flag = true;
                                        if (roomUserByHabbo.IsWalking && (roomUserByHabbo.GoalX != this.mX || roomUserByHabbo.GoalY != this.mY))
                                        {
                                            roomUserByHabbo.ClearMovement(true);
                                        }
                                        roomUserByHabbo.CanWalk       = false;
                                        roomUserByHabbo.AllowOverride = true;
                                        roomUserByHabbo.MoveTo(this.Coordinate);
                                    }
                                    else
                                    {
                                        this.InteractingUser = 0u;
                                    }
                                }
                            }
                            else
                            {
                                this.InteractingUser = 0u;
                            }
                        }
                        if (this.InteractingUser2 > 0u)
                        {
                            RoomUser user2 = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser2);
                            if (user2 != null)
                            {
                                flag = true;
                                user2.UnlockWalking();
                                if (user2.Coordinate == this.Coordinate)
                                {
                                    user2.MoveTo(this.SquareInFront);
                                }
                            }
                            this.InteractingUser2 = 0u;
                        }
                        if (flag)
                        {
                            if (this.ExtraData != "1")
                            {
                                this.ExtraData = "1";
                                this.UpdateState(false, true);
                            }
                        }
                        else
                        {
                            if (flag2)
                            {
                                if (this.ExtraData != "2")
                                {
                                    this.ExtraData = "2";
                                    this.UpdateState(false, true);
                                }
                            }
                            else
                            {
                                if (this.ExtraData != "0")
                                {
                                    this.ExtraData = "0";
                                    this.UpdateState(false, true);
                                }
                            }
                        }
                        this.ReqUpdate(1);
                        break;
                    }

                    case "bottle":
                    {
                        int num = PhoenixEnvironment.GetRandomNumber(0, 7);
                        this.ExtraData = num.ToString();
                        this.UpdateState();
                        break;
                    }

                    case "dice":
                        try
                        {
                            RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (@class.GetClient().GetHabbo().Rigger > 0)
                            {
                                this.ExtraData = @class.GetClient().GetHabbo().Rigger.ToString();
                                @class.GetClient().GetHabbo().Rigger = 0;
                            }
                            else
                            {
                                int num = PhoenixEnvironment.GetRandomNumber(1, 6);
                                this.ExtraData = num.ToString();
                            }
                        }
                        catch
                        {
                            int num = PhoenixEnvironment.GetRandomNumber(1, 6);
                            this.ExtraData = num.ToString();
                        }
                        this.UpdateState();
                        break;

                    case "habbowheel":
                    {
                        int num = PhoenixEnvironment.GetRandomNumber(1, 10);
                        this.ExtraData = num.ToString();
                        this.UpdateState();
                        break;
                    }

                    case "loveshuffler":
                        if (this.ExtraData == "0")
                        {
                            int num = PhoenixEnvironment.GetRandomNumber(1, 4);
                            this.ExtraData = num.ToString();
                            this.ReqUpdate(20);
                        }
                        else
                        {
                            if (this.ExtraData != "-1")
                            {
                                this.ExtraData = "-1";
                            }
                        }
                        this.UpdateState(false, true);
                        break;

                    case "alert":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "vendingmachine":
                        if (this.ExtraData == "1")
                        {
                            RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (@class != null)
                            {
                                @class.UnlockWalking();
                                int int_ = this.GetBaseItem().VendingIds[PhoenixEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)];
                                @class.CarryItem(int_);
                            }
                            this.InteractingUser = 0u;
                            this.ExtraData       = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "wf_trg_onsay":
                    case "wf_trg_enterroom":
                    case "wf_trg_furnistate":
                    case "wf_trg_onfurni":
                    case "wf_trg_offfurni":
                    case "wf_trg_gameend":
                    case "wf_trg_gamestart":
                    case "wf_trg_attime":
                    case "wf_trg_atscore":
                    case "wf_act_saymsg":
                    case "wf_act_togglefurni":
                    case "wf_act_givepoints":
                    case "wf_act_moverotate":
                    case "wf_act_matchfurni":
                    case "wf_act_give_phx":
                    case "wf_cnd_trggrer_on_frn":
                    case "wf_cnd_furnis_hv_avtrs":
                    case "wf_cnd_has_furni_on":
                    case "wf_cnd_phx":
                    case "bb_teleport":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "wf_trg_timer":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        if (this.Extra1.Length > 0)
                        {
                            this.GetRoom().method_15(this);
                            this.ReqUpdate(Convert.ToInt32(Convert.ToDouble(this.Extra1) * 2.0));
                        }
                        break;

                    case "wf_act_moveuser":
                        if (this.dictionary_1.Count > 0 && this.GetRoom().UserList != null)
                        {
                            int        num4      = 0;
                            RoomUser[] RoomUser_ = this.GetRoom().UserList;
                            for (int i = 0; i < RoomUser_.Length; i++)
                            {
                                RoomUser class4 = RoomUser_[i];
                                if (class4 != null)
                                {
                                    if (class4.IsBot)
                                    {
                                        this.dictionary_1.Remove(class4);
                                    }
                                    if (this.dictionary_1.ContainsKey(class4))
                                    {
                                        if (this.dictionary_1[class4] > 0)
                                        {
                                            if (this.dictionary_1[class4] == 10 && !class4.IsBot)
                                            {
                                                class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(4, true);
                                            }
                                            Dictionary <RoomUser, int> dictionary;
                                            RoomUser key;
                                            (dictionary = this.dictionary_1)[key = class4] = dictionary[key] - 1;
                                            num4++;
                                        }
                                        else
                                        {
                                            this.dictionary_1.Remove(class4);
                                            class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(0, true);
                                        }
                                    }
                                }
                            }
                            if (num4 > 0)
                            {
                                this.ReqUpdate(0);
                            }
                            else
                            {
                                this.dictionary_1.Clear();
                            }
                        }
                        break;

                    case "counter":
                        if (this.TimerRunning && this.Extra1 != "1")
                        {
                            this.ExtraData = Convert.ToString(Convert.ToInt32(this.ExtraData) - 1);
                            if (Convert.ToInt32(this.ExtraData) <= 0)
                            {
                                this.ExtraData    = "0";
                                this.TimerRunning = false;
                                this.GetRoom().method_89(0, this, true);
                            }
                            this.UpdateState(true, true);
                            this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData));
                            this.Extra1 = "1";
                            this.ReqUpdate(1);
                        }
                        else
                        {
                            if (this.TimerRunning)
                            {
                                this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData) - 0.5);
                                this.Extra1 = "0";
                                this.ReqUpdate(1);
                            }
                        }
                        break;
                    }
                }
            }
        }
		public override void OnPlace(GameClient Session, RoomItem RoomItem_0)
		{
            RoomItem_0.ExtraData = "0";
            RoomItem_0.UpdateState(true, false);
		}
		public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRight)
		{
			if (UserHasRight)
			{
				int num = 0;
				if (Item.ExtraData.Length > 0)
				{
					num = int.Parse(Item.ExtraData);
				}
				if (Request == 0)
				{
					if (num <= -1)
					{
						num = 0;
					}
					else
					{
						if (num >= 0)
						{
							num = -1;
						}
					}
				}
				else
				{
					if (Request >= 1)
					{
						if (Request == 1)
						{
							if (!Item.TimerRunning)
							{
								Item.TimerRunning = true;
								Item.ReqUpdate(1);
								if (Session != null)
								{
									RoomUser RoomUser_ = Session.GetHabbo().CurrentRoom.GetRoomUserByHabbo(Session.GetHabbo().Id);
									Item.GetRoom().method_14(RoomUser_);
								}
							}
							else
							{
								Item.TimerRunning = false;
							}
						}
						else
						{
							if (Request == 2)
							{
								num += 60;
								if (num >= 600)
								{
									num = 0;
								}
							}
						}
					}
				}
				Item.ExtraData = num.ToString();
				Item.UpdateState(true, true);
			}
		}
예제 #12
0
파일: Room.cs 프로젝트: neto737/Phoenix_3.0
 public void method_91(RoomItem RoomItem_0, RoomUser RoomUser_1)
 {
     RoomItem_0.ExtraData = "1";
     RoomItem_0.UpdateState(false, true);
     RoomItem_0.ReqUpdate(1);
     List<RoomItem> list = new List<RoomItem>();
     RoomUser_1.ClearMovement(true);
     foreach (RoomItem @class in this.Hashtable_0.Values)
     {
         if (@class != RoomItem_0 && !(@class.GetBaseItem().InteractionType.ToLower() != "bb_teleport"))
         {
             list.Add(@class);
         }
     }
     if (list.Count > 0)
     {
         Random random = new Random((int)PhoenixEnvironment.GetUnixTimestamp() * (int)RoomUser_1.HabboId);
         int index = random.Next(0, list.Count);
         list[index].ExtraData = "1";
         list[index].UpdateState(false, true);
         list[index].ReqUpdate(1);
         this.byte_0[RoomUser_1.X, RoomUser_1.Y] = 1;
         this.byte_0[list[index].GetX, list[index].GetY] = 1;
         RoomUser_1.SetPos(list[index].GetX, list[index].GetY, list[index].GetZ);
         RoomUser_1.UpdateNeeded = true;
     }
 }
예제 #13
0
파일: Room.cs 프로젝트: neto737/Phoenix_3.0
        public bool method_21(RoomUser RoomUser_1, RoomItem RoomItem_0, string string_10)
        {
            bool result;
            try
            {
                if (this.bool_6 || this.bool_7)
                {
                    result = false;
                }
                else
                {
                    bool flag = false;
                    int num = 0;
                    int num2 = 0;
                    bool flag2 = false;
                    string text = RoomItem_0.GetBaseItem().InteractionType.ToLower();
                    switch (text)
                    {
                        case "wf_trg_onsay":
                            if (string_10.Contains(RoomItem_0.Extra1.ToLower()))
                            {
                                flag = true;
                            }
                            break;
                        case "wf_trg_enterroom":
                            if (RoomItem_0.Extra1 == "" || RoomItem_0.Extra1 == RoomUser_1.GetClient().GetHabbo().Username)
                            {
                                flag = true;
                            }
                            break;
                        case "wf_trg_furnistate":
                            if (RoomItem_0.Extra2.Length > 0)
                            {
                                string[] collection = RoomItem_0.Extra2.Split(new char[]
							{
								','
							});
                                List<string> list = new List<string>(collection);
                                foreach (string current in list)
                                {
                                    if (current == string_10)
                                    {
                                        flag = true;
                                    }
                                }
                            }
                            break;
                        case "wf_trg_onfurni":
                            if (RoomItem_0.Extra2.Length > 0)
                            {
                                string[] collection = RoomItem_0.Extra2.Split(new char[]
							{
								','
							});
                                List<string> list = new List<string>(collection);
                                List<string> list2 = list;
                                foreach (string current in list)
                                {
                                    if (!(current != string_10))
                                    {
                                        RoomItem @class = this.GetItem(Convert.ToUInt32(string_10));
                                        if (@class != null)
                                        {
                                            flag = true;
                                        }
                                        else
                                        {
                                            list2.Remove(current);
                                        }
                                    }
                                }
                                RoomItem_0.Extra2 = string.Join(",", list2.ToArray());
                            }
                            break;
                        case "wf_trg_offfurni":
                            if (RoomItem_0.Extra2.Length > 0)
                            {
                                string[] collection = RoomItem_0.Extra2.Split(new char[]
							{
								','
							});
                                List<string> list = new List<string>(collection);
                                List<string> list2 = list;
                                foreach (string current in list)
                                {
                                    if (!(current != string_10))
                                    {
                                        RoomItem @class = this.GetItem(Convert.ToUInt32(string_10));
                                        if (@class != null)
                                        {
                                            flag = true;
                                        }
                                        else
                                        {
                                            list2.Remove(current);
                                        }
                                    }
                                }
                                RoomItem_0.Extra2 = string.Join(",", list2.ToArray());
                            }
                            break;
                        case "wf_trg_gameend":
                            if (string_10 == "GameEnded")
                            {
                                flag = true;
                            }
                            break;
                        case "wf_trg_gamestart":
                            if (string_10 == "GameBegun")
                            {
                                flag = true;
                            }
                            break;
                        case "wf_trg_timer":
                            if (string_10 == "Timer")
                            {
                                flag = true;
                            }
                            break;
                        case "wf_trg_attime":
                            if (string_10 == "AtTime")
                            {
                                flag = true;
                            }
                            break;
                        case "wf_trg_atscore":
                            if (string_10 == "TheScore")
                            {
                                flag = true;
                            }
                            break;
                    }
                    try
                    {
                        List<RoomItem> list3 = this.method_93(RoomItem_0.GetX, RoomItem_0.GetY);
                        if (list3 == null)
                        {
                            result = false;
                            return result;
                        }
                        foreach (RoomItem current2 in list3)
                        {
                            text = current2.GetBaseItem().InteractionType.ToLower();
                            if (text != null)
                            {
                                int num4;
                                if (!(text == "wf_cnd_phx"))
                                {
                                    if (!(text == "wf_cnd_trggrer_on_frn"))
                                    {
                                        string[] collection;
                                        List<string> list;
                                        List<RoomItem> list4;
                                        if (!(text == "wf_cnd_furnis_hv_avtrs"))
                                        {
                                            if (!(text == "wf_cnd_has_furni_on"))
                                            {
                                                continue;
                                            }
                                            num4 = num2;
                                            num++;
                                            current2.ExtraData = "1";
                                            current2.UpdateState(false, true);
                                            current2.ReqUpdate(1);
                                            current2.method_10();
                                            if (current2.Extra2.Length <= 0)
                                            {
                                                continue;
                                            }
                                            collection = current2.Extra2.Split(new char[]
											{
												','
											});
                                            list = new List<string>(collection);
                                            list4 = new List<RoomItem>();
                                            foreach (string current3 in list)
                                            {
                                                list4.Add(this.GetItem(Convert.ToUInt32(current3)));
                                            }
                                            using (List<RoomItem>.Enumerator enumerator3 = list4.GetEnumerator())
                                            {
                                                while (enumerator3.MoveNext())
                                                {
                                                    RoomItem current4 = enumerator3.Current;
                                                    if (current4 != null)
                                                    {
                                                        Dictionary<int, AffectedTile> dictionary = current4.GetAffectedTiles;
                                                        if (dictionary == null)
                                                        {
                                                            dictionary = new Dictionary<int, AffectedTile>();
                                                        }
                                                        List<RoomItem> list5 = new List<RoomItem>(this.method_45(current4.GetX, current4.GetY));
                                                        if (list5.Count > 1 && num4 + 1 != num2)
                                                        {
                                                            num2++;
                                                            break;
                                                        }
                                                        foreach (AffectedTile current5 in dictionary.Values)
                                                        {
                                                            list5 = new List<RoomItem>(this.method_45(current5.X, current5.Y));
                                                            if (list5.Count > 1 && num4 + 1 != num2)
                                                            {
                                                                num2++;
                                                                break;
                                                            }
                                                        }
                                                    }
                                                }
                                                continue;
                                            }
                                        }
                                        num++;
                                        current2.ExtraData = "1";
                                        current2.UpdateState(false, true);
                                        current2.ReqUpdate(1);
                                        current2.method_10();
                                        if (current2.Extra2.Length <= 0)
                                        {
                                            continue;
                                        }
                                        collection = current2.Extra2.Split(new char[]
										{
											','
										});
                                        list = new List<string>(collection);
                                        list4 = new List<RoomItem>();
                                        foreach (string current3 in list)
                                        {
                                            list4.Add(this.GetItem(Convert.ToUInt32(current3)));
                                        }
                                        bool flag3 = true;
                                        foreach (RoomItem current4 in list4)
                                        {
                                            if (current4 != null)
                                            {
                                                bool flag4 = false;
                                                Dictionary<int, AffectedTile> dictionary = current4.GetAffectedTiles;
                                                if (dictionary == null)
                                                {
                                                    dictionary = new Dictionary<int, AffectedTile>();
                                                }
                                                if (this.SquareHasUsers(current4.GetX, current4.GetY))
                                                {
                                                    flag4 = true;
                                                }
                                                foreach (AffectedTile current5 in dictionary.Values)
                                                {
                                                    if (this.SquareHasUsers(current5.X, current5.Y))
                                                    {
                                                        flag4 = true;
                                                        break;
                                                    }
                                                }
                                                if (!flag4)
                                                {
                                                    flag3 = false;
                                                }
                                            }
                                        }
                                        if (flag3)
                                        {
                                            num2++;
                                            continue;
                                        }
                                        continue;
                                    }
                                    else
                                    {
                                        num4 = num2;
                                        num++;
                                        current2.ExtraData = "1";
                                        current2.UpdateState(false, true);
                                        current2.ReqUpdate(1);
                                        current2.method_10();
                                        if (current2.Extra2.Length <= 0)
                                        {
                                            continue;
                                        }
                                        string[] collection = current2.Extra2.Split(new char[]
										{
											','
										});
                                        List<string> list = new List<string>(collection);
                                        List<RoomItem> list4 = new List<RoomItem>();
                                        foreach (string current3 in list)
                                        {
                                            list4.Add(this.GetItem(Convert.ToUInt32(current3)));
                                        }
                                        if (RoomUser_1 == null)
                                        {
                                            continue;
                                        }
                                        using (List<RoomItem>.Enumerator enumerator3 = list4.GetEnumerator())
                                        {
                                            while (enumerator3.MoveNext())
                                            {
                                                RoomItem current4 = enumerator3.Current;
                                                if (current4 != null)
                                                {
                                                    Dictionary<int, AffectedTile> dictionary = current4.GetAffectedTiles;
                                                    if (dictionary == null)
                                                    {
                                                        dictionary = new Dictionary<int, AffectedTile>();
                                                    }
                                                    if (RoomUser_1.X == current4.GetX && RoomUser_1.Y == current4.GetY && num4 + 1 != num2)
                                                    {
                                                        num2++;
                                                        break;
                                                    }
                                                    foreach (AffectedTile current5 in dictionary.Values)
                                                    {
                                                        if (RoomUser_1.X == current5.X && RoomUser_1.Y == current5.Y && num4 + 1 != num2)
                                                        {
                                                            num2++;
                                                            break;
                                                        }
                                                    }
                                                }
                                            }
                                            continue;
                                        }
                                    }
                                }
                                num4 = num2;
                                num++;
                                current2.ExtraData = "1";
                                current2.UpdateState(false, true);
                                current2.ReqUpdate(1);
                                if (current2.Extra1.Length > 0)
                                {
                                    string string_11 = current2.Extra1.Split(new char[]
									{
										':'
									})[0].ToLower();
                                    string string_12 = current2.Extra1.Split(new char[]
									{
										':'
									})[1];
                                    if (RoomUser_1 != null)
                                    {
                                        if (!RoomUser_1.IsBot && this.IsPhxMagicAllowed(RoomUser_1, string_11, string_12))
                                        {
                                            num2++;
                                        }
                                    }
                                    else
                                    {
                                        RoomUser[] array = this.UserList;
                                        for (int i = 0; i < array.Length; i++)
                                        {
                                            RoomUser class2 = array[i];
                                            if (class2 != null && !class2.IsBot && this.IsPhxMagicAllowed(class2, string_11, string_12) && num4 + 1 != num2)
                                            {
                                                num2++;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (num != num2)
                        {
                            result = false;
                            return result;
                        }
                    }
                    catch
                    {
                    }
                    if (flag && num == num2)
                    {
                        RoomItem_0.ExtraData = "1";
                        RoomItem_0.UpdateState(false, true);
                        RoomItem_0.ReqUpdate(1);
                        List<RoomItem> list6 = this.method_93(RoomItem_0.GetX, RoomItem_0.GetY);
                        if (list6 == null)
                        {
                            result = false;
                            return result;
                        }
                        bool flag5 = false;
                        foreach (RoomItem current2 in list6)
                        {
                            if (current2.GetBaseItem().InteractionType.ToLower() == "wf_xtra_random")
                            {
                                flag5 = true;
                                break;
                            }
                        }
                        if (flag5)
                        {
                            List<RoomItem> list7 = new List<RoomItem>();
                            Random random = new Random();
                            while (list6.Count != 0)
                            {
                                int index = random.Next(0, list6.Count);
                                list7.Add(list6[index]);
                                list6.RemoveAt(index);
                            }
                            list6 = list7;
                        }
                        foreach (RoomItem current2 in list6)
                        {
                            if (flag5 && flag2)
                            {
                                break;
                            }
                            text = current2.GetBaseItem().InteractionType.ToLower();
                            switch (text)
                            {
                                case "wf_act_give_phx":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    if (current2.Extra1.Length > 0)
                                    {
                                        string string_11 = current2.Extra1.Split(new char[]
									{
										':'
									})[0].ToLower();
                                        string string_12 = current2.Extra1.Split(new char[]
									{
										':'
									})[1];
                                        if (RoomUser_1 != null)
                                        {
                                            if (!RoomUser_1.IsBot)
                                            {
                                                this.RunPhxMagic(RoomUser_1, string_11, string_12);
                                            }
                                        }
                                        else
                                        {
                                            RoomUser[] array = this.UserList;
                                            for (int i = 0; i < array.Length; i++)
                                            {
                                                RoomUser class2 = array[i];
                                                if (class2 != null && !class2.IsBot)
                                                {
                                                    this.RunPhxMagic(class2, string_11, string_12);
                                                }
                                            }
                                        }
                                        flag2 = true;
                                    }
                                    break;
                                case "wf_act_saymsg":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    if (current2.Extra1.Length > 0)
                                    {
                                        string text2 = current2.Extra1;
                                        text2 = ChatCommandHandler.ApplyWordFilter(text2);
                                        if (text2.Length > 100)
                                        {
                                            text2 = text2.Substring(0, 100);
                                        }
                                        if (RoomUser_1 != null)
                                        {
                                            if (!RoomUser_1.IsBot)
                                            {
                                                RoomUser_1.GetClient().GetHabbo().Sendselfwhisper(text2);
                                            }
                                        }
                                        else
                                        {
                                            RoomUser[] array = this.UserList;
                                            for (int i = 0; i < array.Length; i++)
                                            {
                                                RoomUser class2 = array[i];
                                                if (class2 != null && !class2.IsBot)
                                                {
                                                    class2.GetClient().GetHabbo().Sendselfwhisper(text2);
                                                }
                                            }
                                        }
                                        flag2 = true;
                                    }
                                    break;
                                case "wf_act_moveuser":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    current2.method_10();
                                    if (current2.Extra2.Length > 0)
                                    {
                                        string[] collection = current2.Extra2.Split(new char[]
									{
										','
									});
                                        List<string> list = new List<string>(collection);
                                        Random random2 = new Random();
                                        int num5 = random2.Next(0, list.Count - 1);
                                        RoomItem class3 = this.GetItem(Convert.ToUInt32(list[num5]));
                                        if (class3 != null)
                                        {
                                            if (RoomUser_1 != null)
                                            {
                                                this.byte_0[RoomUser_1.X, RoomUser_1.Y] = 1;
                                                this.byte_0[RoomUser_1.SetX, RoomUser_1.SetY] = 1;
                                                this.byte_0[class3.GetX, class3.GetY] = 1;
                                                RoomUser_1.IsWalking = false;
                                                RoomUser_1.SetX = class3.GetX;
                                                RoomUser_1.SetY = class3.GetY;
                                                RoomUser_1.SetZ = class3.GetZ;
                                                RoomUser_1.SetPos(class3.GetX, class3.GetY, class3.GetZ);
                                                RoomUser_1.UpdateNeeded = true;
                                                if (!current2.dictionary_1.ContainsKey(RoomUser_1))
                                                {
                                                    current2.dictionary_1.Add(RoomUser_1, 10);
                                                }
                                                if (RoomUser_1.Riding != null)
                                                {
                                                    RoomUser_1.Riding.Rider = null;
                                                    RoomUser_1.Target = null;
                                                    RoomUser_1.Riding = null;
                                                }
                                                this.UpdateUserStatus(RoomUser_1, true, false);
                                            }
                                            else
                                            {
                                                RoomUser[] array = this.UserList;
                                                for (int i = 0; i < array.Length; i++)
                                                {
                                                    RoomUser class2 = array[i];
                                                    if (class2 != null)
                                                    {
                                                        this.byte_0[class2.X, class2.Y] = 1;
                                                        this.byte_0[class3.GetX, class3.GetY] = 1;
                                                        class2.SetPos(class3.GetX, class3.GetY, class3.GetZ);
                                                        class2.UpdateNeeded = true;
                                                        if (!current2.dictionary_1.ContainsKey(class2))
                                                        {
                                                            current2.dictionary_1.Add(class2, 10);
                                                        }
                                                    }
                                                }
                                            }
                                            flag2 = true;
                                        }
                                    }
                                    break;
                                case "wf_act_togglefurni":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    if (current2.Extra2.Length > 0)
                                    {
                                        string[] collection = current2.Extra2.Split(new char[]
									{
										','
									});
                                        IEnumerable<string> enumerable = new List<string>(collection);
                                        List<string> list2 = enumerable.ToList<string>();
                                        foreach (string current in enumerable)
                                        {
                                            RoomItem class3 = this.GetItem(Convert.ToUInt32(current));
                                            if (class3 != null)
                                            {
                                                class3.Interactor.OnTrigger(null, class3, 0, true);
                                            }
                                            else
                                            {
                                                list2.Remove(current);
                                            }
                                        }
                                        flag2 = true;
                                    }
                                    break;
                                case "wf_act_givepoints":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    if (RoomUser_1 != null && current2.Extra1.Length > 0)
                                    {
                                        this.method_88(RoomUser_1.int_14 + 2, Convert.ToInt32(current2.Extra1), current2);
                                        flag2 = true;
                                    }
                                    break;
                                case "wf_act_moverotate":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    current2.method_9();
                                    if (current2.Extra3.Length > 0)
                                    {
                                        string[] collection = current2.Extra3.Split(new char[]
									{
										','
									});
                                        IEnumerable<string> enumerable2 = new List<string>(collection);
                                        foreach (string current in enumerable2)
                                        {
                                            RoomItem class3 = this.GetItem(Convert.ToUInt32(current));
                                            if (class3 != null)
                                            {
                                                if (current2.Extra1 != "0" && current2.Extra1 != "")
                                                {
                                                    Coord gstruct1_ = class3.SquareInFront;
                                                    int num5 = 0;
                                                    int num6 = 0;
                                                    int num7 = 0;
                                                    if (current2.Extra1 == "1")
                                                    {
                                                        Random random3 = new Random();
                                                        num5 = random3.Next(1, 5);
                                                    }
                                                    else
                                                    {
                                                        if (current2.Extra1 == "2")
                                                        {
                                                            Random random3 = new Random();
                                                            num6 = random3.Next(1, 3);
                                                        }
                                                        else
                                                        {
                                                            if (current2.Extra1 == "3")
                                                            {
                                                                Random random3 = new Random();
                                                                num7 = random3.Next(1, 3);
                                                            }
                                                        }
                                                    }
                                                    if (current2.Extra1 == "4" || num5 == 1 || num7 == 1)
                                                    {
                                                        gstruct1_ = class3.method_1(4);
                                                    }
                                                    else
                                                    {
                                                        if (current2.Extra1 == "5" || num5 == 2 || num6 == 1)
                                                        {
                                                            gstruct1_ = class3.method_1(6);
                                                        }
                                                        else
                                                        {
                                                            if (current2.Extra1 == "6" || num5 == 3 || num7 == 2)
                                                            {
                                                                gstruct1_ = class3.method_1(0);
                                                            }
                                                            else
                                                            {
                                                                if (current2.Extra1 == "7" || num5 == 4 || num6 == 2)
                                                                {
                                                                    gstruct1_ = class3.method_1(2);
                                                                }
                                                            }
                                                        }
                                                    }
                                                    if (this.method_37(gstruct1_.X, gstruct1_.Y, true, true, false, true, false) && class3.GetBaseItem().InteractionType != "wf_trg_timer")
                                                    {
                                                        this.method_41(class3, gstruct1_, current2.Id, class3.GetZ);
                                                    }
                                                }
                                                if (current2.Extra2.Length > 0 && current2.Extra2 != "0" && current2.Extra2 != "")
                                                {
                                                    int num5 = 0;
                                                    if (current2.Extra2 == "1")
                                                    {
                                                        num5 = class3.Rot + 2;
                                                        if (num5 > 6)
                                                        {
                                                            num5 = 0;
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (current2.Extra2 == "2")
                                                        {
                                                            num5 = class3.Rot - 2;
                                                            if (num5 < 0)
                                                            {
                                                                num5 = 6;
                                                            }
                                                        }
                                                        else
                                                        {
                                                            if (current2.Extra2 == "3")
                                                            {
                                                                Random random3 = new Random();
                                                                num5 = random3.Next(1, 5);
                                                                if (num5 == 1)
                                                                {
                                                                    num5 = 0;
                                                                }
                                                                else
                                                                {
                                                                    if (num5 == 2)
                                                                    {
                                                                        num5 = 2;
                                                                    }
                                                                    else
                                                                    {
                                                                        if (num5 == 3)
                                                                        {
                                                                            num5 = 4;
                                                                        }
                                                                        else
                                                                        {
                                                                            if (num5 == 4)
                                                                            {
                                                                                num5 = 6;
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                    if (current2.GetRoom().method_79(null, class3, class3.GetX, class3.GetY, num5, false, true, false))
                                                    {
                                                        flag2 = true;
                                                    }
                                                }
                                            }
                                        }
                                        flag2 = true;
                                    }
                                    break;
                                case "wf_act_matchfurni":
                                    current2.ExtraData = "1";
                                    current2.UpdateState(false, true);
                                    current2.ReqUpdate(1);
                                    current2.method_9();
                                    if (current2.Extra3.Length > 0 && current2.Extra1.Length > 0)
                                    {
                                        string[] collection = current2.Extra3.Split(new char[]
									{
										','
									});
                                        IEnumerable<string> enumerable = new List<string>(collection);
                                        string[] collection2 = current2.Extra1.Split(new char[]
									{
										';'
									});
                                        List<string> list8 = new List<string>(collection2);
                                        int num8 = 0;
                                        foreach (string current in enumerable)
                                        {
                                            RoomItem class3 = this.GetItem(Convert.ToUInt32(current));
                                            if (class3 != null && !(class3.GetBaseItem().InteractionType.ToLower() == "dice"))
                                            {
                                                string[] collection3 = list8[num8].Split(new char[]
											{
												','
											});
                                                List<string> list9 = new List<string>(collection3);
                                                bool flag6 = false;
                                                bool flag7 = false;
                                                if (current2.Extra2 != "" && class3 != null)
                                                {
                                                    int int_ = class3.GetX;
                                                    int int_2 = class3.GetY;
                                                    if (current2.Extra2.StartsWith("I"))
                                                    {
                                                        class3.ExtraData = list9[4];
                                                        flag7 = true;
                                                    }
                                                    if (current2.Extra2.Substring(1, 1) == "I")
                                                    {
                                                        class3.Rot = Convert.ToInt32(list9[3]);
                                                        flag6 = true;
                                                    }
                                                    if (current2.Extra2.EndsWith("I"))
                                                    {
                                                        int_ = Convert.ToInt32(list9[0]);
                                                        int_2 = Convert.ToInt32(list9[1]);
                                                        flag6 = true;
                                                    }
                                                    if (flag6)
                                                    {
                                                        this.method_40(class3, int_, int_2, current2.Id, class3.GetZ);
                                                    }
                                                    if (flag7)
                                                    {
                                                        class3.UpdateState(false, true);
                                                    }
                                                    this.GenerateMaps();
                                                }
                                                num8++;
                                            }
                                        }
                                    }
                                    flag2 = true;
                                    break;
                            }
                        }
                    }
                    result = flag2;
                }
            }
            catch
            {
                result = false;
            }
            return result;
        }
예제 #14
0
		public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRight)
		{
			if (this.Modes != 0 && (UserHasRight || Item.GetBaseItem().InteractionType.ToLower() == "switch"))
			{
				if (Item.GetBaseItem().InteractionType.ToLower() == "switch" && Session != null)
				{
					RoomUser @class = Session.GetHabbo().CurrentRoom.GetRoomUserByHabbo(Session.GetHabbo().Id);
					if (@class.Coordinate.X - Item.SquareInFront.X > 1 || @class.Coordinate.Y - Item.SquareInFront.Y > 1)
					{
						if (@class.CanWalk)
						{
							@class.MoveTo(Item.Coordinate);
							return;
						}
						return;
					}
				}
				int num = 0;
				if (Item.ExtraData.Length > 0)
				{
					num = int.Parse(Item.ExtraData);
				}
				int num2;
				if (num <= 0)
				{
					num2 = 1;
				}
				else
				{
					if (num >= this.Modes)
					{
						num2 = 0;
					}
					else
					{
						num2 = num + 1;
					}
				}
				if (Item.GetBaseItem().Name.Contains("jukebox"))
				{
					ServerMessage Message = new ServerMessage(327u);
					if (num2 == 1)
					{
						Message.AppendInt32(7);
						Message.AppendInt32(6);
						Message.AppendInt32(7);
						Message.AppendInt32(0);
						Message.AppendInt32(0);
						Item.int_0 = 1;
						Item.TimerRunning = true;
						Item.UpdateNeeded = true;
					}
					else
					{
						Message.AppendInt32(-1);
						Message.AppendInt32(-1);
						Message.AppendInt32(-1);
						Message.AppendInt32(-1);
						Message.AppendInt32(0);
						Item.int_0 = 0;
						Item.TimerRunning = false;
						Item.GetRoom().int_13 = 0;
					}
					Item.GetRoom().SendMessage(Message, null);
				}
				double double_ = Item.TotalHeight;
				Item.ExtraData = num2.ToString();
				Item.UpdateState();
				if (double_ != Item.TotalHeight)
				{
					Dictionary<int, AffectedTile> dictionary = Item.GetAffectedTiles;
					if (dictionary == null)
					{
						dictionary = new Dictionary<int, AffectedTile>();
					}
					Item.GetRoom().UpdateUserStatus(Item.GetRoom().GetUserForSquare(Item.GetX, Item.GetY), true, false);
					foreach (AffectedTile current in dictionary.Values)
					{
						Item.GetRoom().UpdateUserStatus(Item.GetRoom().GetUserForSquare(current.X, current.Y), true, false);
					}
				}
				if (Session != null)
				{
					RoomUser RoomUser_ = Session.GetHabbo().CurrentRoom.GetRoomUserByHabbo(Session.GetHabbo().Id);
					Item.GetRoom().method_10(RoomUser_, Item);
				}
			}
		}