Пример #1
0
        public Character(Sprite[] sprite, Vector2 position, Move weapon, List<MagicMove> magic)
        {
            transperancy = 255;
            this.sprite = sprite;
            spriteNum = 0;

            this.position = position;
            this.weapon = weapon;
            this.magic = magic;

            map = LevelManager.GetInstance().DungeonMap;
        }
 public Enemy CreateEnemy(EnemyData data)
 {
     Move weapon;
     weapon = new Move(LoadMoveData(TitleContainer.OpenStream(@"Content\DataFiles\Weapons\" + data.weapon + ".move")));
     List<Move> item = new List<Move>();
     for (int i = 0; i < data.items.Count; i++)
     {
         item.Add(new Move(LoadMoveData(TitleContainer.OpenStream(@"Content\DataFiles\Items\" + data.items[i] + ".move"))));
     }
     List<MagicMove> magic = new List<MagicMove>();
     for (int i = 0; i < data.magic.Count; i++)
     {
         magic.Add(new MagicMove(LoadMagicData(TitleContainer.OpenStream(@"Content\DataFiles\Spells\" + data.magic[i] + ".spell"))));
     }
     Enemy enemy = new Enemy(data, weapon, item, magic, GetSprites(data.name, data.type));
     return enemy;
 }
Пример #3
0
 public Enemy(EnemyData data, Move weapon, List<Move> items, List<MagicMove> magic, Sprite[] sprite)
     : base(sprite, new Vector2(Camera.ViewPortWidth - 100 - sprite[0].Width, 100), weapon, magic)
 {
     alive = true;
     this.name = data.name;
     //this.armour = armour;
     this.maxHealth = data.health;
     this.currentHealth = data.health;
     this.maxMP = data.mp;
     this.currentMP = data.mp;
     this.strength = data.strength;
     this.intelligence = data.intelligence;
     this.stamina = data.stamina;
     this.dexterity = data.dexterity;
     this.defense = data.defense;
     this.xpValue = data.xp;
     this.items = items;
 }
Пример #4
0
        private int xpReq; //How much XP is need for the next level

        #endregion Fields

        #region Constructors

        public Player(Sprite[] sprite, Vector2 position, Move weapon, List<MagicMove> magic)
            : base(sprite, position, weapon, magic)
        {
            alive = true;
            level = 1;
            xp = 0;
            xpReq = 100;

            maxHealth = 30;
            currentHealth = 30;
            maxMP = 12;
            currentMP = 12;

            defense = 8; //Default defense without armour
            strength = 8;
            intelligence = 8;
            dexterity = 8;
            stamina = 6;

            speed = 250;

            items = new List<Move>();
        }
Пример #5
0
 public Player(Texture2D mapImage, Sprite[] sprite, Vector2 position, Move weapon, List<MagicMove> magic)
     : this(sprite, position, weapon, magic)
 {
     this.mapImage = mapImage;
 }
Пример #6
0
        //1 - Weapon, 2 - Magic, 3 - Item
        public void UseMove(Move move, int type)
        {
            if (turn == 1)
            {
                if ((player.Stamina + pStaBonus) - pStaUsed - move.StaminaCost >= 0)
                {
                    int amount;
                    if (move.Amount > 0)
                    {
                        amount = move.Amount / 2 + new Random().Next(move.Amount);
                    }
                    else
                    {
                        amount = move.Amount / 2 - new Random().Next(Math.Abs(move.Amount));
                    }

                    if (type == 1)
                    {
                        if (amount > 0)
                        {
                            amount += pStrBonus;
                        }
                        else
                        {
                            amount -= pStrBonus;
                        }
                    }
                    else if (type == 2)
                    {
                        if (amount > 0)
                        {
                            amount += pIntBonus;
                        }
                        else
                        {
                            amount -= pIntBonus;
                        }
                    }

                    if (move.Target == Target.Self)
                    {
                        damNumMan.AddDamageNumber(amount, new Vector2(player.Position.X, player.Position.Y - 10));

                        switch (move.Stat)
                        {
                            case AffectedStat.Health:
                                player.ModHealth(amount);
                                break;
                            case AffectedStat.MP:
                                player.ModMP(amount);
                                break;
                            case AffectedStat.Strength:
                                pStrBonus += amount;
                                break;
                            case AffectedStat.Intelligence:
                                pIntBonus += amount;
                                break;
                            case AffectedStat.Dexterity:
                                pDexBonus += amount;
                                break;
                            case AffectedStat.Stamina:
                                pStaBonus += amount;
                                break;
                            case AffectedStat.Defense:
                                pDefBonus += amount;
                                break;
                        }
                    }
                    else
                    {
                        damNumMan.AddDamageNumber(amount, new Vector2(enemy.Position.X + enemy.Sprite.Width / 2 - 20, enemy.Position.Y + 15));

                        switch (move.Stat)
                        {
                            case AffectedStat.Health:
                                enemy.ModHealth(amount);
                                break;
                            case AffectedStat.MP:
                                enemy.ModMP(amount);
                                break;
                            case AffectedStat.Strength:
                                eStrBonus += amount;
                                break;
                            case AffectedStat.Intelligence:
                                eIntBonus += amount;
                                break;
                            case AffectedStat.Dexterity:
                                eDexBonus += amount;
                                break;
                            case AffectedStat.Stamina:
                                eStaBonus += amount;
                                break;
                            case AffectedStat.Defense:
                                eDefBonus += amount;
                                break;
                        }
                    }
                    pStaUsed += move.StaminaCost;
                    if ((pStaBonus + player.Stamina) - pStaUsed == 0)
                    {
                        //End player's turn. Might not automate this, might just have player click button anyway
                    }
                }
                else
                {
                    ScreenManager.AddScreen(new MessageBox("NOT ENOUGH STAMINA!"));
                }
            }
            else
            {
                if ((enemy.Stamina + eStaBonus) - eStaUsed - move.StaminaCost >= 0)
                {
                    int amount;
                    if (move.Amount > 0)
                    {
                        amount = move.Amount / 2 + new Random().Next(move.Amount);
                    }
                    else
                    {
                        amount = move.Amount / 2 - new Random().Next(Math.Abs(move.Amount));
                    }

                    if (type == 1)
                    {
                        if (amount > 0)
                        {
                            amount += eStrBonus;
                        }
                        else
                        {
                            amount -= eStrBonus;
                        }
                    }
                    else if (type == 2)
                    {
                        if (amount > 0)
                        {
                            amount += eIntBonus;
                        }
                        else
                        {
                            amount -= eIntBonus;
                        }
                    }

                    if (move.Target == Target.Self)
                    {
                        damNumMan.AddDamageNumber(amount, new Vector2(enemy.Position.X + enemy.Sprite.Width / 2 - 20, enemy.Position.Y + 15));

                        switch (move.Stat)
                        {
                            case AffectedStat.Health:
                                enemy.ModHealth(amount);
                                break;
                            case AffectedStat.MP:
                                enemy.ModMP(amount);
                                break;
                            case AffectedStat.Strength:
                                eStrBonus += amount;
                                break;
                            case AffectedStat.Intelligence:
                                eIntBonus += amount;
                                break;
                            case AffectedStat.Dexterity:
                                eDexBonus += amount;
                                break;
                            case AffectedStat.Stamina:
                                eStaBonus += amount;
                                break;
                            case AffectedStat.Defense:
                                eDefBonus += amount;
                                break;
                        }
                    }
                    else
                    {
                        damNumMan.AddDamageNumber(amount, new Vector2(player.Position.X, player.Position.Y - 10));

                        switch (move.Stat)
                        {
                            case AffectedStat.Health:
                                player.ModHealth(amount);
                                break;
                            case AffectedStat.MP:
                                player.ModMP(amount);
                                break;
                            case AffectedStat.Strength:
                                pStrBonus += amount;
                                break;
                            case AffectedStat.Intelligence:
                                pIntBonus += amount;
                                break;
                            case AffectedStat.Dexterity:
                                pDexBonus += amount;
                                break;
                            case AffectedStat.Stamina:
                                pStaBonus += amount;
                                break;
                            case AffectedStat.Defense:
                                pDefBonus += amount;
                                break;
                        }
                    }
                    eStaUsed += move.StaminaCost;
                    if ((eStaBonus + enemy.Stamina) - eStaUsed == 0)
                    {
                        EndTurn();
                    }
                }
                else
                {
                    EndTurn();
                }
            }
        }
Пример #7
0
 public void UseMagic(MagicMove magic)
 {
     if (turn == 1)
     {
         if (player.CurrentMP >= magic.MPCost)
         {
             Move move = new Move(magic.Name, magic.StaminaCost, magic.Target, magic.Stat, magic.Amount);
             UseMove(move, 2);
             player.ModMP(-magic.MPCost);
         }
         else
         {
             ScreenManager.AddScreen(new MessageBox("NOT ENOUGH MP!"));
         }
     }
     else
     {
         if (enemy.CurrentMP >= magic.MPCost)
         {
             Move move = new Move(magic.Name, magic.StaminaCost, magic.Target, magic.Stat, magic.Amount);
             UseMove(move, 2);
         }
         else
         {
             //Not enough MP warning - Enemy won't need this, will search for another possible attack instead
         }
     }
 }
Пример #8
0
 public void AddItem(Move item)
 {
     items.Add(item);
 }