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