예제 #1
0
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            if (IsKey(dropped))
            {
                if (Owner != null)
                {
                    if (Peerless != null && Peerless.CheckAlive())
                    {
                        from.SendLocalizedMessage(1075213); // The master of this realm has already been summoned and is engaged in combat.  Your opportunity will come after he has squashed the current batch of intruders!
                    }
                    else
                    {
                        from.SendLocalizedMessage(1072683, Owner.Name); // ~1_NAME~ has already activated the Prism, please wait...
                    }
                    return(false);
                }

                for (int i = 0; i < Keys.Length; i++)
                {
                    if (i == 0)
                    {
                        Owner = from;
                        KeyStartTimer(from);
                        from.SendLocalizedMessage(1074575); // You have activated this object!
                    }

                    if (Keys.Length == (i + 1))
                    {
                        KeyStopTimer();

                        from.SendLocalizedMessage(1072678); // You have awakened the master of this realm. You need to hurry to defeat it in time!

                        for (int k = 0; k < KeyCount; k++)
                        {
                            from.SendLocalizedMessage(1072680); // You have been given the key to the boss.

                            MasterKey key = MasterKey;

                            if (key != null)
                            {
                                key.Altar = this;
                                key._Map  = Map;

                                if (!from.AddToBackpack(key))
                                {
                                    key.MoveToWorld(from.Location, from.Map);
                                }

                                MasterKeys.Add(key);
                            }
                        }

                        dropped.Delete();
                        ClearContainer();
                    }
                }
            }
            else
            {
                from.SendLocalizedMessage(1072682); // This is not the proper key.
                return(false);
            }

            return(base.OnDragDrop(from, dropped));
        }
예제 #2
0
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            if (Owner != null && Owner != from)
            {
                if (Peerless != null && Peerless.CheckAlive())
                {
                    from.SendLocalizedMessage(1075213); // The master of this realm has already been summoned and is engaged in combat.  Your opportunity will come after he has squashed the current batch of intruders!
                }
                else
                {
                    from.SendLocalizedMessage(1072683, Owner.Name); // ~1_NAME~ has already activated the Prism, please wait...
                }
                return(false);
            }

            if (IsKey(dropped) && MasterKeys.Count == 0)
            {
                if (KeyValidation == null)
                {
                    KeyValidation = new List <PeerlessKeyArray>();

                    for (int i = 0; i < Keys.Length; i++)
                    {
                        KeyValidation.Add(new PeerlessKeyArray {
                            Key = Keys[i], Active = false
                        });
                    }
                }

                if (KeyValidation.Any(x => x.Active))
                {
                    if (KeyValidation.Any(x => x.Key == dropped.GetType() && !x.Active))
                    {
                        KeyValidation.Find(s => s.Key == dropped.GetType()).Active = true;
                    }
                    else
                    {
                        from.SendLocalizedMessage(1072682); // This is not the proper key.
                        return(false);
                    }
                }
                else
                {
                    Owner = from;
                    KeyStartTimer(from);
                    from.SendLocalizedMessage(1074575); // You have activated this object!
                    KeyValidation.Find(s => s.Key == dropped.GetType()).Active = true;
                }

                if (KeysValidated())
                {
                    ActivateEncounter(from);
                }
            }
            else
            {
                from.SendLocalizedMessage(1072682); // This is not the proper key.
                return(false);
            }

            return(base.OnDragDrop(from, dropped));
        }
예제 #3
0
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            if (Owner != null && Owner != from)
            {
                if (Peerless != null && Peerless.CheckAlive())
                {
                    from.SendLocalizedMessage(1075213); // The master of this realm has already been summoned and is engaged in combat.  Your opportunity will come after he has squashed the current batch of intruders!
                }
                else
                {
                    from.SendLocalizedMessage(1072683, Owner.Name); // ~1_NAME~ has already activated the Prism, please wait...
                }
                return(false);
            }

            if (IsKey(dropped) && MasterKeys.Count() == 0)
            {
                if (KeyValidation == null)
                {
                    KeyValidation = new List <PeerlessKeyArray>();

                    Keys.ToList().ForEach(x => KeyValidation.Add(new PeerlessKeyArray {
                        Key = x, Active = false
                    }));
                }

                if (KeyValidation.Any(x => x.Active == true))
                {
                    if (KeyValidation.Any(x => x.Key == dropped.GetType() && x.Active == false))
                    {
                        KeyValidation.Find(s => s.Key == dropped.GetType()).Active = true;
                    }
                    else
                    {
                        from.SendLocalizedMessage(1072682); // This is not the proper key.
                        return(false);
                    }
                }
                else
                {
                    Owner = from;
                    KeyStartTimer(from);
                    from.SendLocalizedMessage(1074575); // You have activated this object!
                    KeyValidation.Find(s => s.Key == dropped.GetType()).Active = true;
                }

                if (KeyValidation.Where(x => x.Active == true).Count() == Keys.Count())
                {
                    KeyStopTimer();

                    from.SendLocalizedMessage(1072678); // You have awakened the master of this realm. You need to hurry to defeat it in time!
                    BeginSequence(from);

                    for (int k = 0; k < KeyCount; k++)
                    {
                        from.SendLocalizedMessage(1072680); // You have been given the key to the boss.

                        MasterKey key = MasterKey;

                        if (key != null)
                        {
                            key.Altar = this;
                            key._Map  = Map;

                            if (!from.AddToBackpack(key))
                            {
                                key.MoveToWorld(from.Location, from.Map);
                            }

                            MasterKeys.Add(key);
                        }
                    }

                    Timer.DelayCall(TimeSpan.FromSeconds(1), () => ClearContainer());
                    KeyValidation = null;
                }
            }
            else
            {
                from.SendLocalizedMessage(1072682); // This is not the proper key.
                return(false);
            }

            return(base.OnDragDrop(from, dropped));
        }