예제 #1
0
        /// <summary>
        /// Adds or changes a progression level
        /// </summary>
        /// <param name="lvl">level to be added/changed</param>
        /// <param name="names">list of mobiles/items</param>
        /// <param name="amt">list of amounts for the mobiles/items</param>
        /// <param name="limit">time limit for this level</param>
        public void SetLevel(int lvl, List<string> names, List<int> amt, TimeSpan limit)
        {
            ProgressionLevel level = new ProgressionLevel();
            level.Mobs = names;
            level.MobAmts = amt;
            level.TimeLimit = limit;

            if (m_Levels.Count >= lvl)
                m_Levels[lvl - 1] = level;
            else if ((m_Levels.Count + 1) == lvl)
                m_Levels.Add(level);
            else
            {
                for (int i = m_Levels.Count; i < lvl; i++)
                {
                    if (i != (lvl-1))
                        m_Levels.Add(new ProgressionLevel());
                    else
                        m_Levels.Add(level);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Loads the object
        /// </summary>
        /// <param name="reader"></param>
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_Active = reader.ReadBool();
            m_CurrLvl = reader.ReadInt();
            m_HomeRange = reader.ReadInt();
            m_LevelAmt = reader.ReadInt();
            m_PlayerRange = reader.ReadInt();
            m_RechargeDelay = reader.ReadDateTime();
            m_RechargeTime = reader.ReadTimeSpan();
            m_SpawnStarted = reader.ReadBool();
            m_UseRitual = reader.ReadBool();
            m_WalkingRange = reader.ReadInt();
            m_WaveStarted = reader.ReadBool();

            int size = reader.ReadInt();
            m_CreaturesName = new List<string>();
            for (int i = 0; i < size; ++i)
            {
                string typeName = reader.ReadString();
                m_CreaturesName.Add(typeName);
            }

            int count = reader.ReadInt();
            m_Creatures = new List<IEntity>();
            for (int i = 0; i < count; ++i)
            {
                IEntity e = World.FindEntity(reader.ReadInt());
                if (e != null)
                    m_Creatures.Add(e);
            }

            // Hack to load the progression level info
            m_Levels = new List<ProgressionLevel>();
            int amt = reader.ReadInt();
            for (int i = 0; i < amt; i++)
            {
                ProgressionLevel lvl = new ProgressionLevel();
                lvl.Load(reader);
                m_Levels.Add(lvl);
            }

            m_Timer = new SpawnerTimer(this);
            if (m_Active && !m_UseRitual)
                m_Timer.Start();

            DateTime recupe = reader.ReadDateTime();
            if (recupe > DateTime.Now)
                m_RecupeTimer = new RecupeTimer(recupe.Subtract(DateTime.Now),this);

            DateTime limit = reader.ReadDateTime();
            if (limit > DateTime.Now)
                m_TimeLimit = new LimitTimer(limit.Subtract(DateTime.Now), this);
        }