Пример #1
0
 public void SendGetDamageEvent(SkillEffect skill, CharacterControl enemy)
 {
     if (OnDamage != null)
     {
         OnDamage(skill, enemy);
     }
 }
        public void Dead(SkillEffect skill)
        {
            //TurnOnRagdoll ();
            int randomIndex = Random.Range(0, 2) + 1;

            if (isPlayerControl)
            {
                this.Animator.Play("Frank_Dead" + randomIndex.ToString(), 0, 0f);
            }
            else
            {
                if (this.CharacterData.IsGrappled && ((DirectDamage)skill).Type == GrapplerType.DownStab)
                {
                    this.Animator.Play("Ybot_Dead_Executed", 0, 0f);
                }
                else
                {
                    this.Animator.Play("Ybot_Dead" + randomIndex.ToString(), 0, 0f);
                }
            }
            this.CharacterData.Dead(this);
            data.IsDead = true;

            gameObject.layer = LayerMask.NameToLayer("Default");

            AIProgress agent = GetComponent <AIProgress> ();

            if (agent != null)
            {
                agent.Dead();
                AIAgentManager.Instance.TotalAIAgent.Remove(agent);
            }
        }
        public void TakeStun(float stun, SkillEffect skill)
        {
            this.CharacterData.Armour -= stun;
            //if (hitReactionTime > 0f && this.CharacterData.GetHitTime < hitReactionTime && !this.CharacterData.IsSuperArmour && !this.CharacterData.IsDead)
            //   this.CharacterData.GetHitTime = hitReactionTime;

            TurnOffArmourRegen(this.CharacterData.ArmourRegenerationDelay);

            if (this.CharacterData.Armour <= 0 && !this.CharacterData.IsDead)
            {
                GetStunned();
            }
        }
        public void TakeEnergy(float energy, SkillEffect skill)
        {
            // assume already checked the energy amount

            /*
             * if (energy > this.CharacterData.Energy) {
             *  return;
             * }
             */
            if (energy > 0f)
            {
                TurnOffEnergyRegen(this.CharacterData.EnergyRegenerationDelay);
                this.CharacterData.TakeEnergy(energy);
            }
        }
        public void TakeDamage(float damage, float hitReactionTime, SkillEffect skill)
        {
            bool CanBeBlocked = (this.CharacterData.IsGuarding && this.CharacterData.BlockCount >= damage);

            if (!this.CharacterData.IsStunned && !this.CharacterData.IsSuperArmour && !this.CharacterData.IsDead && !CanBeBlocked)
            {
                if (hitReactionTime > 0f && this.CharacterData.GetHitTime < hitReactionTime)
                {
                    this.CharacterData.GetHitTime = hitReactionTime;
                }
                if (isPlayerControl)
                {
                    this.Animator.Play("HitReact4", 0, 0f);
                }
                else
                {
                    if (this.CharacterData.IsGrappled && ((DirectDamage)skill).Type == GrapplerType.DownStab)
                    {
                        this.Animator.Play("HitReact_Executed", 0, 0f);
                    }
                    else
                    {
                        int randomIndex = Random.Range(0, 3) + 1;
                        this.Animator.Play("HitReact" + randomIndex.ToString(), 0, 0f);
                    }
                    aiProgress.LastGetHitTime = Time.time;
                }
            }

            this.CharacterData.TakeDamage(damage);
            this.CharacterData.SendGetDamageEvent(skill, this);
            if (this.CharacterData.HP <= 0)
            {
                Dead(skill);
            }

            if (this.aiProgress != null)
            {
                this.aiProgress.UpdateFearState();
            }

            //TurnOffArmourRegen (this.CharacterData.ArmourRegenerationDelay);

            //this.CharacterData.OnDead (skill);
        }
 public void OnEnemyGetDamaged(SkillEffect skill, CharacterControl enemy)
 {
     //Debug.Log (skill.GetType ().ToString ());
     if (enemy.CharacterData.HP <= 0f)
     {
         this.CharacterData.CurrentEnergyUnitChargeToFull();
         if (skill.GetType().ToString() == "meleeDemo.DirectDamage")
         {
             this.CharacterData.GetEnergy(this.CharacterData.EnergyGetOnEnemyDeathByExecute);
         }
         else if (skill.GetType().ToString() == "meleeDemo.Attack")
         {
             if (((Attack)skill).IsLethalToStunnedEnemy)
             {
                 this.CharacterData.GetEnergy(this.CharacterData.EnergyGetOnEnemyDeathByExecute);
             }
         }
     }
     else
     {
         if (skill.GetType().ToString() == "meleeDemo.DirectDamage")
         {
             float EnergyGet = ((DirectDamage)skill).EnergyGetWhenHit;
             if (EnergyGet > 0)
             {
                 this.CharacterData.GetEnergyToMaxOneUnit(EnergyGet);
             }
         }
         else if (skill.GetType().ToString() == "meleeDemo.Attack")
         {
             float EnergyGet = ((Attack)skill).EnergyGetWhenHit;
             if (EnergyGet > 0)
             {
                 this.CharacterData.GetEnergyToMaxOneUnit(EnergyGet);
             }
             this.SetFormerTarget(enemy, 1f);
         }
     }
 }