Exemple #1
0
 public void OnAnimEvent(AnimEventID id)
 {
     if (id == AnimEventID.ShamanAttackEnd)
     {
         if (ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Fast)
         {
             if (base.transform.position.Distance(this.m_Player.transform.position) <= this.m_Agent.stoppingDistance)
             {
                 this.SetState(Shaman.State.Attack);
                 return;
             }
             this.SetState(Shaman.State.MoveToPlayer);
             return;
         }
         else if (ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Slow)
         {
             if (this.m_AttacksCount == 0 && base.transform.position.Distance(this.m_Player.transform.position) <= this.m_Agent.stoppingDistance && UnityEngine.Random.Range(0f, 1f) > this.m_DoubleAttackChance)
             {
                 this.SetState(Shaman.State.Attack);
                 this.m_AttacksCount++;
                 return;
             }
             this.SetState(Shaman.State.Idle);
             this.m_AttacksCount = 0;
             return;
         }
     }
     else if (id == AnimEventID.ShamanDamage)
     {
         this.TryGiveDamage();
     }
 }
Exemple #2
0
        private void OnEnterState()
        {
            this.m_EnterStateTime = Time.time;
            switch (this.m_State)
            {
            case Shaman.State.MoveToPlayer:
                this.m_Animator.SetTrigger(this.m_MoveHash);
                this.m_Agent.speed = this.m_MoveSpeed;
                return;

            case Shaman.State.Attack:
                this.m_Animator.SetTrigger((ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Slow) ? this.m_AttackHash : this.m_AttackFastHash);
                this.m_Agent.speed = this.m_MoveSpeed;
                return;

            case Shaman.State.Idle:
                this.m_Animator.SetTrigger(this.m_IdleHash);
                return;

            case Shaman.State.Spawn:
                this.m_Animator.SetTrigger(this.m_IdleHash);
                return;

            default:
                return;
            }
        }
Exemple #3
0
 public override bool TakeDamage(DamageInfo info)
 {
     base.TakeDamage(info);
     UnityEngine.Object.Destroy(base.gameObject);
     ShamanManager.Get().OnKillShaman();
     return(true);
 }
Exemple #4
0
 private bool ShouldSetupDestination()
 {
     if (ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Slow)
     {
         return(this.m_State == Shaman.State.MoveToPlayer && this.m_Agent.destination.Distance(this.m_Player.transform.position) > 0.2f);
     }
     return(this.m_Agent.destination.Distance(this.m_Player.transform.position) > 0.2f);
 }
Exemple #5
0
 private void UpdateMoveSpeed()
 {
     if (ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Slow)
     {
         this.m_Animator.SetFloat(this.m_MoveSpeedHash, (this.m_State == Shaman.State.MoveToPlayer) ? this.m_Agent.velocity.magnitude : 0f);
         return;
     }
     this.m_Animator.SetFloat(this.m_MoveSpeedHash, this.m_Agent.velocity.magnitude);
 }
Exemple #6
0
        private void UpdateState()
        {
            switch (this.m_State)
            {
            case Shaman.State.MoveToPlayer:
                if (this.ShouldSetupDestination())
                {
                    this.SetupDestination();
                }
                if (base.transform.position.Distance(this.m_Player.transform.position) <= this.m_Agent.stoppingDistance)
                {
                    this.SetState(Shaman.State.Attack);
                    return;
                }
                break;

            case Shaman.State.Attack:
                if (this.ShouldSetupDestination())
                {
                    this.SetupDestination();
                    return;
                }
                break;

            case Shaman.State.Idle:
                if (ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Fast && Time.time - this.m_EnterStateTime >= 0.5f && base.transform.position.Distance(this.m_Player.transform.position) > this.m_Agent.stoppingDistance + 1f)
                {
                    this.SetState(Shaman.State.MoveToPlayer);
                    return;
                }
                if (Time.time - this.m_EnterStateTime >= 2f)
                {
                    if (base.transform.position.Distance(this.m_Player.transform.position) <= this.m_Agent.stoppingDistance)
                    {
                        this.SetState(Shaman.State.Attack);
                        return;
                    }
                    this.SetState(Shaman.State.MoveToPlayer);
                    return;
                }
                break;

            case Shaman.State.Spawn:
                if (Time.time - this.m_EnterStateTime >= 1f)
                {
                    this.SetState(Shaman.State.MoveToPlayer);
                }
                break;

            default:
                return;
            }
        }
Exemple #7
0
        private void TryGiveDamage()
        {
            if (base.transform.position.Distance(this.m_Player.transform.position) > this.m_Agent.stoppingDistance)
            {
                return;
            }
            DamageInfo damageInfo = new DamageInfo();

            damageInfo.m_Damager = base.gameObject;
            damageInfo.m_Damage  = ((ShamanManager.Get().m_AttackVersion == ShamanManager.AttackVersion.Fast) ? 5f : 20f);
            this.m_Player.TakeDamage(damageInfo);
            CJDebug.Log("TryGiveDamage");
        }