public override void Fire()
    {
        if (isReadyToFire)
        {
            if (!weaponItem.isRangedWeapon)
            {
                RaycastHit hit;

                if (weaponAnchor != null)
                {
                    Debug.DrawRay(weaponAnchor.transform.position, weaponAnchor.transform.TransformDirection(Vector3.forward) * weaponItem.weaponRange, Color.yellow);
                    if (Physics.Raycast(weaponAnchor.transform.position, weaponAnchor.transform.TransformDirection(Vector3.forward), out hit, weaponItem.weaponRange))
                    {
                        //Debug.Log("Hit succesful, hit: " + hit.transform.gameObject.name);
                        EnemyHealth hitHealth = hit.transform.gameObject.GetComponent <EnemyHealth>();
                        if (hitHealth != null)
                        {
                            hitHealth.DealDamage(weaponItem.weaponDamage);
                            Debug.Log("Dealing damage to enemy");
                        }
                    }
                }
            }
            else
            {
                GameObject projectile = Instantiate(weaponItem.projectileObject, weaponAnchor.transform.position, Quaternion.identity);
                projectile.GetComponent <Rigidbody>().AddForce(transform.forward * weaponItem.projectileSpawnSpeed);
                BulletCollision bc = projectile.GetComponent <BulletCollision>();

                if (bc != null)
                {
                    bc.damage   = weaponItem.weaponDamage;
                    bc.isPlayer = true;
                }
                else
                {
                    GrenadeTimer gt = projectile.GetComponent <GrenadeTimer>();
                    gt.damage = weaponItem.weaponDamage;
                }
            }
        }

        base.Fire();
    }
示例#2
0
        private void Init()
        {
            plugin = this;
            LoadVariables();

            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                if (player.IsConnected)
                {
                    if (player.GetActiveItem()?.info.shortname == "grenade.f1" || player.GetActiveItem()?.info.shortname == "grenade.beancan")
                    {
                        GrenadeTimer grenadeTimer = player.GetComponent <GrenadeTimer>();
                        if (grenadeTimer)
                        {
                            grenadeTimer.DestroyThis();
                        }
                        player.gameObject.AddComponent <GrenadeTimer>();
                    }
                }
            }
        }
