public override void ClearTarget() { base.ClearTarget(); healthController = null; meleeFighter = null; character = null; combateController = null; }
public override void InitTarget(Transform target) { base.InitTarget(target); if (target) { healthController = target.GetComponent <vIHealthController>(); _hadHealthController = this.healthController != null; meleeFighter = target.GetComponent <vIMeleeFighter>(); character = target.GetComponent <vICharacter>(); combateController = target.GetComponent <vIControlAICombat>(); } }
public virtual void TakeDamage(vDamage damage) { if (healthController == null && targetReceiver) { healthController = targetReceiver.GetComponent <vIHealthController>(); } else if (healthController == null) { healthController = GetComponentInParent <vIHealthController>(); } if (healthController != null) { var _damage = ApplyDamageModifiers(damage); healthController.TakeDamage(_damage); onReceiveDamage.Invoke(_damage); } }
public void OnReceiveAttack(vDamage damage, vIMeleeFighter attacker) { if (overrideReactionID) { damage.reaction_id = reactionID; } if (ragdoll && !ragdoll.iChar.isDead) { var _damage = new vDamage(damage); var value = (float)_damage.damageValue; _damage.damageValue = (int)(value * damageMultiplier); ragdoll.gameObject.ApplyDamage(_damage, attacker); onReceiveDamage.Invoke(_damage); } else { if (healthController == null) { healthController = GetComponentInParent <vIHealthController>(); } if (healthController != null) { var _damage = new vDamage(damage); var value = (float)_damage.damageValue; _damage.damageValue = (int)(value * damageMultiplier); try { healthController.gameObject.ApplyDamage(_damage, attacker); onReceiveDamage.Invoke(_damage); } catch { this.enabled = false; } } } }
public void OnReceiveAttack(vDamage damage, vIMeleeFighter attacker) { float multiplier = (useRandomValues && !fixedValues) ? Random.Range(minDamageMultiplier, maxDamageMultiplier) : (useRandomValues && fixedValues) ? randomChange ? maxDamageMultiplier : minDamageMultiplier : damageMultiplier; if (overrideReactionID) { if (useRandomValues && !fixedValues) { damage.reaction_id = Random.Range(minReactionID, maxReactionID); } else if (useRandomValues && fixedValues) { damage.reaction_id = randomChange ? maxReactionID : minReactionID; } else { damage.reaction_id = reactionID; } } if (ragdoll && !ragdoll.iChar.isDead) { var _damage = new vDamage(damage); var value = (float)_damage.damageValue; _damage.damageValue = (int)(value * multiplier); if (multiplier == maxDamageMultiplier) { OnGetMaxValue.Invoke(); } ragdoll.gameObject.ApplyDamage(_damage, attacker); onReceiveDamage.Invoke(_damage); } else { if (healthController == null && targetReceiver) { healthController = targetReceiver.GetComponent <vIHealthController>(); } else if (healthController == null) { healthController = GetComponentInParent <vIHealthController>(); } if (healthController != null) { var _damage = new vDamage(damage); var value = (float)_damage.damageValue; _damage.damageValue = (int)(value * multiplier); if (multiplier == maxDamageMultiplier) { OnGetMaxValue.Invoke(); } try { healthController.gameObject.ApplyDamage(_damage, attacker); onReceiveDamage.Invoke(_damage); } catch { this.enabled = false; } } } }