예제 #1
0
    public IEnumerator Skill_200022_Co(characterActionData battleInfo)
    {
        BattleManager.Inst.character[battleInfo.my_position].GetComponent <BasicAttack>().Attack(battleInfo);
        yield return(new WaitForSeconds(BattleManager.Inst.charInfo[battleInfo.my_position].AttackDelay + 1.0f));

        TestSkillEffect(battleInfo.action_info_list[0].target_position);
    }
예제 #2
0
    public IEnumerator Skill_200016_Co(characterActionData battleInfo)
    {
        BattleManager.Inst.character[battleInfo.my_position].GetComponent <BasicAttack>().Attack(battleInfo);
        yield return(new WaitForSeconds(BattleManager.Inst.charInfo[battleInfo.my_position].AttackDelay));

        Instantiate(effect["200016"], BattleManager.Inst.character[battleInfo.action_info_list[0].target_position].transform.position +
                    new Vector3(0, BattleManager.Inst.charInfo[battleInfo.action_info_list[0].target_position].Height * 0.5f, 0),
                    Quaternion.identity);
    }
예제 #3
0
    IEnumerator Skill_200007_Co(characterActionData battleInfo)
    {
        Transform attacker;
        Transform target;

        attacker = BattleManager.Inst.character[battleInfo.my_position].transform;
        target   = BattleManager.Inst.character[battleInfo.action_info_list[0].target_position].transform;

        attacker.transform.LookAt(target);

        BattleManager.Inst.animator[battleInfo.my_position].SetTrigger("isDoubleAttack");

        yield return(new WaitForSeconds(2.0f));

        StartCoroutine(Skill_200007_Co_Arrow(attacker, target));

        target = BattleManager.Inst.character[battleInfo.action_info_list[1].target_position].transform;

        attacker.transform.LookAt(target);

        yield return(new WaitForSeconds(0.2f));

        StartCoroutine(Skill_200007_Co_Arrow(attacker, target));

        BattleManager.Inst.animator[battleInfo.my_position].SetTrigger("isIdle");

        attacker.rotation = battleInfo.my_position < 10 ? Quaternion.Euler(0, 0, 0) : Quaternion.Euler(0, 180, 0);

        yield return(new WaitForSeconds(0.7f));

        DamageManager.Inst.DamageShow(battleInfo.action_info_list[0], false, (ELEMENT_TYPE)BattleManager.Inst.GetCharState(battleInfo.my_position).elementType);
        if (BattleManager.Inst.status[battleInfo.action_info_list[0].target_position].NowHp > 0)
        {
            BattleManager.Inst.animator[battleInfo.action_info_list[0].target_position].SetTrigger("isHit");
        }
        else
        {
            BattleManager.Inst.animator[battleInfo.action_info_list[0].target_position].SetTrigger("isDie");
            BattleManager.Inst.tumbAnimation.DieTumb(battleInfo.action_info_list[0].target_position);
        }
        yield return(new WaitForSeconds(0.2f));

        DamageManager.Inst.DamageShow(battleInfo.action_info_list[1], false, (ELEMENT_TYPE)BattleManager.Inst.GetCharState(battleInfo.my_position).elementType);
        if (BattleManager.Inst.status[battleInfo.action_info_list[1].target_position].NowHp > 0)
        {
            BattleManager.Inst.animator[battleInfo.action_info_list[1].target_position].SetTrigger("isHit");
        }
        else
        {
            BattleManager.Inst.animator[battleInfo.action_info_list[1].target_position].SetTrigger("isDie");
            BattleManager.Inst.tumbAnimation.DieTumb(battleInfo.action_info_list[1].target_position);
        }
        yield return(new WaitForSeconds(1.0f));

        BattleManager.Inst.isAfterDelay = true;
    }
예제 #4
0
    public IEnumerator Skill_200023_Co(characterActionData battleInfo)
    {
        yield return(new WaitForSeconds(0.3f));

        effect["Defence"].transform.position = BattleManager.Inst.character[battleInfo.my_position].transform.position;
        effect["Defence"].GetComponent <DefenceEffect>().EffectAction();

        yield return(new WaitForSeconds(3.0f));

        BattleManager.Inst.isAfterDelay = true;
    }
예제 #5
0
 public void Attack(characterActionData attackInfo, ELEMENT_TYPE type = ELEMENT_TYPE.None)
 {
     if (charInfo.AttackRange > 0.1f)
     {
         StartCoroutine(NearAttackAction(attackInfo, type));
     }
     else
     {
         StartCoroutine(FarAttackAction(attackInfo, type));
     }
 }
예제 #6
0
    public IEnumerator Skill_200024_Co(characterActionData battleInfo)
    {
        BattleManager.Inst.character[battleInfo.my_position].GetComponent <BasicAttack>().Attack(battleInfo);
        yield return(new WaitForSeconds(BattleManager.Inst.charInfo[battleInfo.my_position].AttackDelay + 1.0f));

        TestSkillEffect(battleInfo.action_info_list[0].target_position);
        if (battleInfo.action_info_list.Count == 2)
        {
            DamageManager.Inst.DamageShow(battleInfo.action_info_list[1], false, ELEMENT_TYPE.Fire);
            TestSkillEffect(battleInfo.action_info_list[1].target_position);
        }
    }
