Esempio n. 1
0
        public void ExecuteServerWork(TimeSpan elapsedTime)
        {
            ServerTimer.Update(elapsedTime);

            if (ServerTimer.Elapsed)
            {
                UpdateAreas(elapsedTime);
                UpdateComponents(elapsedTime);
            }
        }
        public void Update(TimeSpan elapsedTime)
        {
            ServerTimer.Update(elapsedTime);

            if (ServerTimer.Elapsed)
            {
                UpdateClients(elapsedTime);
                UpdateAreas(elapsedTime);
                UpdateComponents(elapsedTime);
            }
        }
        private void Regen(TimeSpan elapsedTime)
        {
            if (Aisling.Con > Aisling.ExpLevel + 1)
            {
                HpRegenTimer.Delay = TimeSpan.FromMilliseconds(ServerContext.Config.RegenRate / 3);
            }

            if (Aisling.Wis > Aisling.ExpLevel + 1)
            {
                MpRegenTimer.Delay = TimeSpan.FromMilliseconds(ServerContext.Config.RegenRate / 3);
            }

            HpRegenTimer.Update(elapsedTime);
            MpRegenTimer.Update(elapsedTime);

            if (HpRegenTimer.Elapsed)
            {
                HpRegenTimer.Reset();

                var hpRegenSeed   = (Aisling.Con - Aisling.ExpLevel).Clamp(0, 10) * 0.01;
                var hpRegenAmount = (Aisling.MaximumHp * (hpRegenSeed + 0.10));

                Aisling.CurrentHp = (Aisling.CurrentHp + (int)hpRegenAmount).Clamp(0, Aisling.MaximumHp);
                SendStats(StatusFlags.StructB);
            }

            if (MpRegenTimer.Elapsed)
            {
                MpRegenTimer.Reset();
                var mpRegenSeed   = (Aisling.Wis - Aisling.ExpLevel).Clamp(0, 10) * 0.01;
                var mpRegenAmount = (Aisling.MaximumMp * (mpRegenSeed + 0.10));

                Aisling.CurrentMp = (Aisling.CurrentMp + (int)mpRegenAmount).Clamp(0, Aisling.MaximumMp);
                SendStats(StatusFlags.StructB);
            }
        }