/// <summary> /// Get all entities in combat with the relationship as alignment to the reference entity. /// </summary> /// <param name="entity">The reference entity</param> /// <param name="alignment">Relationship with the required entity</param> /// <param name="targetSelf">Can target itself?</param> /// <param name="canTargetUntargetable">Can target untargetable targets?</param> /// <returns></returns> List <HealthEntityCombatObject> GetEntitiesWithRelationTo(HealthEntityCombatObject entity, TargetingData_Base.TargetAlignment alignment, bool targetSelf = false, bool canTargetUntargetable = false, bool canTargetDead = false) { List <HealthEntityCombatObject> entities = new List <HealthEntityCombatObject>(); foreach (var e in AllEntities) { switch (alignment) { case TargetingData_Base.TargetAlignment.Both: if (ValidTarget(entity, canTargetUntargetable, canTargetDead)) { entities.Add(e); } break; default: if (e.GetFaction(alignment) == entity.alignment && (targetSelf && e == entity || e != entity) && ValidTarget(entity, canTargetUntargetable, canTargetDead)) { entities.Add(e); } break; } } return(entities); }
public HealthEntity.Alignment GetFaction(TargetingData_Base.TargetAlignment alignment) { return(Entity.alignment == HealthEntity.Alignment.Good ? (alignment == TargetingData_Base.TargetAlignment.Friendly ? HealthEntity.Alignment.Good : HealthEntity.Alignment.Evil) : (alignment == TargetingData_Base.TargetAlignment.Friendly ? HealthEntity.Alignment.Evil : HealthEntity.Alignment.Good)); }