private void HealthContainer_OnReceiveDamage(object sender, OnHealthChangedArgs e) { //if (!audioSources[23].isPlaying && !audioSources[24].isPlaying && !audioSources[25].isPlaying && !audioSources[26].isPlaying) //{ // System.Random rand = new System.Random(); // audioSources[rand.Next(23,27)].Play(); //} }
public virtual void Heal(GameObject healer, float addHealth, GameObject statusEffect) { OnHealthChangedArgs args = new OnHealthChangedArgs(healer, addHealth); if (OnReceiveHealth != null) { OnReceiveHealth(this, args); } if (!args.Cancel) { health += args.ChangeValue; if (health > maxHealth) { health = maxHealth; } } }
private void HealthContainer_OnReceiveHealth(object sender, OnHealthChangedArgs e) { //Stun, slow, gift }
public virtual void DoDamage(GameObject attacker, float damage, GameObject statusEffect) { if (!isImmortal) { OnHealthChangedArgs args = new OnHealthChangedArgs(attacker, damage); if (OnReceiveDamage != null) { OnReceiveDamage(this, args); } if (!args.Cancel && args.ChangeValue != 0) { if (statusEffect != null && gameObject != null) { GameObject tempStatusEffect = Instantiate(statusEffect, transform); if (tempStatusEffect != null) { StatusEffect statusScript = tempStatusEffect.GetComponent <StatusEffect>(); if (statusScript != null) { StatusEffectArgs statusArgs = new StatusEffectArgs(statusScript, tempStatusEffect); if (OnNewStatusEffect != null) { OnNewStatusEffect(this, statusArgs); } if (!statusArgs.Cancel) { statusScript.Activate(gameObject); } } } } List <GameObject> AvailablePlayer = new List <GameObject>(GameObject.FindGameObjectsWithTag("Player")); if (gameObject.tag == "Enemy") { health -= args.ChangeValue * (float)Math.Pow(groupDamage, (double)AvailablePlayer.Count); //TODO: Abhängig von Spieleranzahl } else { health -= args.ChangeValue; } if (health <= 0) { health = 0; if (OnDeath != null) { OnDeath(this, EventArgs.Empty); } if (audioSource != null && DeathSound != null) { audioSource.clip = DeathSound; audioSource.Play(); } } else { if (audioSource != null && DamageSound != null && !audioSource.isPlaying) { audioSource.clip = DamageSound; audioSource.Play(); } } } } }