示例#3
0
        private void MainTimerEvent(object sender, EventArgs e)
        {
            // These if-else statement is for checking whether the player's health and shield value is equal to zero
            // If it is true then end the game
            if (playerHealth > 1 && playerShield >= 0)
            {
                healthBar.Value = playerHealth;
                shieldBar.Value = playerShield;
            }
            else
            {
                gameOver = true;


                // This if-else statements are for to display the character based on the chosen character by the user
                // The default value of choseCharacter variable is man character
                if (ChooseCharacter.chosenCharacter == "woman")
                {
                    player.Image = Properties.Resources.p2_death;
                }
                else
                {
                    player.Image = Properties.Resources.death;
                }

                GameTimer.Stop();
                MedicTimer.Stop();
                SuperGunTimer.Stop();
                LaserGunTimer.Stop();
                shieldTimer.Stop();
                GrenadeTimer.Stop();

                StreamWriter sw = File.AppendText(path);
                sw.WriteLine("Kills: " + score.ToString());
                sw.Close();

                DateTime     thisDay = DateTime.Now;
                StreamWriter dt      = File.AppendText(path2);
                dt.WriteLine(thisDay.ToString());
                dt.Close();
            }

            txtAmmo.Text  = "Ammo: " + ammo;
            txtScore.Text = "Kills: " + score;
            txtLevel.Text = "Level " + level;

            if (tempScore == 10)
            {  //level up condition
                level++;
                tempScore = 0;
                MakeZombies(); // create the new zombie to the list
            }

            if (goleft == true && player.Left > 0)
            {
                player.Left -= speed;
            }

            if (goright == true && player.Left + player.Width < this.ClientSize.Width)
            {
                player.Left += speed;
            }

            if (goup == true && player.Top > 75)
            {
                player.Top -= speed;
            }

            if (godown == true && player.Top + player.Height < this.ClientSize.Height)
            {
                player.Top += speed;
            }

            foreach (Control x in this.Controls)
            {
                if (x is PictureBox && (string)x.Tag == "ammo")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // if the player intersects with ammo
                    {
                        SoundPlayer reload = new SoundPlayer("../../Sound/reload.wav");
                        reload.Play();             // play reload sound effect
                        this.Controls.Remove(x);   // remove the ammo on screen
                        ((PictureBox)x).Dispose(); // dispose the picture box
                        ammo += 5;                 // add the ammo to 5
                    }
                }

                if (x is PictureBox && (string)x.Tag == "medic")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // if the player intersects with medic
                    {
                        SoundPlayer pickMedic = new SoundPlayer("../../Sound/pickMedic.wav");
                        pickMedic.Play();                // play the pickMedic sound effect
                        this.Controls.Remove(x);         // remove the medic on screen
                        medicList.Remove((PictureBox)x); // remove the medic from the medic list
                        ((PictureBox)x).Dispose();       // dispose the picture box
                        if ((playerHealth + 30) <= 100)
                        {
                            playerHealth += 30; // increase the player health by 30
                        }
                        else
                        {
                            playerHealth = 100; // if the player's health + 30 is greater than 100, player' health = 100
                        }
                    }
                }

                if (x is PictureBox && (string)x.Tag == "superGun")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // if the player intersects with the superGun
                    {
                        this.Controls.Remove(x);                // remove the gun on screen
                        ((PictureBox)x).Dispose();              // dispose the picture box
                        inventory.collectItem("SuperGun");      // get super gun
                        superGun.Image        = Properties.Resources.SuperGun;
                        LaserGunTimer.Enabled = true;
                    }
                }

                if (x is PictureBox && (string)x.Tag == "laserGun")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // if the player intersects with laserGun
                    {
                        this.Controls.Remove(x);                // remove the gun on screen
                        ((PictureBox)x).Dispose();              // dispose the picture box
                        inventory.collectItem("LaserGun");      // get laser gun
                        laserGun.Image = Properties.Resources.LaserGun;
                    }
                }

                if (x is PictureBox && (string)x.Tag == "shieldIcon")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // If the player intersects with the shield
                    {
                        SoundPlayer pickMedic = new SoundPlayer("../../Sound/pickMedic.wav");
                        pickMedic.Play();          // play the pickMedic sound
                        this.Controls.Remove(x);   // Remove the shield on the screen
                        ((PictureBox)x).Dispose(); // Dispose the picture box
                        playerShield = 100;        // If the player grab the shield then it will restore the player's shield until full
                    }
                }

                if (x is PictureBox && (string)x.Tag == "grenades")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // if the player intersects with grenade
                    {
                        this.Controls.Remove(x);                // remove the grenade on screen
                        grenadeList.Remove((PictureBox)x);      // remove the medic from the grenade list
                        ((PictureBox)x).Dispose();              // dispose the picture box
                        inventory.collectItem("Grenades");      // get grenades
                        grenade.Image      = Properties.Resources.grenade;
                        grenade.Visible    = true;
                        isGrenadeCollected = true;
                    }
                }

                if (x is PictureBox && (string)x.Tag == "zombie")
                {
                    if (player.Bounds.IntersectsWith(x.Bounds)) // if the player's intersects with zombie
                    {
                        // If the value of player's shield is still more than 0 thus decrease the shield's value before reducing the player's health
                        if (playerShield > 0)
                        {
                            playerShield -= 1;
                        }
                        else
                        {
                            playerHealth -= 1;           //player's health minus by 1
                            if ((playerHealth - 1) == 0) //if player's heath minus 1 is equal 0, player's health equal 0
                            {
                                playerHealth = 0;
                            }
                        }
                    }
                    // let the zombies chase the player
                    if (x.Left > player.Left)
                    {
                        x.Left -= zombieSpeed;
                        ((PictureBox)x).Image = Properties.Resources.zleft;
                    }
                    if (x.Left < player.Left)
                    {
                        x.Left += zombieSpeed;
                        ((PictureBox)x).Image = Properties.Resources.zright;
                    }
                    if (x.Top > player.Top)
                    {
                        x.Top -= zombieSpeed;
                        ((PictureBox)x).Image = Properties.Resources.zup;
                    }
                    if (x.Top < player.Top)
                    {
                        x.Top += zombieSpeed;
                        ((PictureBox)x).Image = Properties.Resources.zdown;
                    }
                }

                foreach (Control j in this.Controls)
                {
                    if (j is PictureBox && (string)j.Tag == "bullet" && x is PictureBox && (string)x.Tag == "zombie")
                    {
                        if (x.Bounds.IntersectsWith(j.Bounds))   // if bullets are intersect with zombies
                        {
                            score++;                             // score plus 1
                            tempScore++;
                            this.Controls.Remove(j);             // remove the bullets on screen
                            ((PictureBox)j).Dispose();           // dispose the picture box
                            this.Controls.Remove(x);             // remove the zombie on screen
                            ((PictureBox)x).Dispose();           // dispose the picture box
                            zombiesList.Remove(((PictureBox)x)); // remove the zombie from the list
                            MakeZombies();                       // create the zombies
                        }
                    }
                }

                //throw grenade
                foreach (Control k in this.Controls)
                {
                    if (k is PictureBox && (string)k.Tag == "explosion" && x is PictureBox && (string)x.Tag == "zombie")
                    {
                        Rectangle intersectionArea = Rectangle.Intersect(x.Bounds, k.Bounds);
                        while (intersectionArea.IsEmpty == false) // if grenade range are intersect with zombies
                        {
                            score++;                              // score plus 1
                            tempScore++;
                            this.Controls.Remove(x);              // remove the zombie on screen
                            ((PictureBox)x).Dispose();            // dispose the picture box
                            zombiesList.Remove(((PictureBox)x));  // remove the zombie from the list
                            MakeZombies();                        // create the zombies
                            break;
                        }
                        while (intersectionArea.IsEmpty && explosionTime == 1)
                        {
                            this.Controls.Remove(k);   // remove the grenade on screen
                            ((PictureBox)k).Dispose(); // dispose the picture box
                            explosionTimer.Stop();
                            explosionTime = 0;
                            break;
                        }
                    }
                }
            }
        }
