public void TakeDamage(float damage, DamageType type) { if (state == State.Alive) { if (type == immunity) { return; } if (onHit != null) { onHit.Invoke(damage); } health -= (damage / Mathf.Max(1f, resistance)); EndRegen(); if (health <= 0f) { Die(); hasKnockback = true; return; } else { StartCoroutine(HitAnimation()); if (type == DamageType.Explosions && canFallOver && onKnockedOver != null) { onKnockedOver.Invoke(); } } if (!smokes) { return; } if (smokeEffect == null) { if (healthPercentage <= 0.5f) { smokeEffect = EffectFollow.Create("SmokeEffect", smokeCenter); } } if (fireEffect == null) { if (healthPercentage <= 0.25f) { fireEffect = EffectFollow.Create("FireEffect", smokeCenter); } } } }
void StartRegen() { curRegenEffect = EffectFollow.Create("RegenEffect", transform); regening = true; }