Example #1
0
    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);
            }
        }
    }
Example #2
0
 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]++;
 }