internal float baseVSModifier(BasicAbility.ABILITY_AFFINITY affinity)
        {
            var temp = affinityEffects.Find(aff => aff.parent == affinity);

            if (temp != null)
            {
                return(temp.modifier);
            }
            else
            {
                return(AffinityCounter(affinity));
            }
        }
 internal bool Absorbs(BasicAbility.ABILITY_AFFINITY affinity)
 {
     if (affinityEffects.Count == 0)
     {
         return(false);
     }
     else
     {
         var effect = affinityEffects.Find(eff => eff.parent == affinity);
         if (effect == default(AffinityEffect))
         {
             return(false);
         }
         return(effect.bAbsorbs);
     }
 }
 internal bool IsStrongTo(BasicAbility.ABILITY_AFFINITY affinity)
 {
     if (affinityEffects.Count == 0)
     {
         return(false);
     }
     else
     {
         var effect = affinityEffects.Find(eff => eff.parent == affinity);
         if (effect == default(AffinityEffect))
         {
             return(false);
         }
         return(effect.bIsStrongAgainst);
     }
 }
 public AffinityEffect(BasicAbility.ABILITY_AFFINITY af)
 {
     parent = af;
 }
 internal void CheckAffinity(BaseCharacter bc)
 {
     parent       = bc;
     mainAffinity = parent.CCC.equippedClass.classAffinity;
 }
 internal void CheckAffinity()
 {
     mainAffinity = parent.CCC.equippedClass.classAffinity;
 }
        private float AffinityCounter(BasicAbility.ABILITY_AFFINITY affinity)
        {
            if (mainAffinity == affinity)
            {
                return(0.0f);
            }
            switch (affinity)
            {
            case BasicAbility.ABILITY_AFFINITY.None:
                return(1.0f);

            case BasicAbility.ABILITY_AFFINITY.Physical:
                return(1.0f);

            case BasicAbility.ABILITY_AFFINITY.Holy:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Darkness)
                {
                    return(2.0f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Darkness:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Holy)
                {
                    return(2.0f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Fire:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Nature)
                {
                    return(2.0f);
                }
                else if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Water)
                {
                    return(0.5f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Water:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Fire)
                {
                    return(2.0f);
                }
                else if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Nature)
                {
                    return(0.5f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Nature:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Water)
                {
                    return(2.0f);
                }
                else if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Fire)
                {
                    return(0.5f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Earth:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Fire)
                {
                    return(1.4f);
                }
                else
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Nature)
                {
                    return(1.4f);
                }
                else if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Water)
                {
                    return(0.4f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Wind:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Thunder)
                {
                    return(0.2f);
                }
                else if (mainAffinity != BasicAbility.ABILITY_AFFINITY.Holy && mainAffinity != BasicAbility.ABILITY_AFFINITY.Darkness)
                {
                    return(1.3f);
                }
                else
                {
                    return(1.0f);
                }

            case BasicAbility.ABILITY_AFFINITY.Thunder:
                if (mainAffinity == BasicAbility.ABILITY_AFFINITY.Wind)
                {
                    return(0.2f);
                }
                else if (mainAffinity != BasicAbility.ABILITY_AFFINITY.Holy && mainAffinity != BasicAbility.ABILITY_AFFINITY.Darkness)
                {
                    return(1.3f);
                }
                else
                {
                    return(1.0f);
                }

            default:
                break;
            }

            return(1.0f);
        }