public override void Do() { if (damageScript == null) { GetDamageScript(); } if (damageScript != null) { damageScript.DoDamage(null, damagePerSecond * Time.deltaTime); } }
private void DoDamage(GameObject victim, DamageAbleObject damageAbleObject, float damage, bool teamDamage) { HitEventArgs hitArgs = new HitEventArgs(damage * (DoTeamDamage ? TeamDamageMultiplicator : 1), attacker, victim, teamDamage, false); if (OnHit != null) { OnHit(this, hitArgs); } if (!hitArgs.Cancel && hitArgs.FinalDamage > 0) { damageAbleObject.DoDamage(attacker, hitArgs.FinalDamage, StatusEffect); } }
private void OnTriggerEnter(Collider other) { bool isTeam = false; if (owner != null) { isTeam = other.transform.CompareTag(owner.tag); } DamageAbleObject healthContainer = other.gameObject.GetComponent <DamageAbleObject>(); if (healthContainer != null) { float distance = Vector3.Distance(other.transform.position, transform.position); float rangeDamage = damage; if (UseDamageReduction) { rangeDamage = (damageReduction - (distance / radius)) * damage; if (rangeDamage <= 0) { return; } } if (isTeam) { rangeDamage *= teamDamageMultiplicator; } HitEventArgs hitArgs = new HitEventArgs(rangeDamage, owner, other.gameObject, isTeam, true); if (OnHit != null) { OnHit(this, hitArgs); } if (!hitArgs.Cancel && hitArgs.FinalDamage > 0) { healthContainer.DoDamage(owner, rangeDamage, StatusEffect); } exploded = true; } }