Esempio n. 1
0
 protected override void Start()
 {
     base.Start();
     reward = new KillReward(500, 500);
     attackRange = 2.3f;
     TeamNumber = 0;
 }
Esempio n. 2
0
    IEnumerator CoSpawnEnemies()
    {
        yield return(new WaitForSeconds(5));

        RefreshCurrentPlayers();

        while (true)
        {
            for (int i = 0; i < enemySpawnPoints.Length; i++)
            {
                if (zombieSpawned >= maxZombies)
                {
                    continue;
                }

                GameObject enemyObj        = enemySpawner.SpawnAt(enemySpawnPoints[i].position, enemySpawnPoints[i].rotation);
                Enemy      enemy           = enemyObj.GetComponent <Enemy>();
                Health     enemyHealth     = enemyObj.GetComponent <Health>();
                KillReward enemyKillReward = enemyObj.GetComponent <KillReward>();

                enemy.speed            = zombieSpeed;
                enemyHealth.value      = zombieHP;
                enemyKillReward.amount = killReward;

                enemy.onDead.AddListener(() => {
                    zombieSpawned--;
                });

                zombieSpawned++;
            }

            yield return(new WaitForSeconds(spawnDuration));
        }
    }
Esempio n. 3
0
    void DetectHit()
    {
        RaycastHit hit;

        if (Physics.Raycast(shootPoint.position, CalculateSpread(spread, shootPoint), out hit))
        {
            if (hit.transform.CompareTag("Enemy"))
            {
                Health targetHealth = hit.transform.GetComponent <Health>();

                if (targetHealth == null)
                {
                    throw new System.Exception("Cannot found Health Component on Enemy.");
                }
                else
                {
                    float actualDamage = damage + (damageUpgradeFactor * damageUpgrade);

                    targetHealth.TakeDamage(actualDamage);
                    CreateBlood(hit.point, hit.transform.rotation);

                    Transform targetTransform;
                    float     targetHealthValue;

                    if (targetHealth.parentRef == null)
                    {
                        targetTransform   = hit.transform;
                        targetHealthValue = targetHealth.value;
                    }
                    else
                    {
                        targetTransform   = targetHealth.parentRef.transform;
                        targetHealthValue = targetHealth.parentRef.value;
                    }

                    if (targetHealthValue <= 0)
                    {
                        KillReward killReward = targetTransform.GetComponent <KillReward>();

                        if (killReward == null)
                        {
                            throw new System.Exception("Cannot found KillReward Component on Enemy.");
                        }

                        cashSystem.cash += killReward.amount;
                        GameManager.instance.zombieKilled++;
                    }
                }
            }
            else
            {
                // GameObject spark = Instantiate(sparkPrefab, hit.point, hit.transform.rotation);
                // Destroy(spark, 1);

                GameObject spark = PhotonNetwork.Instantiate(sparkPrefabName, hit.point, hit.transform.rotation, 0);
                DestroyAfterTime(spark, 1);
            }
        }
    }
Esempio n. 4
0
    void SpawnEnemy()
    {
        if (spawnTimer < respawnDuration)
        {
            return;
        }

        int playerCount   = GetPlayerCount();
        int spawnCount    = 0;
        int maxSpawnCount = 5 + ((playerCount - 1) * 1);        // 1P: 5, 2P: 6, 3P: 7, 4P: 8
        int zombiesCount  = GameObject.FindGameObjectsWithTag("Enemy").Length;

        foreach (GameObject spawnPoint in spawnPoints)
        {
            // If zombies were spawned too many, just stop.
            if (zombiesCount >= maxZombies)
            {
                break;
            }

            // Check how many zombies are spawning once by player numbers
            else if (spawnCount >= maxSpawnCount)
            {
                break;
            }

            GameObject zombie = PhotonNetwork.Instantiate("Zombie", spawnPoint.transform.position, spawnPoint.transform.rotation, 0);

            float zombieHealth = currentHealth;
            float addtionalHP  = currentHealth * 0.5f;

            zombieHealth = zombieHealth + (addtionalHP * (playerCount - 1));
            zombie.GetComponent <HealthManager>().SetHealth(currentHealth);

            KillReward killReward = zombie.GetComponent <KillReward>();
            killReward.SetReward(currentEXP, currentFund);

            // Boost rotating speed
            float rotateSpeed = 120f + currentMoveSpeed;
            rotateSpeed = Mathf.Max(rotateSpeed, 200f);                 // Max 200f

            Chasing chasing = zombie.GetComponent <Chasing>();
            chasing.SetDamage(currentDamage);
            chasing.SetSpeed(currentMoveSpeed, rotateSpeed);

            spawnCount++;
            zombiesCount++;
        }

        spawnTimer = 0f;
    }
