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); } } }