public void AddResilience(DamageType damage, DamageResilience newRes) { var curRes = CheckVulnerability(damage); if (curRes != newRes && GetResiliencePriority(curRes, newRes) == newRes) { damageRelationships.Add(new DamageTypeReslience(damage, newRes)); } }
public DamageResilience CheckVulnerability(DamageType type) { DamageResilience ret = DamageResilience.NORMAL; var relationship = damageRelationships.FindAll(x => x.first == type); if (relationship == null) { return(DamageResilience.NORMAL); } foreach (var relItem in relationship) { ret = GetResiliencePriority(ret, relItem.second); } return(ret); }
DamageResilience GetResiliencePriority(DamageResilience a, DamageResilience b) { if (a == DamageResilience.REFLECT || b == DamageResilience.REFLECT) { return(DamageResilience.REFLECT); } if (a == DamageResilience.ABSORB || b == DamageResilience.ABSORB) { return(DamageResilience.ABSORB); } if (a == DamageResilience.IMMUNE || b == DamageResilience.IMMUNE) { return(DamageResilience.IMMUNE); } if (a == DamageResilience.RESIST || b == DamageResilience.RESIST) { return(DamageResilience.RESIST); } if (a == DamageResilience.WEAK || b == DamageResilience.WEAK) { return(DamageResilience.WEAK); } return(DamageResilience.NORMAL); }