public ContainerButton(Button button, BoxedMonster boxedMonster) { Button = button; Move = null; Monster = null; Medicine = null; Capture = null; BoxedMonster = boxedMonster; }
public ContainerButton(Button button, Capture capture) { Button = button; Move = null; Monster = null; Medicine = null; Capture = capture; BoxedMonster = null; }
public ContainerButton(Button button, Medicine medicine) { Button = button; Move = null; Monster = null; Medicine = medicine; Capture = null; BoxedMonster = null; }
public static Texture2D GetTextureFromMoveKind(Move m) { switch (m.Kind) { case Kind.Physical: return ContentLoader.PhysicalAttack; case Kind.Special: return ContentLoader.SpecialAttack; case Kind.NonDamage: return ContentLoader.NonDamageAttack; } return null; }
public static void MakeDecision(Battle b, Move m, Monster user, Monster receiver, Character player) { Random random = new Random(); switch (random.Next(1, 5)) { case 1: EnemyAttack(b, user, receiver); break; case 2: UseBuff(b, user, receiver); break; case 3: if (user.Ailment != Ailment.Normal) { if (player != null) { foreach (var value in player.Inventory.Medicine.Values) { if (Medicine.CuresAilment(user.Ailment)) { UseMedicine(b, player, user); } } } } else { EnemyAttack(b, user, receiver); } break; case 4: if (user.Stats.Health < user.MaxHealth / 100 * 20) { if (player != null) { if (player.Inventory.Medicine.Count != 0) { UseMedicine(b, player, user); } else { EnemyAttack(b, user, receiver); } } else { EnemyAttack(b, user, receiver); } } else { EnemyAttack(b, user, receiver); } break; case 5: if (user.Ailment != Ailment.Normal) { foreach (var value in player.Inventory.Medicine.Values) { if (Medicine.CuresAilment(user.Ailment)) { UseMedicine(b, player, user); } } } if (user.Stats.Health < user.MaxHealth / 100 * 20) { if (player != null) { if (player.Inventory.Medicine.Count != 0) { UseMedicine(b, player, user); } else { if (m.Damage != null) { if (m.Damage > user.Stats.Health) { EnemyAttack(b, user, receiver); } else { UseBuff(b, user, receiver); } } else { UseBuff(b, user, receiver); } } } } else { if (m != null) { if (m.Damage != 0) { if (m.Damage > user.Stats.Health) { EnemyAttack(b, user, receiver); } else { UseBuff(b, user, receiver); } } else { UseBuff(b, user, receiver); } } else { UseBuff(b, user, receiver); } } break; } }
public static void EnemyAttack(Battle b, Monster user, Monster receiver) { strongestAttack = Move.Glare(); //user.GetMoves(); foreach (var m in user.Moves.Where(x => x.Uses != 0)) { m.Damage = m.GetDamage(user.Stats.SpecialAttack, receiver.Stats.SpecialDefense, m.GetDamageModifier(receiver), 1); if (m.Damage > strongestAttack.Damage) { strongestAttack = m; } } b.Attack(user, receiver, strongestAttack); }
public bool IsImmune(Monster reciever, Move move) { if (reciever.Ability.Id == AbilityId.Deaf && move.Type == Type.Sound) { Drawer.AddMessage(new List<string> { $"{reciever.Name} is immune to Sound attacks." }); return true; } return false; }
/// <summary> /// Checks if the opponent has an ability that can trigger an ailment on hit /// </summary> /// <param name="user"></param> /// <param name="opponent"></param> /// <param name="move"></param> /// <returns></returns> public Ailment GetAilment(Monster user, Monster opponent, Move move) { //If user already has an ailment if (user.Ailment != Ailment.Normal) return user.Ailment; //If move does not make contact with the opponent if (move.Kind != Kind.Physical) return user.Ailment; var rand = new CryptoRandom(); switch (opponent.Ability.Id) { case AbilityId.ToxicBody: if (rand.Next(0, 100) <= 10) { Drawer.AddMessage(new List<string> { $"{opponent.Name}s {opponent.Ability.Name} made {user.Name} poisoned!" }); return Ailment.Poisoned; } break; case AbilityId.Warm: if (rand.Next(0, 100) <= 7.5) { Drawer.AddMessage(new List<string> { $"{opponent.Name}s {opponent.Ability.Name} made {user.Name} fall asleep!" }); return Ailment.Sleep; } break; case AbilityId.OnFire: if (rand.Next(0, 100) <= 7.5) { Drawer.AddMessage(new List<string> { $"{opponent.Name}s {opponent.Ability.Name} made {user.Name} catch fire!" }); return Ailment.Burned; } break; } return Ailment.Normal; }