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); } } }