예제 #7
0
    public IEnumerator Skill_200005_Co(characterActionData battleInfo)
    {
        BattleManager.Inst.animator[battleInfo.my_position].SetTrigger("isHeal");

        yield return(new WaitForSeconds(0.5f));

        DamageManager.Inst.DamageShow(battleInfo.action_info_list[0], true, (ELEMENT_TYPE)BattleManager.Inst.GetCharState(battleInfo.my_position).elementType);
        Instantiate(effect["Heal"], BattleManager.Inst.character[battleInfo.action_info_list[0].target_position].transform.position +
                    new Vector3(0, BattleManager.Inst.charInfo[battleInfo.action_info_list[0].target_position].Height * 0.5f, 0),
                    Quaternion.identity);

        yield return(new WaitForSeconds(2.0f));

        BattleManager.Inst.isAfterDelay = true;
    }
예제 #8
0
    public IEnumerator Skill_200019_Co(characterActionData battleInfo)
    {
        yield return(new WaitForSeconds(BattleManager.Inst.charInfo[battleInfo.my_position].AttackDelay + 1.0f));

        for (int i = 0; i < battleInfo.action_info_list.Count; i++)
        {
            DamageManager.Inst.DamageShow(battleInfo.action_info_list[i], false, ELEMENT_TYPE.Fire);
            Instantiate(effect["200009"], BattleManager.Inst.character[battleInfo.action_info_list[i].target_position].transform.position +
                        new Vector3(0, BattleManager.Inst.charInfo[battleInfo.action_info_list[i].target_position].Height * 0.5f, 0),
                        Quaternion.identity);
        }

        yield return(new WaitForSeconds(2.0f));

        BattleManager.Inst.isAfterDelay = true;
    }
예제 #9
0
    IEnumerator FarAttackAction(characterActionData attackInfo, ELEMENT_TYPE type = ELEMENT_TYPE.None)
    {
        Transform attacker;
        Transform target;

        attacker = BattleManager.Inst.character[attackInfo.my_position].transform;
        target   = BattleManager.Inst.character[attackInfo.action_info_list[0].target_position].transform;

        attacker.transform.LookAt(target);

        ani.SetTrigger("isAttack");

        yield return(new WaitForSeconds(charInfo.AttackDelay));

        StartCoroutine(ArrowShot(target.position));

        ani.SetTrigger("isIdle");

        attacker.rotation = attackInfo.my_position < 10 ? Quaternion.Euler(0, 0, 0) : Quaternion.Euler(0, 180, 0);

        yield return(new WaitForSeconds(charInfo.AttackAfterDelay));

        DamageManager.Inst.DamageShow(attackInfo.action_info_list[0], false, type == ELEMENT_TYPE.None ? (ELEMENT_TYPE)BattleManager.Inst.GetCharState(attackInfo.my_position).elementType : type);

        if (BattleManager.Inst.status[attackInfo.action_info_list[0].target_position].NowHp > 0)
        {
            BattleManager.Inst.animator[attackInfo.action_info_list[0].target_position].SetTrigger("isHit");
        }
        else
        {
            BattleManager.Inst.animator[attackInfo.action_info_list[0].target_position].SetTrigger("isDie");
            BattleManager.Inst.tumbAnimation.DieTumb(attackInfo.action_info_list[0].target_position);
        }
        yield return(new WaitForSeconds(1.0f));

        BattleManager.Inst.isAfterDelay = true;
    }
예제 #10
0
    IEnumerator NearAttackAction(characterActionData attackInfo, ELEMENT_TYPE type = ELEMENT_TYPE.None)
    {
        Transform attacker         = BattleManager.Inst.character[attackInfo.my_position].transform;
        Transform target           = BattleManager.Inst.character[attackInfo.action_info_list[0].target_position].transform;
        Vector3   attackerStartPos = attacker.position;
        Vector3   attackerEndPos   = target.position;

        yield return(StartCoroutine(AttackMove(attacker, target, attackerStartPos, attackerEndPos - (attackerEndPos - attackerStartPos).normalized * charInfo.AttackRange)));

        attackerEndPos   = attackerStartPos;
        attackerStartPos = attacker.position;

        yield return(new WaitForSeconds(charInfo.AttackDelay));

        DamageManager.Inst.DamageShow(attackInfo.action_info_list[0], false, type == ELEMENT_TYPE.None ? (ELEMENT_TYPE)BattleManager.Inst.GetCharState(attackInfo.my_position).elementType : type);
        SoundManager.Inst.SoundPlay(Random.Range(0, 5));

        if (BattleManager.Inst.status[attackInfo.action_info_list[0].target_position].NowHp > 0)
        {
            BattleManager.Inst.animator[attackInfo.action_info_list[0].target_position].SetTrigger("isHit");
        }
        else
        {
            BattleManager.Inst.animator[attackInfo.action_info_list[0].target_position].SetTrigger("isDie");
            BattleManager.Inst.tumbAnimation.DieTumb(attackInfo.action_info_list[0].target_position);
        }
        yield return(new WaitForSeconds(charInfo.AttackAfterDelay));

        yield return(AttackRecall(attacker, target, attackerEndPos, attackerStartPos));

        attacker.rotation = attackInfo.my_position < 10 ? Quaternion.Euler(0, 0, 0) : Quaternion.Euler(0, 180, 0);

        yield return(new WaitForSeconds(1.0f));

        BattleManager.Inst.isAfterDelay = true;
    }
예제 #11
0
 // 크리티컬 스트라이크 ( 적 1인에게 100% 확률로 치명타가 발생하는 물리 피해를 가합니다 )
 public void Skill_200004(characterActionData battleInfo)
 {
     StartCoroutine(Skill_200004_Co(battleInfo));
 }
예제 #12
0
 // 힐
 public void Skill_200005(characterActionData battleInfo)
 {
     StartCoroutine(Skill_200005_Co(battleInfo));
     //skillText.text = "힐";
 }