protected override void Start() { base.Start(); reward = new KillReward(500, 500); attackRange = 2.3f; TeamNumber = 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)); } }
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); } } }
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; }
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; }
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); } } }
protected override void Start() { base.Start(); reward = new KillReward(400, 1000); attackRange = 2.3f; }
/// <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(); } }
private void UpdateKillReward() { reward = new KillReward(Level * 400, Level * 200); }