Example #1
0
    /// <summary>
    /// BattleManagerからBattleCharacterをセット
    /// </summary>

    /*
     * public void SetCharacter()
     * {
     *  DungeonManager dm = GetComponent<DungeonManager>();
     *  List<PlayerCharacter> playerList = dm.PlayerList;
     *  List<EnemyCharacter> enemyList = dm.EnemyList;
     *  foreach(PlayerCharacter player in playerList)
     *  {
     *      this.allyList.Add(player.GetComponent<BattleCharacter>());
     *      this.charaList.Add(player.GetComponent<BattleCharacter>());
     *  }
     *  foreach(EnemyCharacter enemy in enemyList)
     *  {
     *      this.enemyList.Add(enemy.GetComponent<BattleCharacter>());
     *      this.charaList.Add(enemy.GetComponent<BattleCharacter>());
     *  }
     * }*/

    /// <summary>
    /// 攻撃を集中しているキャラクターをリストの先頭から探索
    /// </summary>
    /// <param name="attractElement">集中しているか調べる属性</param>
    /// <param name="charaList">探索するキャラリスト</param>
    /// <returns>最初に見つかった集中させているキャラ(いなければnull)</returns>
    public BattleCharacter GetAttractingCharacter(E_Element attractElement, List <BattleCharacter> charaList) //charaListの先頭から検索していくため、sortされないlistを渡す必要がある
    {
        foreach (BattleCharacter bc in charaList)
        {
            if (bc.IsAlive && bc.IsAttracting(attractElement))
            {
                return(bc);
            }
        }
        return(null);
    }
Example #2
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 #3
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 #4
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 #5
0
 /// <summary>
 /// atkElement属性からpowerのダメージ(与ダメージ計算済)
 /// </summary>
 /// <param name="power">与ダメージの最終的な威力(atk * ToNormalAttackDamageRate)</param>
 /// <param name="atkElement">通常攻撃の属性(攻撃者の属性)</param>
 public void DamagedByNormalAttack(double power, E_Element atkElement) // power = atk * normalAttackRate * elementRate
 {
     if (IsNoDamaged(atkElement))
     {
         Debug.Log(CharaClass.CharaName + "に" + ElementClass.GetStringElement(atkElement) + "属性の攻撃が効かない");
         return;
     }
     else
     {
         if (IsDefending)
         {
             power *= 0.5 * PassiveFromDamageRateInDefending;
         }
         DecreaseHp(power * this.GetFromDamageRate(atkElement) * ElementClass.GetElementCompatibilityRate(atkElement, this.Element) * FromNormalAttackRate); // 威力*属性被ダメ減*属性相性*通常被ダメ
     }
 }
Example #6
0
    /// <summary>
    /// 辞書型でflag格納している変数を使ってsearchElementのflagを返す
    /// </summary>
    /// <param name="dic">属性ごとのflagが格納された検索元</param>
    /// <param name="searchElement">検索する属性</param>
    /// <returns></returns>
    public static bool GetFlagByElement(Dictionary <E_Element, bool> dic, E_Element searchElement)
    {
        if (IsFire(searchElement) && dic[E_Element.Fire] == true)
        {
            return(true);
        }
        if (IsAqua(searchElement) && dic[E_Element.Aqua] == true)
        {
            return(true);
        }
        if (IsTree(searchElement) && dic[E_Element.Tree] == true)
        {
            return(true);
        }

        return(false);
    }
Example #7
0
    /// <summary>
    /// 辞書型(属性ごとの倍率管理)の検索属性の倍率を返す
    /// </summary>
    /// <param name="dic">検索する辞書型パラメータ</param>
    /// <param name="searchElement">検索属性</param>
    /// <returns>その属性の倍率</returns>
    public static double GetRate(Dictionary <E_Element, double> dic, E_Element searchElement)
    {
        double rate = 1;

        if (IsFire(searchElement))
        {
            rate *= dic[E_Element.Fire];
        }
        if (IsAqua(searchElement))
        {
            rate *= dic[E_Element.Aqua];
        }
        if (IsTree(searchElement))
        {
            rate *= dic[E_Element.Tree];
        }
        return(rate);
    }
Example #8
0
    /// <summary>
    /// 辞書型(属性ごとターン管理)の検索属性のターン数を返す
    /// </summary>
    /// <param name="dic">検索する辞書型パラメータ</param>
    /// <param name="searchElement">検索属性</param>
    /// <returns>その属性のターン数</returns>
    public static int GetTurn(Dictionary <E_Element, int> dic, E_Element searchElement)
    {
        int turn = 0;

        if (IsFire(searchElement))
        {
            turn += dic[E_Element.Fire];
        }
        if (IsAqua(searchElement))
        {
            turn += dic[E_Element.Aqua];
        }
        if (IsTree(searchElement))
        {
            turn += dic[E_Element.Tree];
        }
        return(turn);
    }
