Example #1
0
    /// <summary>
    /// 各属性ダメージのPassiveとActiveを考慮した最終的な倍率を返す
    /// </summary>
    /// <param name="passive">PassiveEffect</param>
    /// <param name="activeList">ActiveEffect</param>
    /// <returns>3属性の最終的な倍率</returns>
    public Dictionary <E_Element, double> GetRate(Dictionary <E_Element, double> passive, List <BuffEffect> activeList) //各属性ダメージのpassiveとactiveを計算して返す
    {
        double fireRate = passive[E_Element.Fire], aquaRate = passive[E_Element.Aqua], treeRate = passive[E_Element.Tree];

        foreach (BuffEffect bf in activeList)
        {
            if (ElementClass.IsFire(bf.Element))
            {
                fireRate *= bf.Rate;
            }
            if (ElementClass.IsAqua(bf.Element))
            {
                aquaRate *= bf.Rate;
            }
            if (ElementClass.IsTree(bf.Element))
            {
                treeRate *= bf.Rate;
            }
        }

        return(new Dictionary <E_Element, double>()
        {
            { E_Element.Fire, fireRate }, { E_Element.Aqua, aquaRate }, { E_Element.Tree, treeRate }
        });
    }
Example #2
0
 /// <summary>
 /// 属性ごとにフラグを保持している辞書型変数へ、フラグ(true)追加
 /// </summary>
 /// <param name="dic">属性ごとにフラグ保持している辞書型変数</param>
 /// <param name="effectElement">効果対象属性</param>
 public static void SetTrueFlag(Dictionary <E_Element, bool> dic, E_Element effectElement)
 {
     if (ElementClass.IsFire(effectElement))
     {
         dic[E_Element.Fire] = true;
     }
     if (ElementClass.IsAqua(effectElement))
     {
         dic[E_Element.Aqua] = true;
     }
     if (ElementClass.IsTree(effectElement))
     {
         dic[E_Element.Tree] = true;
     }
 }
Example #3
0
 /// <summary>
 /// 属性ごとに倍率を保持している辞書型変数へ、倍率追加
 /// </summary>
 /// <param name="dic">属性ごとに倍率保持している辞書型変数</param>
 /// <param name="effectElement">効果対象属性</param>
 /// <param name="addRateValue">追加倍率</param>
 public static void AddRate(Dictionary <E_Element, double> dic, E_Element effectElement, double addRateValue)
 {
     if (ElementClass.IsFire(effectElement))
     {
         dic[E_Element.Fire] *= addRateValue;
     }
     if (ElementClass.IsAqua(effectElement))
     {
         dic[E_Element.Aqua] *= addRateValue;
     }
     if (ElementClass.IsTree(effectElement))
     {
         dic[E_Element.Tree] *= addRateValue;
     }
 }
Example #4
0
 /// <summary>
 /// 属性ごとにターンを保持している辞書型変数へ、ターン増加(ActiveEffect)
 /// </summary>
 /// <param name="dic">属性ごとにターン保持している辞書型変数</param>
 /// <param name="effectElement">効果対象属性</param>
 /// <param name="addTurnValue">増加ターン数</param>
 public static void AddTurn(Dictionary <E_Element, int> dic, E_Element effectElement, int addTurnValue)
 {
     if (ElementClass.IsFire(effectElement))
     {
         dic[E_Element.Fire] += addTurnValue;
     }
     if (ElementClass.IsAqua(effectElement))
     {
         dic[E_Element.Aqua] += addTurnValue;
     }
     if (ElementClass.IsTree(effectElement))
     {
         dic[E_Element.Tree] += addTurnValue;
     }
 }
Example #5
0
    /// <summary>
    /// PassiveEffect用の条件用保持パラメータ(Conditon)を利用した属性サーチ
    /// </summary>
    /// <param name="baseList">検索するキャラのリスト</param>
    /// <param name="searchElement">検索する属性</param>
    /// <returns>検索属性をもつキャラのリスト</returns>
    public static List <BattleCharacter> GetListInElementByCondition(List <BattleCharacter> baseList, E_Element searchElement)
    {
        List <BattleCharacter> list = new List <BattleCharacter>();

        foreach (BattleCharacter bc in baseList)
        {
            if (ElementClass.IsFire(searchElement) && ElementClass.IsFire(bc.Condition.Element))
            {
                list.Add(bc);
            }
            else if (ElementClass.IsAqua(searchElement) && ElementClass.IsAqua(bc.Condition.Element))
            {
                list.Add(bc);
            }
            else if (ElementClass.IsTree(searchElement) && ElementClass.IsTree(bc.Condition.Element))
            {
                list.Add(bc);
            }
        }
        return(list);
    }
Example #6
0
    /// <summary>
    /// 属性相性の倍率を返す(攻撃火、防御火・木ならば、倍率1.5倍)
    /// </summary>
    /// <param name="attackElement">攻撃属性</param>
    /// <param name="targetElement">防御属性</param>
    /// <returns>属性相性の倍率</returns>
    public static double GetElementCompatibilityRate(E_Element attackElement, E_Element targetElement)
    {
        double rate = 1.0;

        if (ElementClass.IsFire(attackElement))
        {
            if (ElementClass.IsAqua(targetElement))
            {
                rate /= 2;
            }
            if (ElementClass.IsTree(targetElement))
            {
                rate *= 2;
            }
        }
        if (ElementClass.IsAqua(attackElement))
        {
            if (ElementClass.IsFire(targetElement))
            {
                rate *= 2;
            }
            if (ElementClass.IsTree(targetElement))
            {
                rate /= 2;
            }
        }
        if (ElementClass.IsTree(attackElement))
        {
            if (ElementClass.IsFire(targetElement))
            {
                rate /= 2;
            }
            if (ElementClass.IsAqua(targetElement))
            {
                rate *= 2;
            }
        }
        return(rate);
    }