Esempio n. 1
0
 IEnumerator SkillFreeze()
 {
     if (tag == "Chara")
     {
         if (BattleManager.I.lastTarget == null)
         {
             BattleManager.I.TargetEnemy.AddBuff(BUFF_FREEZE, 1, 3);
             BattleManager.I.TargetEnemy.AddBuff(BUFF_WAIT, 1, 1);
         }
         else
         {
             BattleManager.I.lastTarget.AddBuff(BUFF_FREEZE, 1, 3);
             BattleManager.I.lastTarget.AddBuff(BUFF_WAIT, 1, 1);
         }
     }
     else
     {
         StrAttack attack = CreateAttack();
         attack.pow       = 0;
         attack.target    = Chara.TARGET_SOLO;
         attack.type      = ATK_TYPE_SPECIAL;
         attack.buffID    = BUFF_FREEZE;
         attack.buffLevel = 1;
         attack.buffTurn  = 3;
         BattleManager.I.Attack(attack);
     }
     yield break;
 }
Esempio n. 2
0
    public IEnumerator CheckBuff()
    {
        Debug.Log(data.name + "CheckBuff");
        if (IsDead())
        {
            yield break;
        }
        charaButton.GetComponent <Image>().color = Color.white;
        Debug.Log(buffs.Count);
        for (int i = 0; i < buffs.Count; ++i)
        {
            StrBuffInfo buffInfo  = buffs[i];
            int         buffLevel = buffInfo.Level;
            buffInfo.Turn -= 1;
            int buffTurn = buffInfo.Turn;
            buffs[i] = buffInfo;
            Debug.Log(buffs[i].Turn);
            //Debug.Log( + "さんの" + buffInfo.ID + "バフ(LV:" + buffLevel + ") あと" + buffTurn);

            if (buffInfo.ID == BUFF_BLIZZARD)
            {
                StrAttack attack = CreateAttack();
                attack.pow    = 10 + buffInfo.Level * 5;
                attack.target = Chara.TARGET_ALL;
                attack.type   = ATK_TYPE_MAGIC;
                BattleManager.I.PopMana(tag, 0, 3, 0, 0, 0);
                BattleManager.I.Attack(attack);
                BattleManager.I.StartCoroutine("SkillMessage", "氷嵐");
                AddBuff(BUFF_WAIT, 1, 1);
                yield return(new WaitForSeconds(1));
            }

            if (buffInfo.ID == BUFF_REGENERATION)
            {
                Heal(buffLevel * 10, false);
                yield return(new WaitForSeconds(1));
            }

            if (buffInfo.ID == BUFF_POISON)
            {
                StrAttack attack = CreateAttack();
                attack.pow  = GetBuffLevel(BUFF_POISON) * 5;
                attack.type = ATK_TYPE_SPECIAL;
                Damage(attack);
                yield return(new WaitForSeconds(1));
            }

            if (buffTurn <= 0)
            {
                if (buffInfo.ID == BUFF_ROCK)
                {
                    AddBuff(BUFF_WAIT, 1, 2);
                    Sound.I.PlaySound("Heli");
                    yield return(new WaitForSeconds(1));
                }
            }
        }
        CureBuffAuto();
    }