Example #9
0
    /// <summary>
    /// 列挙型に対する各属性の文字列を返す
    /// </summary>
    /// <param name="element">検索する属性</param>
    /// <returns>属性の文字列</returns>
    public static string GetStringElement(E_Element element)
    {
        switch (element)
        {
        case E_Element.Fire: return("火");

        case E_Element.Aqua: return("水");

        case E_Element.Tree: return("木");

        case E_Element.FireAqua: return("火・水");

        case E_Element.AquaTree: return("水・木");

        case E_Element.TreeFire: return("木・火");

        case E_Element.FireAquaTree: return("全");

        case E_Element _: return("エラー");
        }
    }
Example #10
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);
    }
Example #11
0
 /// <summary>
 /// attackElementの属性を自身に集中しているかどうか
 /// </summary>
 /// <param name="attackElement">検索する属性</param>
 /// <returns>自身に集中しているか</returns>
 public bool IsAttracting(E_Element attackElement)
 {
     return((IsDefending && ElementClass.GetFlagByElement(PassiveAttractInDefending, attackElement)) || (ElementClass.GetTurn(this.attractingEffectTurn, attackElement) > 0));
 }
Example #12
0
 /// <summary>
 /// damageElementの属性を無効にしているかどうか
 /// </summary>
 /// <param name="damageElement">検索する属性</param>
 /// <returns>無効にしているかどうか</returns>
 public bool IsNoDamaged(E_Element damageElement)
 {
     return(ElementClass.GetTurn(this.noGetDamagedTurn, damageElement) > 0);
 }
Example #13
0
 public BuffEffect(E_Element element, double rate, int effectTurn)
 {
     this.Element = element; this.Rate = rate; this.EffectTurn = effectTurn;
 }
Example #14
0
 /// <summary>
 /// Activeな属性変化(すでにある場合は前回の効果は消える)
 /// </summary>
 /// <param name="element">変化後の属性</param>
 /// <param name="effectTurn">効果ターン</param>
 public void SetElementChanged(E_Element element, int effectTurn)
 {
     this.beforeSetBuffEffect.Add(new BuffEffectWithType(E_BattleActiveEffectType.属性変化, new BuffEffect(element, effectTurn)));
 }
Example #15
0
 /// <summary>
 /// Activeな攻撃集中効果付与
 /// </summary>
 /// <param name="element">集中する属性</param>
 /// <param name="effectTurn">効果ターン</param>
 public void AddAttractEffectTurn(E_Element element, int effectTurn)
 {
     this.beforeSetBuffEffect.Add(new BuffEffectWithType(E_BattleActiveEffectType.攻撃集中, new BuffEffect(element, effectTurn)));
 }
Example #16
0
 /// <summary>
 /// Activeな攻撃無効バフ付与
 /// </summary>
 /// <param name="element">どの属性からの攻撃を無効とするか</param>
 /// <param name="effectTurn">効果ターン</param>
 public void AddNoGetDamaged(E_Element element, int effectTurn)
 {
     this.beforeSetBuffEffect.Add(new BuffEffectWithType(E_BattleActiveEffectType.無敵付与, new BuffEffect(element, effectTurn)));
 }
Example #17
0
 /// <summary>
 /// Activeな被ダメージバフ付与
 /// </summary>
 /// <param name="element">どの属性に対する被ダメージバフか</param>
 /// <param name="rate">倍率</param>
 /// <param name="effectTurn">効果ターン</param>
 public void AddFromDamageRate(E_Element element, double rate, int effectTurn)
 {
     this.beforeSetBuffEffect.Add(new BuffEffectWithType(E_BattleActiveEffectType.被ダメージ増減バフ, new BuffEffect(element, rate, effectTurn)));
 }
Example #18
0
 public BuffEffect(E_Element element, int effectTurn)
 {
     this.Element = element; this.Rate = 0; this.EffectTurn = effectTurn;
 }
Example #19
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 #20
0
 public void SetParameter(double maxHp, double hp, double spd, double atk, E_Element element, int skillPoint)
 {
     this.MaxHp = maxHp; this.Hp = hp; this.Spd = spd; this.Atk = atk; this.Element = element; this.Sp = skillPoint;
 }
Example #21
0
 /// <summary>
 /// 全て考慮したToDamageRateの値を返す(複属性対応)
 /// </summary>
 /// <param name="attackElement">攻撃属性</param>
 /// <returns>倍率</returns>
 public double GetToDamageRate(E_Element attackElement)
 {
     return(ElementClass.GetRate(ToDamageRate, attackElement));
 }
Example #22
0
 public static bool IsTree(E_Element element)
 {
     return(element == E_Element.Tree || element == E_Element.AquaTree || element == E_Element.TreeFire || element == E_Element.FireAquaTree);
 }
Example #23
0
 /// <summary>
 /// 全て考慮したFromDamageRateの値を返す(複属性対応)
 /// </summary>
 /// <param name="damageElement">被ダメ属性</param>
 /// <returns>倍率</returns>
 public double GetFromDamageRate(E_Element damageElement)
 {
     return(ElementClass.GetRate(FromDamageRate, damageElement));
 }
Example #24
0
 public BattleCharacterCondition(double maxHp, double hp, double spd, double atk, E_Element element, int skillPoint)
 {
     this.MaxHp = maxHp; this.Hp = hp; this.Spd = spd; this.Atk = atk; this.Element = element; this.Sp = skillPoint;
 }