Esempio n. 5
0
    void SpawnEnemy()
    {
        if (spawnTimer < respawnDuration)
        {
            return;
        }

        int spawnCount    = 0;
        int maxSpawnCount = 5;
        int zombiesCount  = GameObject.FindGameObjectsWithTag("Enemy").Length;

        foreach (GameObject spawnPoint in spawnPoints)
        {
            // If zombies were spawned too many, just stop.
            //თუ ძალიან ბევრი ზომბია გაჩენილი უბრალოდ გაჩერდეს
            if (zombiesCount >= maxZombies)
            {
                break;
            }

            //შემოწმება თუ რამდენი ზომბი ხდება ერთდროულად მოთამაშის მიხედვით
            else if (spawnCount >= maxSpawnCount)
            {
                break;
            }

            GameObject zombie = Instantiate(zombiePrefab, spawnPoint.transform.position, spawnPoint.transform.rotation);

            zombie.GetComponent <HealthManager>().SetHealth(currentHealth);

            KillReward killReward = zombie.GetComponent <KillReward>();
            killReward.SetReward(currentEXP, currentFund);

            // Boost rotating speed
            float rotateSpeed = 120f + currentMoveSpeed;
            rotateSpeed = Mathf.Max(rotateSpeed, 200f);                 // Max 200f

            Chasing chasing = zombie.GetComponent <Chasing>();
            chasing.SetDamage(currentDamage);
            chasing.SetSpeed(currentMoveSpeed, rotateSpeed);

            spawnCount++;
            zombiesCount++;
        }

        spawnTimer = 0f;
    }
    void SpawnEnemy()
    {
        if (spawnTimer < respawnDuration)
        {
            return;
        }

        int spawnCount    = 0;
        int maxSpawnCount = 5;
        int zombiesCount  = GameObject.FindGameObjectsWithTag("Enemy").Length;

        foreach (GameObject spawnPoint in spawnPoints)
        {
            // If zombies were spawned too many, just stop.
            if (zombiesCount >= maxZombies)
            {
                break;
            }

            // Check how many zombies are spawning once by player numbers
            else if (spawnCount >= maxSpawnCount)
            {
                break;
            }

            GameObject zombie = Instantiate(zombiePrefab, spawnPoint.transform.position, spawnPoint.transform.rotation);

            zombie.GetComponent <HealthManager>().SetHealth(currentHealth);

            KillReward killReward = zombie.GetComponent <KillReward>();
            killReward.SetReward(currentEXP, currentFund);

            // Boost rotating speed
            float rotateSpeed = 120f + currentMoveSpeed;
            rotateSpeed = Mathf.Max(rotateSpeed, 200f);                 // Max 200f

            Chasing chasing = zombie.GetComponent <Chasing>();
            chasing.SetDamage(currentDamage);
            chasing.SetSpeed(currentMoveSpeed, rotateSpeed);

            spawnCount++;
            zombiesCount++;
        }

        spawnTimer = 0f;
    }
Esempio n. 7
0
    protected override void Start()
    {
        base.Start();
        Health.SetInitialValues(120, 120);
        PhysicalDefense.IncrementBaseValue(10);
        MagicalDefense.IncrementBaseValue(10);
        MoveSpeed.IncrementBaseValue(10.0f - MoveSpeed.baseValue);

        reward = new KillReward(2000, 1000);
        attackRange = 2.3f;

        ThirdPersonSimpleAnimation.InitializeAnimation(animation);
        var genericAnimation = GetComponent<NPCGenericAnimation>();
        genericAnimation.aniNames[NPCGenericAnimation.AnimationName.Idle] = "Idle01";
        genericAnimation.aniNames[NPCGenericAnimation.AnimationName.Attack] = "Combo4";
        genericAnimation.aniNames[NPCGenericAnimation.AnimationName.Die] = "Death";
        genericAnimation.aniNames[NPCGenericAnimation.AnimationName.Run] = "Run";
        genericAnimation.aniNames[NPCGenericAnimation.AnimationName.GetHit] = "IdleShieldBlock";

        Died += GuardStats_Died;
    }
    public static void RewardPlayersInArea(Vector3 location, GameObject killer, KillReward reward)
    {
        if (Network.isClient) return;

        int teamNumber;
        if (killer.GetCharacterStats().teamNumber == 0)
            return;

        else teamNumber = killer.GetCharacterStats().TeamNumber;

        List<GameObject> playersToReward = new List<GameObject>();
        var teamPlayers = PlayerManager.Main.GetPlayersOnTeam(teamNumber).Select(x => x.gameObject);

        foreach (GameObject teamMate in teamPlayers)
        {
            if (Vector3.Distance(teamMate.transform.position, location) <= Util.MaxExperienceRange)
            {
                playersToReward.Add(teamMate);
            }
        }
        if (playersToReward.Count != 0)
        {
            reward /= playersToReward.Count;
            foreach (GameObject player in playersToReward)
            {
                (player.GetCharacterStats() as PlayerStats).RewardKill(reward);
            }
        }
    }
Esempio n. 9
0
 protected override void Start()
 {
     base.Start();
     reward = new KillReward(400, 1000);
     attackRange = 2.3f;
 }
Esempio n. 10
0
    /// <summary>
    /// Adds rewards for this player achieving a kill.
    /// </summary>
    public void RewardKill(KillReward reward)
    {
        if (Network.isClient) return;

        this.experience += reward.experience;
        this.inventory.Gold += reward.gold;
        if (experience >= experienceNeeded)
        {
            LevelUp();
        }
        if (!this.gameObject.IsMyLocalPlayer())
            networkView.RPC("BroadcastReward", this.gameObject.GetNetworkPlayer(), reward.experience, reward.gold);
        else
        {
            PlayGoldSound();
        }
    }
Esempio n. 11
0
 private void UpdateKillReward()
 {
     reward = new KillReward(Level * 400, Level * 200);
 }