All pastes #97857 Raw Edit

Untitled

public text v1 · immutable
#97857 ·published 2006-07-24 03:27 UTC
rendered paste body
using System;
using System.Text;
using System.Collections.Generic;

using Server;
using Server.Mobiles;

namespace Server.Mobiles
{
    public class EvoLevel
    {
        private int _XPToLevel;
        private int _Level;
        private int _XP;

        public int XPToLevel { get { return _XPToLevel; } }
        public int Level { get { return _Level; } }
        public int XP { get { return _XP; } set { _XP = value; } }

        public EvoLevel(int min, int max, int level)
        {
            _MinXP = min;
            _MaxXP = max;
            _Level = level;
        }

        internal void LevelUp(BaseEvoCreature evo)
        {
            _XPToLevel = evo.XPLevels[_Level];
            _Level++;
        }
    }

    public class BaseEvoCreature : Dragon
    {
        public static int XPModifier { get { return 4; } }

        private EvoLevel _CurrentLevel;
        public EvoLevel CurrentLevel { get { return _CurrentLevel; } set { _CurrentLevel = value; } }

        public virtual int[] BodieValues { get { return new int[0]; } }
        public virtual int[] StrLevels { get { return new int[0]; } }
        public virtual int[] DexLevels { get { return new int[0]; } }
        public virtual int[] IntLevels { get { return new int[0]; } }
        public virtual int[] XPLevels { get { return new int[0]; } }
        public override bool IsEvo { get { return true; } }

        public virtual void LevelUp()
        {
            if (CurrentLevel.Level - 1 < BodieValues.Length)
            {
                Body = new Body(BodyValues[CurrentLevel.Level]);

                RawDex = DexLevels[CurrentLevel.Level];
                RawStr = StrLevels[CurrentLevel.Level];
                RawInt = IntLevels[CurrentLevel.Level];

                CurrentLevel.LevelUp(this);

                InvalidateProperties();
            }
        }

        internal void AwardXP(int xp)
        {
            CurrentLevel.XP += xp;

            if (CheckLevelUp())
                LevelUp();
        }

        private virtual bool CheckLevelUp()
        {
            return (CurrentLevel.XP >= CurrentLevel.XPToLevel);
        }
    }
}