Esempio n. 3
0
    IEnumerator SkillArrowRain()
    {
        StrAttack attack = CreateAttack();

        attack.pow    = 10;
        attack.target = Chara.TARGET_ALL;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 4
0
    IEnumerator SkillPunishment()
    {
        StrAttack attack = CreateAttack();

        attack.pow    = 70;
        attack.target = Chara.TARGET_ALL;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 5
0
    IEnumerator SkillIceBurn()
    {
        StrAttack attack = CreateAttack();

        attack.pow    = 15;
        attack.target = Chara.TARGET_SOLO;
        attack.type   = ATK_TYPE_MAGIC;
        BattleManager.I.Attack(attack);
        BattleManager.I.PopMana(tag, 0, 3, 0, 0, 0);
        yield break;
    }
Esempio n. 6
0
    IEnumerator SkillHomerun()
    {
        StrAttack attack = CreateAttack();

        attack.pow    = 80;
        attack.target = Chara.TARGET_SOLO;
        attack.type   = Chara.ATK_TYPE_NORMAL;
        AddBuff(BUFF_WAIT, 1, 3);
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 7
0
    /// <summary>
    /// 対象の防御力を下げる。効果は5回まで重複する

    /// </summary>
    IEnumerator SkillRockRain()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 10;
        attack.target    = Chara.TARGET_SOLO;
        attack.buffID    = BUFF_DEFENSE_DOWN;
        attack.buffLevel = 1;
        attack.buffTurn  = 3;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 8
0
    IEnumerator SkillPoison()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 10;
        attack.target    = Chara.TARGET_SOLO;
        attack.buffID    = BUFF_POISON;
        attack.buffLevel = 1;
        attack.buffTurn  = 5;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 9
0
    IEnumerator SkillRockBreath()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 10;
        attack.target    = Chara.TARGET_SOLO;
        attack.buffID    = BUFF_ROCK;
        attack.buffLevel = 1;
        attack.buffTurn  = 1;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 10
0
    IEnumerator SkillThrowNet()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 20;
        attack.target    = Chara.TARGET_SOLO;
        attack.type      = Chara.ATK_TYPE_NORMAL;
        attack.buffID    = BUFF_WAIT;
        attack.buffLevel = 1;
        attack.buffTurn  = 1;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 11
0
    IEnumerator SkillRasadom()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 30;
        attack.target    = Chara.TARGET_ALL;
        attack.type      = Chara.ATK_TYPE_MAGIC;
        attack.buffID    = BUFF_DEFENSE_DOWN;
        attack.buffLevel = 1;
        attack.buffTurn  = 5;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 12
0
    IEnumerator SkillBite()
    {
        StrAttack attack = CreateAttack();

        attack.pow    = 5;
        attack.target = Chara.TARGET_SOLO;
        for (int i = 0; i < 5; ++i)
        {
            BattleManager.I.Attack(attack);
            yield return(new WaitForSeconds(0.2f));
        }
        yield break;
    }
Esempio n. 13
0
    IEnumerator SkillHolyLight()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 0;
        attack.target    = Chara.TARGET_ALL;
        attack.targetTag = tag;
        attack.buffID    = BUFF_REGENERATION;
        attack.buffLevel = 1;
        attack.buffTurn  = 5;
        BattleManager.I.Attack(attack);
        yield break;
    }
Esempio n. 14
0
    IEnumerator SkillQuickArrow()
    {
        StrAttack attack = CreateAttack();

        attack.pow    = 10;
        attack.target = Chara.TARGET_SOLO;
        int yellowCnt = GetMyManaCnt(Mana.YELLOW);

        for (int i = 0; i < 2 + (yellowCnt / 10); ++i)
        {
            BattleManager.I.Attack(attack);
            yield return(new WaitForSeconds(0.5f));
        }
        yield break;
    }
Esempio n. 15
0
    IEnumerator SkillDark2()
    {
        StrAttack attack = CreateAttack();

        attack.pow       = 10;
        attack.target    = Chara.TARGET_RANDOM;
        attack.type      = Chara.ATK_TYPE_MAGIC;
        attack.buffID    = BUFF_DEFENSE_DOWN;
        attack.buffLevel = 1;
        attack.buffTurn  = 5;
        for (int i = 0; i < 2; ++i)
        {
            BattleManager.I.Attack(attack);
            yield return(new WaitForSeconds(0.4f));
        }
        yield break;
    }
Esempio n. 16
0
    public StrAttack CreateAttack()
    {
        StrAttack attack = new StrAttack();

        attack.from      = this;
        attack.pow       = data.attack;
        attack.type      = ATK_TYPE_NORMAL;
        attack.targetTag = GetEnemyTag();
        attack.target    = TARGET_SOLO;
        if (HasPassive(PSV_CRITICAL_ARROW) > 0)
        {
            int addAtk = (GetMyManaCnt(Mana.YELLOW) / 10) * 5;
            attack.pow += addAtk;
        }
        if (GetBuffLevel(BUFF_FULL_POWER) > 0)
        {
            attack.pow *= 1.0f + ((GetBuffLevel(BUFF_FULL_POWER)) * 0.3f);
        }
        return(attack);
    }
Esempio n. 17
0
    public void Damage(StrAttack attack)
    {
        if (IsDead())
        {
            return;
        }
        StartCoroutine("Flash");
        int armor = GetBuffLevel(BUFF_ARMOR);

        if (armor > 0 && attack.type == ATK_TYPE_NORMAL)
        {
            attack.pow -= armor * 5;
            StrAttack atk = CreateAttack();
            atk.pow  = armor * 5;
            atk.type = ATK_TYPE_SPECIAL;
            attack.from.Damage(atk);
        }
        if (GetBuffLevel(BUFF_CURSE) > 0 && attack.type != ATK_TYPE_SPECIAL)
        {
            StrAttack atk = CreateAttack();
            atk.pow  = attack.pow;
            atk.type = ATK_TYPE_SPECIAL;
            attack.from.Damage(atk);
        }
        if (GetBuffLevel(BUFF_FREEZE) > 0)
        {
            Sound.I.PlaySound("Magic");
            attack.pow = 0;
        }
        if (GetBuffLevel(BUFF_DEFENSE_DOWN) > 0)
        {
            float rate = 1.0f + GetBuffLevel(BUFF_DEFENSE_DOWN) * 0.2f;
            attack.pow = (int)((float)attack.pow * rate);
        }
        if (HasPassive(PSV_HOLY_ARMOR) > 0 && attack.pow > 0)
        {
            if (GetMyManaCnt(Mana.YELLOW) >= 1)
            {
                attack.pow -= 10;
                Sound.I.PlaySound("Magic");
                BattleManager.I.ConsumeMana(tag, 0, 0, 0, 1, 0);
            }
        }
        if (attack.type == ATK_TYPE_NORMAL)
        {
            Fighter defender = BattleManager.I.FindPassiveOwner(PSV_DEFENDER, tag);
            if (defender != null && defender != this)
            {
                StrAttack atk = attack;
                atk.pow    = (int)(atk.pow * 0.3f);
                atk.type   = ATK_TYPE_SPECIAL;
                atk.buffID = 0;
                defender.Damage(atk);
                attack.pow = (int)(attack.pow * 0.7f);
                //Debug.Log("→" + attack.pow);
            }
        }
        if (attack.pow < 0)
        {
            attack.pow = 0;
        }
        data.life -= (int)(Mathf.Round(attack.pow));
//        Debug.Log(attack.pow + "ダメージ");
        if (attack.pow > 0)
        {
            if (attack.type == ATK_TYPE_NORMAL)
            {
                Sound.I.PlaySound("Slash");
//                Debug.Log(attack.from.name);
            }
            else if (attack.type == ATK_TYPE_MAGIC)
            {
                Sound.I.PlaySound("Magic");
                //Debug.Log(attack.from.name);
            }
        }
//        Debug.Log(attack.buffID);
        lifeGauge.SetNowValue(data.life);
        if (attack.buffID > 0)
        {
            AddBuff(attack.buffID, attack.buffLevel, attack.buffTurn);
        }
        if (data.life <= 0)
        {
            Dead();
        }
    }