示例#1
0
 public void StartBattle()
 {
     mhp = new ProgressBar()
     {
         Height  = 15, Width = 200,
         Maximum = (int)this.monster.Health, Minimum = 0,
         Value   = (int)this.monster.Health,
         Left    = 10, Top = 50
     };
     this.Controls.Add(mhp);
     mmp = new ProgressBar()
     {
         Height  = 10, Width = 30,
         Maximum = (int)this.monster.Mana, Minimum = 0,
         Value   = (int)this.monster.Mana,
         Left    = 10, Top = 60
     };
     this.Controls.Add(mmp);
     ProgressExt.SetState(mmp, 3);
     php = new ProgressBar()
     {
         Height  = 10, Width = 30,
         Maximum = (int)World.character.MaxHealth,
         Minimum = 0, Value = (int)World.character.Health,
         Left    = 10, Top = 300
     };
     this.Controls.Add(php);
     pmp = new ProgressBar()
     {
         Height  = 10, Width = 30,
         Maximum = (int)World.character.MaxMana, Minimum = 0,
         Value   = (int)World.character.Mana,
         Left    = 10, Top = 310
     };
     this.Controls.Add(pmp);
     ProgressExt.SetState(pmp, 3);
 }
示例#2
0
        public Battle(string monsterName, Image monsterImage, Item prize)
        {
            this.Size = new Size(500, 500);
            //this.TopMost = true;
            Random random = new Random();

            this.WindowState = FormWindowState.Minimized;
            this.Show();
            this.WindowState = FormWindowState.Normal;
            this.Icon        = new Icon(@"Images\MaxMana.ico");
            this.FormClosed += delegate { World.RunMusic(); };

            this.MonName = new Label()
            {
                AutoSize = true,
                Font     = new Font("Arial", 12.0f, FontStyle.Bold),
                Left     = 10,
                Text     = monsterName,
                Top      = 10
            };
            this.Controls.Add(MonName);

            //////////////////////////////////////////////
            this.Magicbox = new ListBox()
            {
                Left    = 200,
                Top     = 370,
                Visible = false,
            };
            this.Magicbox.Click += (sender, args) =>
            {
                if (this.Magicbox.SelectedItem != null)
                {
                    string spellStr = this.Magicbox.SelectedItem.ToString();
                    foreach (Spell i in World.character.Spells)
                    {
                        if (i.Name == spellStr)
                        {
                            i.UseSpell(this.monster);
                            this.mhp.Value = (int)monster.Health < 0 ? 0 : (int)monster.Health;
                            if (this.mhp.Value < (int)(monster.MaxHealth / 3))
                            {
                                ProgressExt.SetState(mhp, 2);
                            }
                            if (this.mhp.Value == 0)
                            {
                                // Give gold and EXP.
                                uint expGain = (uint)((monster.MaxHealth + monster.Mana + monster.Attack + monster.Defence + monster.Magic_Attack + monster.Magic_Defence) / 2 + random.Next(-1, 2));
                                World.character.Exp += expGain;
                                uint goldGain = (uint)((monster.MaxHealth + monster.Mana + monster.Attack + monster.Defence + monster.Magic_Attack + monster.Magic_Defence) / 5 + random.Next(-1, 2));
                                World.character.Gold += goldGain;
                                if (prize != null)
                                {
                                    World.character.Items.Add(prize);
                                }
                                MessageBox.Show(string.Format("Battle Won!\nExp:\t{0} -> {1}\nGold:\t{2} -> {3}\nItem:\t{4}", expGain, World.character.Exp.ToString(), goldGain, World.character.Gold.ToString(), prize != null ? prize.Name : "NONE"));
                                World.character.Levelup();
                                if (MonName.Text == "Big Bad Boss")
                                {
                                    Map.BossBeaten = true;
                                    //Message boss beaten
                                    MessageBox.Show("Congratulations, you have won the Game!");
                                }
                                this.Close();
                                Map.Locked = false;
                                return;
                            }

                            if (World.character.Health - (monster.Attack - (World.character.Defence) / 4) < 0)
                            {
                                World.character.Health = 0;
                            }
                            else
                            {
                                World.character.Health -= (monster.Attack - (World.character.Defence) / 4);
                            }
                            this.php.Value = (int)World.character.Health < 0 ? 0 : (int)World.character.Health;
                            if (this.php.Value < (int)(World.character.MaxHealth / 3))
                            {
                                ProgressExt.SetState(php, 2);
                            }

                            if (this.php.Value == 0)
                            {
                                // Character dies.
                                MessageBox.Show("You failed in Life");
                                this.Close();
                                Map.Locked = false;
                                World.Open();
                                return;
                            }
                        }
                    }
                }
            };
            this.Controls.Add(Magicbox);
            //////////////////////////////////////////////

            CustomButton Attackb = new CustomButton(CustomButtonType.Attack)
            {
                Left = 10,
                Top  = 370,
            };

            Attackb.Click += (sender, ard) =>
            {
                uint damage = 0;
                int  value  = ((int)World.character.Attack - ((int)monster.Defence) / 4);
                if (value <= 0)
                {
                    damage = 1;
                }
                else
                {
                    damage = (uint)value;
                }
                if (monster.Health - damage < 0)
                {
                    monster.Health = 0;
                }
                else
                {
                    monster.Health -= damage;
                }
                this.mhp.Value = (int)monster.Health < 0 ? 0 : (int)monster.Health;
                if (this.mhp.Value < (int)(monster.MaxHealth / 3))
                {
                    ProgressExt.SetState(mhp, 2);
                }

                if (this.mhp.Value == 0)
                {
                    // Give gold and EXP.
                    uint expGain = (uint)((monster.MaxHealth + monster.Mana + monster.Attack + monster.Defence + monster.Magic_Attack + monster.Magic_Defence) / 2 + random.Next(-1, 2));
                    World.character.Exp += expGain;
                    uint goldGain = (uint)((monster.MaxHealth + monster.Mana + monster.Attack + monster.Defence + monster.Magic_Attack + monster.Magic_Defence) / 5 + random.Next(-1, 2));
                    World.character.Gold += goldGain;
                    if (prize != null)
                    {
                        World.character.Items.Add(prize);
                    }
                    MessageBox.Show(string.Format("Battle Won!\nExp:\t{0} -> {1}\nGold:\t{2} -> {3}\nItem:\t{4}", expGain, World.character.Exp.ToString(), goldGain, World.character.Gold.ToString(), prize != null ? prize.Name : "NONE"));
                    World.character.Levelup();
                    if (MonName.Text == "Big Bad Boss")
                    {
                        Map.BossBeaten = true;
                        //Message boss beaten
                        MessageBox.Show("Congratulations, you have won the Game!");
                    }
                    this.Close();
                    Map.Locked = false;
                    return;
                }

                if (World.character.Health - (monster.Attack - (World.character.Defence) / 4) < 0)
                {
                    World.character.Health = 0;
                }
                else
                {
                    World.character.Health -= (monster.Attack - (World.character.Defence) / 4);
                }
                this.php.Value = (int)World.character.Health < 0 ? 0 : (int)World.character.Health;
                if (this.php.Value < (int)(World.character.MaxHealth / 3))
                {
                    ProgressExt.SetState(php, 2);
                }

                if (this.php.Value == 0)
                {
                    // Character dies.
                    MessageBox.Show("You failed in Life");
                    this.Close();
                    Map.Locked = false;
                    World.Open();
                    return;
                }
            };
            CustomButton Magicb = new CustomButton(CustomButtonType.Magic)
            {
                Left = 100,
                Top  = 370,
            };

            Magicb.Click += (sender, ard) =>
            {
                /*if (monster.Health - World.character.MagicAttack < 0) { monster.Health = 0; }
                 * else { monster.Health -= World.character.MagicAttack; }
                 *
                 * if (monster.Health == 0) { this.Close(); }*/
                this.Magicbox.Visible = !this.Magicbox.Visible;
                foreach (Spell i in World.character.Spells)
                {
                    this.Magicbox.Items.Add(i.Name);
                }
            };
            this.Controls.Add(Magicb);
            CustomButton Flee = new CustomButton(CustomButtonType.Flee)
            {
                Left = 10,
                Top  = 400,
            };

            Flee.Click += (sender, ard) =>
            {
                int value = random.Next(0, 3);
                if (value == 0)
                {
                    MessageBox.Show("Only a Coward would Runs Away");
                    this.Close();
                    Map.Locked = false;
                    return;
                }

                if (World.character.Health - (monster.Attack - (World.character.Defence) / 4) < 0)
                {
                    World.character.Health = 0;
                }
                else
                {
                    World.character.Health -= (monster.Attack - (World.character.Defence) / 4);
                }
                this.php.Value = (int)World.character.Health < 0 ? 0 : (int)World.character.Health;
                if (this.php.Value < (int)(World.character.MaxHealth / 3))
                {
                    ProgressExt.SetState(php, 2);
                }

                if (this.php.Value == 0)
                {
                    // Character dies.
                    MessageBox.Show("You failed in Life");
                    this.Close();
                    Map.Locked = false;
                    World.Open();
                    return;
                }
            };
            CustomButton Defend = new CustomButton(CustomButtonType.Defend)
            {
                Left = 100,
                Top  = 400,
            };

            Defend.Click += (sender, ard) =>
            {
                /*if (World.character.Health - (uint)((monster.Attack - (World.character.Defence) / 4) / 2) < 0) { World.character.Health = 0; }
                 * else { World.character.Health -= (uint)((monster.Attack - (World.character.Defence) / 4) / 2); }
                 * this.php.Value = (int)World.character.Health < 0 ? 0 : (int)World.character.Health;
                 * if (this.php.Value < (int)(World.character.MaxHealth / 3)) { ProgressExt.SetState(php, 2); }
                 *
                 * if (this.php.Value == 0)
                 * {
                 *  // Character dies.
                 *  MessageBox.Show("You failed in Life");
                 *  this.Close();
                 *  Map.Locked = false;
                 *  World.Open();
                 *  return;
                 * }*/
                MaxMana.Forms.Menu menu = new MaxMana.Forms.Menu();
                menu.Show();
            };

            this.Controls.Add(Attackb);
            this.Controls.Add(Flee);
            this.Controls.Add(Defend);
            this.mCharacter = Image.FromFile("Images/vivi.png");
            string name = string.Empty;

            if (monsterName == null && monsterImage == null)
            {
                int mon = random.Next(0, 9);
                //Monster Image
                switch (mon)
                {
                case 0:
                {
                    name          = "Billy";
                    this.mMonster = Image.FromFile("Images/Monsters/Billy.png");

                    break;
                }

                case 1:
                {
                    name          = "Sven";
                    this.mMonster = Image.FromFile("Images/Monsters/Sven.png");
                    break;
                }

                case 2:
                {
                    name          = "Derp";
                    this.mMonster = Image.FromFile("Images/Monsters/Derp.png");
                    break;
                }

                case 3:
                {
                    name          = "Ghostsicle";
                    this.mMonster = Image.FromFile("Images/Monsters/Ghostsicle.png");
                    break;
                }

                case 4:
                {
                    name          = "HummingBird";
                    this.mMonster = Image.FromFile("Images/Monsters/Hummingbird.png");
                    break;
                }

                case 5:
                {
                    name          = "Hydra";
                    this.mMonster = Image.FromFile("Images/Monsters/Hydra.png");
                    break;
                }

                case 6:
                {
                    name          = "Mammy";
                    this.mMonster = Image.FromFile("Images/Monsters/Mammy.png");
                    break;
                }

                case 7:
                {
                    name          = "Reaper";
                    this.mMonster = Image.FromFile("Images/Monsters/Reaper.png");
                    break;
                }

                case 8:
                {
                    name          = "Yinyang";
                    this.mMonster = Image.FromFile("Images/Monsters/Yinyang.png");
                    break;
                }

                case 9:
                {
                    name          = "Big Bad Boss";
                    this.mMonster = Image.FromFile("Images/Merchant.png");
                    break;
                }
                }
            }
            else
            {
                name = monsterName; this.mMonster = monsterImage;
            }

            this.monster = new Monster(name,
                                       (uint)random.Next(10 + (int)(4 * World.character.Level), 14 + (int)(4 * World.character.Level)),
                                       (uint)random.Next(0 + (int)(4 * World.character.Level), 1 + (int)(4 * World.character.Level)),
                                       (uint)random.Next(3 + (int)(2 * World.character.Level), 5 + (int)(2 * World.character.Level)),
                                       (uint)random.Next(3 + (int)(2 * World.character.Level), 5 + (int)(2 * World.character.Level)),
                                       (uint)random.Next(0 + (int)(2 * World.character.Level), 1 + (int)(2 * World.character.Level)),
                                       (uint)random.Next(0 + (int)(2 * World.character.Level), 1 + (int)(2 * World.character.Level))
                                       );
            if (name == "Debt Collector")
            {
                this.monster = new Monster(name,
                                           this.monster.Health * (uint)Math.Floor((double)prize.Price / 10),
                                           this.monster.Mana * (uint)Math.Floor((double)prize.Price / 10),
                                           this.monster.Attack * (uint)Math.Floor((double)prize.Price / 10),
                                           this.monster.Defence * (uint)Math.Floor((double)prize.Price / 10),
                                           this.monster.Magic_Attack * (uint)Math.Floor((double)prize.Price / 10),
                                           this.monster.Magic_Defence * (uint)Math.Floor((double)prize.Price / 10));
            }
            if (name == "Big Bad Boss")
            {
                this.monster = new Monster(name,
                                           this.monster.Health * 10,
                                           this.monster.Mana * 10,
                                           this.monster.Attack * 10,
                                           this.monster.Defence * 10,
                                           this.monster.Magic_Attack * 10,
                                           this.monster.Magic_Defence * 10);
            }
            StartBattle();
            RunMusic();
        }