Ejemplo n.º 1
0
        public bool Execute(params object[] Params)
        {
            Habbo Player = (Habbo)Params[0];

            if (Player == null)
            {
                return(false);
            }

            int.TryParse(StringData, out int scoreToGet);
            RoomUser User = Player.CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Player.Username);

            if (Instance.GetGameManager().Points[(int)User.Team] < scoreToGet)
            {
                return(false);
            }

            Player.WiredInteraction = true;
            System.Collections.Generic.ICollection <IWiredItem> Effects    = Instance.GetWired().GetEffects(this);
            System.Collections.Generic.ICollection <IWiredItem> Conditions = Instance.GetWired().GetConditions(this);

            foreach (IWiredItem Condition in Conditions.ToList())
            {
                if (!Condition.Execute(Player))
                {
                    return(false);
                }

                Instance.GetWired().OnEvent(Condition.Item);
            }

            bool HasRandomEffectAddon =
                Effects.Where(x => x.Type == WiredBoxType.AddonRandomEffect).ToList().Any();

            if (HasRandomEffectAddon)
            {
                //Okay, so we have a random addon effect, now lets get the IWiredItem and attempt to execute it.
                IWiredItem RandomBox = Effects.FirstOrDefault(x => x.Type == WiredBoxType.AddonRandomEffect);
                if (!RandomBox.Execute())
                {
                    return(false);
                }

                //Success! Let's get our selected box and continue.
                IWiredItem SelectedBox = Instance.GetWired().GetRandomEffect(Effects.ToList());
                if (!SelectedBox.Execute())
                {
                    return(false);
                }

                //Woo! Almost there captain, now lets broadcast the update to the room instance.
                Instance?.GetWired().OnEvent(RandomBox.Item);
                Instance?.GetWired().OnEvent(SelectedBox.Item);
            }
            else
            {
                foreach (IWiredItem Effect in Effects.ToList())
                {
                    if (!Effect.Execute(Player))
                    {
                        return(false);
                    }

                    Instance.GetWired().OnEvent(Effect.Item);
                }
            }

            return(true);
        }