using System; using System.Collections.Generic; [Serializable] public class DamageModifyer { public List requiredTags = new List(); public float damageAdded; public float damageMultiplyer = 1f; public bool AppliesTo(TaggedObject _taggedObject) { for (int i = 0; i < requiredTags.Count; i++) { if (!_taggedObject.Tags.Contains(requiredTags[i])) { return false; } } return true; } public static float CalculateDamageOnTarget(TaggedObject _taggedObject, List _damageModifyers, float _finalDamageMultiplyer = 1f) { float num = 0f; for (int i = 0; i < _damageModifyers.Count; i++) { DamageModifyer damageModifyer = _damageModifyers[i]; if (damageModifyer.AppliesTo(_taggedObject)) { num += damageModifyer.damageAdded; num *= damageModifyer.damageMultiplyer; } } return num * _finalDamageMultiplyer; } }