コード例 #1
0
ファイル: ContainerButton.cs プロジェクト: DuckDefense/duck
 public ContainerButton(Button button, BoxedMonster boxedMonster)
 {
     Button = button;
     Move = null;
     Monster = null;
     Medicine = null;
     Capture = null;
     BoxedMonster = boxedMonster;
 }
コード例 #2
0
ファイル: ContainerButton.cs プロジェクト: DuckDefense/duck
 public ContainerButton(Button button, Capture capture)
 {
     Button = button;
     Move = null;
     Monster = null;
     Medicine = null;
     Capture = capture;
     BoxedMonster = null;
 }
コード例 #3
0
ファイル: ContainerButton.cs プロジェクト: DuckDefense/duck
 public ContainerButton(Button button, Medicine medicine)
 {
     Button = button;
     Move = null;
     Monster = null;
     Medicine = medicine;
     Capture = null;
     BoxedMonster = null;
 }
コード例 #4
0
ファイル: Drawer.cs プロジェクト: DuckDefense/duck
 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;
 }
コード例 #5
0
ファイル: AI.cs プロジェクト: DuckDefense/duck
        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;
            }
        }
コード例 #6
0
ファイル: AI.cs プロジェクト: DuckDefense/duck
 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);
 }
コード例 #7
0
ファイル: Ability.cs プロジェクト: DuckDefense/duck
 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;
 }
コード例 #8
0
ファイル: Ability.cs プロジェクト: DuckDefense/duck
 /// <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;
 }