Beispiel #1
0
    /// <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));
 }