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; }
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; }
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>(); }
public Player(Texture2D mapImage, Sprite[] sprite, Vector2 position, Move weapon, List<MagicMove> magic) : this(sprite, position, weapon, magic) { this.mapImage = mapImage; }
//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(); } } }
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 } } }
public void AddItem(Move item) { items.Add(item); }