示例#4
0
        private void RestartGame()
        {
            // This if-else statements are for to display the character based on the chosen character by the user
            // The default value of choseCharacter variable is man character
            if (ChooseCharacter.chosenCharacter == "woman")
            {
                player.Image = Properties.Resources.p2_up; // set player faces up
            }
            else
            {
                player.Image = Properties.Resources.up; // set player faces up
            }

            foreach (PictureBox i in zombiesList)
            {
                this.Controls.Remove(i); // remove all the zombies on the screen
            }
            zombiesList.Clear();         // clear the zombieList

            foreach (PictureBox i in medicList)
            {
                this.Controls.Remove(i); // remove all the medics on the screen
            }
            medicList.Clear();           // clear the medicList

            foreach (PictureBox i in gunList)
            {
                this.Controls.Remove(i); // remove all the guns on the screen
            }
            gunList.Clear();

            foreach (PictureBox i in shieldList)
            {
                this.Controls.Remove(i); // Remove all the shields on the screen
            }
            shieldList.Clear();

            foreach (PictureBox i in grenadeList)
            {
                this.Controls.Remove(i); // remove all the grenade on the screen
            }
            grenadeList.Clear();         // clear the grenadeList

            for (int i = 0; i < 3; i++)
            {
                MakeZombies(); // create 3 zombies on the screen
            }

            goup         = false;
            godown       = false;
            goleft       = false;
            goright      = false;
            gameOver     = false;
            playerHealth = 100;
            score        = 0;
            ammo         = 10;
            level        = 1;
            tempScore    = 0;

            superGun.Image = null;
            laserGun.Image = null;

            Array.Clear(inventory.bag, 0, inventory.bag.Length);
            inventory.numberOfItem = 0;

            GameTimer.Start();
            MedicTimer.Start();
            SuperGunTimer.Start();
            shieldTimer.Start();
            GrenadeTimer.Start();
        }