public override void SimulatePlayerFixedUpdate(Actor_Player actor) { if (damage.fAmount > 0.0f || damage.fPushAmount > 0.0f) // 0 means no attack { actor.fTimeSinceLastAttack += Core.GetPlayerDeltaTime(); if (actor.currentTarget == null || actor.currentTarget.minion.fCurrentHealth <= 0.0f || !actor.currentTarget.IsInMeleeZone()) { actor.currentTarget = null; // Find new target Actor_Enemy closestEnemy = Core.GetLevel().GetClosestEnemyToMeleeZone(); if (closestEnemy != null && closestEnemy.IsInMeleeZone()) { actor.currentTarget = closestEnemy; } else { // No valid target. } } int iSlot = actor.minion.slot == MinionSlot.MELEE_1 ? 0 : 1; Transform reticule = Core.GetLevel().instance.meleeTargets [iSlot]; Transform radius = Core.GetLevel().instance.meleeRadii [iSlot]; if (actor.currentTarget != null) { reticule.gameObject.SetActive(true); reticule.position = Vector3.Lerp(reticule.position, actor.currentTarget.transform.position + new Vector3(0.0f, 0.04f, 0.0f), Core.GetPlayerDeltaTime() * actor.minion.template.reticuleMoveSpeed * actor.GetAttackSpeedMultiplier()); float fRadius = damage.fRadius * actor.GetAttackRadiusMultiplier() * 2.0f; radius.localScale = new Vector3(fRadius, 1.0f, fRadius); if (TryToAttackEnemy(actor, actor.currentTarget)) { // We killed them actor.currentTarget = null; } } else { //reticule.gameObject.SetActive(false); } } }
public void EnemyDied(Actor_Enemy enemy) { foreach (Actor_Player player in playerActors) { if (player == null) { continue; } player.minion.template.TriggerBuff(BuffTrigger.ENEMY_DIED, null); if (player.minion.template.bDeathtoll) { player.minion.template.IncrementCombo(player); } if (enemy.IsInMeleeZone()) // Approximation { player.minion.template.TriggerBuff(BuffTrigger.ENEMY_DIED_TO_MELEE, null); } } enemyActors.Remove(enemy); aiNumKilledPerWave [enemy.iWave]++; }