public void Attack() { if (this.targetEnemy != null) { //Attack Reach. If a nearby enemy game unit is within attack range, engage and attack. AttackArea area = this.GetComponentInChildren<AttackArea>(); if (area != null) { if (area.enemiesInAttackRange.Contains(this.targetEnemy)) { if (this.attackCooldownCounter <= 0f) { CmdAttack(this.targetEnemy.gameObject, this.unitAttributes.attackCooldownPrefabList[this.level]); GameMetricLogger.Increment(GameMetricOptions.Attacks); GameMetricLogger.Increment(GameMetricOptions.AttackTime); } } else if (area.enemiesInAttackRange.Count > 0) { this.targetEnemy = area.enemiesInAttackRange[0]; } GameMetricLogger.Increment(GameMetricOptions.BattleEngagementTime); } } else if (this.targetAIEnemy != null) { AttackArea area = this.GetComponentInChildren<AttackArea>(); if (area != null) { if (area.otherEnemies.Contains(this.targetAIEnemy)) { if (this.attackCooldownCounter <= 0f) { if (this.unitAttributes.attackCooldownPrefabList.Count > 0) { AttackAI(this.targetAIEnemy.gameObject, this.unitAttributes.attackCooldownPrefabList[this.level]); } else { AttackAI(this.targetAIEnemy.gameObject, 1f); } GameMetricLogger.Increment(GameMetricOptions.Attacks); GameMetricLogger.Increment(GameMetricOptions.AttackTime); } } else if (area.otherEnemies.Count > 0) { this.targetAIEnemy = area.otherEnemies[0]; } GameMetricLogger.Increment(GameMetricOptions.BattleEngagementTime); } } }
public override void OnStartClient() { base.OnStartAuthority(); //Initialization code for local player (local client on the host, and remote clients). this.oldTargetPosition = Vector3.one * -9999f; this.oldEnemyTargetPosition = Vector3.one * -9999f; this.targetEnemy = null; this.targetAIEnemy = null; this.isSelected = false; this.isDirected = false; this.currentHealth = this.maxHealth; this.recoverCounter = 1f; //this.recoverCooldown = this.attackCooldown + 3.5f; this.attackCooldownCounter = this.attackCooldown; this.teamFaction = EnumTeam.Player; if (this.attackPower <= 1f) { this.attackPower = 1f; } this.level = 1; this.previousLevel = 1; UpdateUnitAttributes(); Renderer renderer = this.GetComponent<Renderer>(); if (renderer != null) { this.initialColor = renderer.material.color; } }