/// <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 } }); }
/// <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; } }
/// <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; } }
/// <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; } }
/// <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); }
/// <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); }