Esempio n. 1
0
        public virtual void ActivateEncounter(Mobile from)
        {
            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.PeerlessMap = Map;

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

                    MasterKeys.Add(key);
                }
            }

            Timer.DelayCall(TimeSpan.FromSeconds(1), () => ClearContainer());
            KeyValidation = null;
        }
Esempio n. 2
0
 static void RebuildMasterKeys()
 {
     MasterKeys.Clear();
     foreach (var string_table in AllLangsLogical.Values)
     {
         foreach (var key in string_table.Keys)
         {
             if (!MasterKeys.Contains(key))
             {
                 MasterKeys.Add(key);
             }
         }
     }
 }
Esempio n. 3
0
        public static void AddNewString(string key, string value)
        {
            // Add to logical tables
            foreach (var string_table in AllLangsLogical.Values)
            {
                string_table.Add(key, value);
            }

            // Add to the visual tables
            string visKey   = Logical2Visual(key);
            string visValue = Logical2Visual(value);

            foreach (var string_table in AllLangsVisual.Values)
            {
                string_table.Add(visKey, visValue);
            }

            Dbg.Assert(!MasterKeys.Contains(key));
            MasterKeys.Add(key);

            NeedsSave = true;
        }
Esempio n. 4
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));
        }
Esempio n. 5
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));
        }